2016-04-08 6 views
2

JavaでAndroidアプリケーションを使用したいが、kotlinでは1つのライブラリモジュールが必要です。しかし、私の電話でアプリを実行しようとすると、私のKotlinクラスが見つからないというエラーが表示されます。これは私のkotlinクラスです:私のkotlinモジュールのJavaモジュールからkotlinモジュールを呼び出すことができません

package com.example.mylibrary 

    import android.util.Log 

    class A { 
     fun helloWorld(){ 
      Log.d("Kotlin", "Hello World!") 
     } 
    } 

とGradleのファイル:

apply plugin: 'com.android.library' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     minSdkVersion 11 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    sourceSets { 
     main.java.srcDirs += 'src/main/kotlin' 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.2.1' 
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 
} 
buildscript { 
    ext.kotlin_version = '0.6.+' 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 
    } 
} 
repositories { 
    mavenCentral() 
} 

はここに私の主な活動です:

package com.example.uisample; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

import com.example.mylibrary.A; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     A obj = new A(); 
     obj.helloWorld(); 

    } 

} 

お知らせどのようにアンドロイドスタジオ輸入com.example.mylibrary.Aの代わりcom.example.mylibrar.Aktとして参照は言う。 Androidスタジオはコンパイルする前にエラーを報告しません。アプリのための

Gradleではファイルが:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     applicationId "com.example.uisample" 
     minSdkVersion 11 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.2.1' 
    compile project(':mylibrary') 
} 

プロジェクトを実行した後、Gradleでは、このエラーがスローされます: "シンボルクラスAを見つけることができません"。私は間違って何をしていますか?

答えて

6

いくつかのこと:

  1. は、あなたのライブラリモジュールのbuild.gradleにkotlin-のAndroidプラグインを適用します(see the docs):

    apply plugin: 'kotlin-android' 
    

    それが今立っているように、あなたも語っていませんよKotlinファイルをコンパイルするためのgradle。

  2. あなたのbuildscriptブロックは、モジュールbuild.gradleではなく、トップレベルのbuild.gradleにあるはずです。

  3. Kotlin 1.0.1-2

  4. そのため
+0

感謝の完全リリースバージョンの更新を考えてみましょう!私は何かが足りないことを知っていた。 – Sloy

関連する問題