gpt4 book ai didi

Android 库、Kotlin 和 Dagger2

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:45 25 4
gpt4 key购买 nike

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

在我将 Java 文件转换为 Kotlin 后,项目没有编译,给我一个错误,说找不到生成的 Dagger 2 文件( Unresolved reference )。但是当前正在生成的那些文件:

...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 文件,所以我通过将 src/main/kapt 添加到我的 sourceSets 配置中解决了这个问题核心模块(lib):

build.gradle(核心模块)

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


之后,核心模块开始寻找他们的 Dagger 2 生成的文件。

关于Android 库、Kotlin 和 Dagger2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43943716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com