他の人のプロジェクトをインポートしたため、gradle のバージョン番号が変更され、プロジェクトが常にエラーを報告するようになりました。最後に情報を確認したところ、問題は ButterKnife にあることがわかりました。一部の人は NullPointerException を発生していました。私が遭遇したエラーは次のとおりでした。
グラドルのバージョン番号
クラスパス「com.android.tools.build:gradle:3.1.0」
解決策は次のとおりです。
- プロジェクトの build.gradle に次のコードを追加します。
buildscript {
repositories {
jcenter()
google()
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0'
classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-SNAPSHOT'
}
}
allprojects {
repositories {
jcenter()
google()
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
}
}
- 次のコードをモジュールの build.gradle に追加します。
apply plugin: 'com.android.library'
apply plugin:'com.jakewharton.butterknife'
android {
compileSdkVersion 25
buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 17
targetSdkVersion 25
versionCode 1
versionName "1.0"
//这是要添加的
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath = true
}
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}
- 次のコードをアプリの build.gradle に追加します。
依存関係を追加します。
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
注: モジュールとアプリにモジュールを追加します。特に継承関係がある場合、準拠と実装を混在させることはできません。