2017-05-12 15 views
3

私は2つのモジュール、つまりAndroidライブラリ(com.android.library)とアプリケーションモジュール(com.android.application)であるコアモジュールを持つアプリケーションを構築しています。Androidライブラリ、Kotlin and Dagger2

JavaファイルをKotlinに変換した後、プロジェクトはコンパイルされず、生成されたDagger 2ファイルが見つからないというエラーが表示されます(未解決の参照)。しかし、現在の下で生成されたファイル:私は「何

...コア\ビルド\生成された\ソース\ kaptの\リリース{私の\コア\名前空間} \ DaggerBaseComponent.java


私は行方不明?


build.gradle(コアモジュール)

apply plugin: 'com.android.library' 
apply plugin: 'kotlin-android' 
apply plugin: 'kotlin-kapt' 
apply plugin: 'kotlin-android-extensions' 

... 

android { 
    ... 
    sourceSets { 
     main.java.srcDirs += 'src/main/kotlin' 
    } 
} 

dependencies { 
    ... 
    // Dagger. 
    kapt "com.google.dagger:dagger-compiler:2.10" 
    compile 'com.google.dagger:dagger:2.10' 
    provided 'javax.annotation:jsr250-api:1.0' 

    // Kotlin 
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 
} 


build.gradle(アプリケーションモジュール)

apply plugin: 'com.android.application' 
apply plugin: 'kotlin-android' 
apply plugin: 'kotlin-kapt' 
apply plugin: 'kotlin-android-extensions' 

... 

android { 
    sourceSets { 
     main.java.srcDirs += 'src/main/kotlin' 
    } 
} 

dependencies { 
    ... 
    // Dagger. 
    kapt "com.google.dagger:dagger-compiler:2.10" 
    compile 'com.google.dagger:dagger:2.10' 
    provided 'javax.annotation:jsr250-api:1.0' 

    // Kotlin 
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 
} 


build.gradle(プロジェクト)

buildscript { 
    ext.kotlin_version = '1.1.2-3' 
    ... 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.2' 

     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 
    } 
} 


(私のコアモジュールの)ApplicationContext.kt

class ApplicationContext : Application() { 
    var baseComponent: BaseComponent? = null 
     private set 

    override fun onCreate() { 
     super.onCreate() 

     initializeInjector() 
    } 

    private fun initializeInjector() { 
     // DaggerBaseComponent is and unresolved reference 
     baseComponent = DaggerBaseComponent.builder() 
       .appModule(AppModule(this)) 
       .endpointModule(EndpointModule()) 
       .build() 
    } 

    companion object { 

     operator fun get(context: Context): ApplicationContext { 
      return context.applicationContext as ApplicationContext 
     } 
    } 
} 

答えて

2

は問題はGradleのがkaptによってダガー生成されたファイルを見つけることはなかったということでしたので、私はsrc/main/kaptを追加することで問題を解決私のコアモジュール(lib)のsourceSet設定:

build.gradle(コアモジュール)その後


は、コア・モジュールは、そのダガー2生成されたファイルを見つけ始めました。

関連する問題