Android studio to 3.4 canary
をアップグレードしましたが、次のエラーが原因で正常にビルドできなくなりました。
The given artifact contains a string literal with a package reference 'Android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.
詳細:
Caused by: Java.lang.RuntimeException: Failed to transform '.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife-compiler/9.0.0-SNAPSHOT/732f93940c74cf32a7c5ddcc5ef66e53be052352/butterknife-compiler-9.0.0-SNAPSHOT.jar' using Jetifier. Reason: The given artifact contains a string literal with a package reference 'Android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.. (Run with --stacktrace for more details.)
明らかに、Butterknife, androidx and Jetifier
と関係がある
誰もこれを修正する方法を知っていますか?
ジェット機からバターナイフをブラックリストに登録してみてください:
gradle.properties file:
Android.jetifier.blacklist = butterknife.*\\.jar
AGPの3.3.0-rc1およびKotlin Gradleプラグインの1.3.0バージョンを使用する必要があります。
buildscript {
repositories {
...
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.3.0-rc01'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.0"
classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-rc2'
}
}
編集:
Butterknife 10.0.0ではAndroidXのサポートが追加されたため、ブラックリストに登録する代わりに更新するだけで十分です。
Butterkniveの依存関係の最後のバージョンを追加します。変更された場合はここで確認できます( https://github.com/JakeWharton/butterknife )。 androidXをサポートしています。次に、アプリビルドグラドルに移動し、古いバージョンを次のものに置き換えます。
dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}
Androidxの場合、依存関係をバージョン'10 .0.0 'にアップグレードするだけです
dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}
ドキュメントを探してください こちら
ButterKnifeを最新バージョンにアップグレードし、これらをbuild.gradle(app)に追加してください:
Android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
バターナイフを使用する場合、どのバージョンですか?最新バージョン9.0.0-rc2はandroidxをサポートしています。
UPD:バターナイフの github repo に問題がクローズされています。 一時的な回避策
Android.jetifier.blacklist = butterknife-compilerをgradle.propertiesファイルに追加します。
Butterknifeの最新バージョンを使用すると、問題は解決しました。 androidXをサポートするには、> = 9.0.0-rc2(Butterknife Version)を使用します。最新リリースについては、リンクを確認してください- https://github.com/JakeWharton/butterknife/releases