Android库,Kotlin和Dagger2

Android库,Kotlin和Dagger2,第1张

概述我正在构建一个具有两个模块的应用程序:核心模块,即Android库(com.android.library)和应用程序模块(com.android.application).将Java文件转换为Kotlin之后,该项目无法编译,并给我一个错误,指出未找到生成的Dagger2文件(未解决的参考).但是,这些文件当前在以下位置生成:…core\b

我正在构建一个具有两个模块的应用程序:核心模块,即Android库(com.androID.library)和应用程序模块(com.androID.application).

将Java文件转换为Kotlin之后,该项目无法编译,并给我一个错误,指出未找到生成的Dagger 2文件(未解决的参考).但是,这些文件当前在以下位置生成:

@H_403_6@

…core\build\generated\source\kapt\release{my\core\namespace}\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        }    }}

解决方法:

问题是Gradle无法通过kapt找到Dagger生成的文件,因此我通过在核心模块(lib)的sourceSets配置中添加src / main / kapt来解决了这个问题:

build.gradle(核心模块)

androID {    ...    sourceSets {        main.java.srcDirs += ['src/main/kotlin', 'src/main/kapt']    }}

之后,Core模块开始查找其Dagger 2生成的文件.

总结

以上是内存溢出为你收集整理的Android库,Kotlin和Dagger2全部内容,希望文章能够帮你解决Android库,Kotlin和Dagger2所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1080478.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存