指定されたアーティファクトには、安全に書き換えることができないパッケージ参照「android.support.v4.content」を持つ文字列リテラルが含まれています。androidx


99

私をアップグレード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

誰かがこれを修正する方法を知っていますか?


これを試しました:これは運がありません
Tnaffh 2018年

ブラックリストに追加しようとした正規表現は何ですか?
ホルヘギル

指定されたアーティファクトには、安全に書き換えることができないパッケージ参照「android.support.v4.widget」を持つ文字列リテラルが含まれています。注釈プロセッサなどのリフレクションを使用するライブラリは、androidxのサポートを追加するために手動で更新する必要があります。minifyenabledとshrinkresourcesをtrueに設定して署名済みAPKを作成しようとすると、上記のエラーが発生します。それ以外の場合は、エミュレータまたはデバイスでアプリケーションを実行できます。この問題を解決するには?
Arpit Rastogi

いい質問だ!とても参考になりました。ありがとう
Androider

回答:


149

新しい正解:

Butterknife 10.0.0はAndroidXのサポートを追加しました。

dependencies {
    implementation 'com.jakewharton:butterknife:10.0.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}

バターナイフの古い回答<10.0.0:

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'
    }
}

私はそれが機能しないことをテストしたので、あなたはandroid.jetifier.blacklist = butterknife。* \\。jarを追加しないと思います。クラスパス 'com.jakewharton:butterknife-gradle-plugin:9.0.0-rc2'のみを追加すると、デバッグ時に問題なく機能し、ファイルapkをエクスポートできます。
kimcy929 2018年

詳細については、こちらをご覧
ジュードフェルナンデス

1
この答えは正しいですが、stackoverflow.com / a / 54345816/371749 update butterknifeを10に更新すると、この問題がより適切に解決されます。
cV2

このソリューションはデバッグビルドでは問題なく機能しますが、署名付きリリースAPKを作成できません。指定されたアーティファクトには、安全に書き換えることができないパッケージ参照「android.support.v4.widget」を持つ文字列リテラルが含まれています。注釈プロセッサなどのリフレクションを使用するライブラリは、androidxのサポートを追加するために手動で更新する必要があります。
Arpit Rastogi

とても参考になりました。ありがとう
Androider

60

バターナイフの依存関係の最新バージョンを追加します。変更されている場合は、ここで確認できます(https://github.com/JakeWharton/butterknife)。androidXに対応しています。次に、アプリビルドgraddleに移動し、古いバージョンを次のように置き換えます。

dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}

27

androidxの場合、依存関係をバージョン「10.0.0」にアップグレードするだけです

dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}

ここでドキュメントを探します


クリック編集テキストボックスにnullポインターが表示されます。初期化されていません。
Vasudev Vyas

18

ButterKnifeを最新バージョンにアップグレードし、これらをbuild.gradle(app)に追加してください:

android {
...
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}

最善の解決策、アップグレード後にこのソリューションを検索した後->エラー:静的インターフェイスメソッドはAndroid N以降でのみサポートされています(--min-api 24):void butterknife.Unbinder.lambda $ static $ 0()
avisper

あなたがそれを作った男を愛して...私は検索の半日を無駄にしました、そしてこの答えが来ます。
Zeeshan Mehdi

1

バターナイフを使用している場合、どのバージョンですか?最新バージョン9.0.0-rc2はandroidxをサポートしています。

UPD:butterknifeのgithubリポジトリにクローズドな問題があります。一時的な回避策

android.jetifier.blacklist = butterknife-compilerをgradle.propertiesファイルに追加します。


私は9.0.0-RC2上だと私は正確に同じエラーを取得しています
ホルヘギル


1

私のプロジェクトはバターナイフを使用していませんが、同じエラーが発生しました「指定されたアーティファクトには、安全に書き換えることができないパッケージ参照「android.support.v4.widget」を持つ文字列リテラルが含まれています。注釈プロセッサなどのリフレクションを使用するライブラリは、 androidxのサポートを追加するために手動で更新します "これを解決するために私がしたこと:パーセルバージョンを更新

Gradleビルドファイル

交換:

annotationProcessor 'org.parceler:parceler:1.1.6'
implementation 'org.parceler:parceler-api:1.1.6'

と:

  annotationProcessor 'org.parceler:parceler:1.1.13'
  implementation 'org.parceler:parceler-api:1.1.13'

Gradleファイルコード Gradleファイルビュー


0

変化する

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">

または他のマテリアルテーマ。Android Studio 4.0.1で「アクティビティなし」で新しいプロジェクトを開始した後にこのエラーが発生しました


0

バターナイフを更新+キャッシュを無効化して再起動+バターナイフが使用されていない場合はグラドルを同期してキャッシュをクリアして再起動

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.