And*_*rew 2 android kotlin dagger-2 kapt
我使用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)
Run Code Online (Sandbox Code Playgroud)
项目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
}
Run Code Online (Sandbox Code Playgroud)
模块build.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()
}
Run Code Online (Sandbox Code Playgroud)
选项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不能在没有@Inject构造函数或@ Provide-或@Produces的情况下提供注释方法.
像这样的教程,这个或那个说apply plugin: 'kotlin-kapt'可以用来代替kapt { generateStubs = true }.但在这种情况下,Android Studio不提供特定的编译错误.
| 归档时间: |
|
| 查看次数: |
4945 次 |
| 最近记录: |