leg*_*ggo 14 android kotlin dagger-2
我是新手使用Kotlin并试图用Dagger2设置它,我已经看到了一些例子,但它们似乎都不适合我.
我一直这样
错误:任务':app:kaptDebugKotlin'的执行失败.
内部编译器错误.有关详细信息,请参阅日志
我有我的build.gradle(模块:app)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.exampleapp"
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
kapt {
generateStubs = true
}
dexOptions {
javaMaxHeapSize "2048M"
}
}
ext {
supportLibVer = '25.0.0'
daggerVer = '2.8'
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// Support lib
compile "com.android.support:appcompat-v7:${supportLibVer}"
kapt "com.google.dagger:dagger-compiler:${daggerVer}"
compile "com.google.dagger:dagger:${daggerVer}"
provided "javax.annotation:jsr250-api:${javaxVer}"
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}
repositories {
mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)
小智 27
就我而言,我替换了这个
implementation 'com.google.dagger:dagger:2.27'
kapt 'com.google.dagger:dagger-compiler:2.27'
Run Code Online (Sandbox Code Playgroud)
经过
implementation 'com.google.dagger:dagger:2.27'
annotationProcessor "com.google.dagger:dagger-compiler:2.27"
Run Code Online (Sandbox Code Playgroud)
并解决了问题
小智 21
使用./gradlew clean build命令运行应用程序以查看代码的确切错误.只需将其粘贴到Android Studio中的终端即可.
Wil*_*ute 20
如果您正在使用 Room 数据库并收到 KAPT 错误,请检查您的
这是由于 Room 的注释使用不当引起的问题。有关更多信息,请使用您的构建日志。
Gia*_*men 14
我遇到了这个问题一段时间。阅读构建选项卡对我帮助很大,因为它给出了库失败的原因。
这是选项卡
我遇到了很多问题,
1.我没有将我创建的新实体添加到@Database注解中
2.我没有在我的界面中添加@Dao注解
3.我没有更新一些写入的变量名称一个@Query 注释
所以我不得不逐个解决问题,最后它可以稍后运行。此外,我正在清理我的项目并重建以确保代码不会卡住。同时关闭并打开 Android Studio。
此外,您可以检查此答案以帮助您找到错误enable more log on error
Jat*_*eva 10
我遇到这个问题有一段时间了。我的错误是使用带有 @Inject 字段的私有访问说明符。
如果您使用 Dagger,则检查 @Inject 私有字段或了解确切原因,将其添加为命令行选项:
--stacktrace --info --scan
Run Code Online (Sandbox Code Playgroud)
在 Mac 上,转到Android Studio > 首选项 > 构建、执行、部署 > 编译器
在 Windows 上,转到文件 > 设置 > 构建、执行、部署 > 编译器
就我而言,我忘记将房间数据库实体添加到数据库中
@Database(version = 1,
entities = [DummyEntity::class]
)
Run Code Online (Sandbox Code Playgroud)
如果您使用 Hilt 和字段注入,则从字段注入对象中删除私有,这对我有用
@Inject
private lateinit var helper: Helper
Run Code Online (Sandbox Code Playgroud)
到
@Inject
lateinit var helper: Helper
Run Code Online (Sandbox Code Playgroud)
小智 5
问题可以与 Room 和 Kotlin 1.4.10 连接。
尝试改变android.arch.persistence,以androidx.room对房间的依赖关系:
用
kapt "androidx.room:room-compiler:$roomVersion"
代替
kapt "android.arch.persistence.room:compiler:$roomVersion"
小智 5
我在设置 dagger2 时遇到了类似的问题。当我改变这一行时,终于解决了:
kapt "com.google.dagger:dagger-compiler:${daggerVer}"
Run Code Online (Sandbox Code Playgroud)
对此
annotationProcessor "com.google.dagger:dagger-compiler:${daggerVer}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12828 次 |
| 最近记录: |