gpt4 book ai didi

android - 使用 'kotlin-kapt' 插件,Android Studio 不提供有关 Dagger 2 的特定错误

转载 作者:太空狗 更新时间:2023-10-29 16:11:37 25 4
gpt4 key购买 nike

我将 Kotlin 与 Dagger 2 一起使用。问题是,当我在实现 Dagger 时出错(例如,类构造器未使用 @Inject),IDE 不会具体显示错误所在。 Insead 编译器错误总是一样的:

Execution failed for task ':app:kaptDebugKotlin'.
Internal compiler error. See log for more details

故意错误的类(注释@Inject):

class LoginPresenter //@Inject
constructor(private val request: LoginRequest)

项目build.gradle文件:

buildscript {
ext.kotlin_version = '1.1.4-3'

repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

allprojects {
repositories {
jcenter()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

模块构建.gradle:

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

android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.example.kravets_a.kotlinanddagger"
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
...

compile 'com.google.dagger:dagger:2.10'
annotationProcessor 'com.google.dagger:dagger-compiler:2.10'
kapt "com.google.dagger:dagger-compiler:2.10"

compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}
repositories {
mavenCentral()
}

最佳答案

选项 1

使用 apply plugin: 'kotlin-kapt'。当错误发生时,您可以在 Android Studio 中看到它 => 在右下角 => 在 Gradle 控制台。

感谢 David Medenjak 的评论。

选项 2

apply plugin: 'kotlin-kapt' 替换为 kapt { generateStubs = true }

编译失败并出现预期结果:

[com.example.kravets_a.kotlinanddagger.logic.MainActivityComponent.inject(com.example.kotlinanddagger.MainActivity)] com.example.kotlinanddagger.logic.LoginPresenter cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method.

教程如this , thisthat表示可以使用 apply plugin: 'kotlin-kapt' 代替 kapt { generateStubs = true } 。但在那种情况下,Android Studio 不会提供具体的编译错误。

关于android - 使用 'kotlin-kapt' 插件,Android Studio 不提供有关 Dagger 2 的特定错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46156965/

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