最近ダウンロードしたAndroid Studio バンブルビーそして、Android Studio Bumblebee と一緒に出荷されたバージョンである Android Gradle Plugin 7.1.0 にアップグレードするかどうかを親切に尋ねられました。
アップグレード後、ビルド エラーが発生します。
Unable to load class 'com.android.build.api.extension.AndroidComponentsExtension'.
This is an unexpected error. Please file a bug containing the idea.log file.
ファイルを見るとidea.log
、次のことがわかります。
A problem occurred evaluating project ':main'.
at org.gradle.initialization.exception.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:103)
...
Caused by: org.gradle.api.GradleScriptException: A problem occurred evaluating project ':main'.
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93)
...
Caused by: java.lang.NoClassDefFoundError: com/android/build/api/extension/AndroidComponentsExtension
at androidx.navigation.safeargs.gradle.SafeArgsPlugin.apply(SafeArgsPlugin.kt:73)
at androidx.navigation.safeargs.gradle.SafeArgsPlugin.apply(SafeArgsPlugin.kt:42)
...
Caused by: java.lang.ClassNotFoundException: com.android.build.api.extension.AndroidComponentsExtension
つまり、アプリを実行できず、再び動作させるには AGP 7.0 をダウングレードする必要があります。これを修正して Android Gradle Plugin 7.1.0 にアップグレードするにはどうすればよいですか?
ベストアンサー1
ナビゲーションセーフ引数の更新
注目すべき重要な行は次のとおりです。
Caused by: java.lang.NoClassDefFoundError: com/android/build/api/extension/AndroidComponentsExtension
at androidx.navigation.safeargs.gradle.SafeArgsPlugin.apply(SafeArgsPlugin.kt:73)
at androidx.navigation.safeargs.gradle.SafeArgsPlugin.apply(SafeArgsPlugin.kt:42)
これはエラーがナビゲーションセーフ引数プラグイン。
によるとAndroid Gradle プラグイン 7.1.0 リリースノート:
Navigation Safe Args Gradle プラグインが依存する AGP API は削除されました。AGP 7.1 は、Navigation Safe Args バージョン 2.4.0-rc1 または 2.4.0 では動作しません。ですが、バージョン2.5.0-alpha01および2.4.1でも動作します。その間、回避策として、Navigation Safe Args、Navigation 2.5.0-SNAPSHOTのスナップショットビルドでAGP 7.1を使用することができます。スナップショットビルドを使用するには、スナップショットの手順ビルド ID #8054565。
としてナビゲーション 2.4.1が利用可能になりました。Navigation のそのバージョンにアップグレードして修正を入手できます。
バックポート元ナビゲーション
2.5.0-alpha01
: Safe Args は Android Gradle プラグイン バージョン 7.0.4 に依存するようになりました。つまり、Navigation Safe Args は Android Studio バージョン 7.0 より前とは互換性がなくなりますが、Android Gradle プラグイン 7.1.0 以上とは互換性があります。
dependencies {
classpath 'com.android.tools.build:gradle:7.1.0'
// Update this line to use 2.4.1
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.1"
}
Safe Args プラグインと同じバージョンの Navigation ライブラリを常に使用する必要があることに注意してください (つまり、アプリでも Navigation 2.4.1 を使用する必要があります)。Navigation 2.4.1+ Safe Args プラグインを以前のバージョンの Navigation (2.3.5 など) で使用しないでください。
Firebase Perf プラグインに関する注意事項
以下の使用時にも同じエラーが表示される場合があることに注意してください。
classpath "com.google.firebase:perf-plugin:1.4.0"
の次の記述がありますidea.log
:
Caused by: java.lang.NoClassDefFoundError: com/android/build/api/extension/AndroidComponentsExtension
at com.google.firebase.perf.plugin.FirebasePerfClassVisitorFactory.registerForProject(FirebasePerfClassVisitorFactory.java:54)
at com.google.firebase.perf.plugin.FirebasePerfPlugin.perform(FirebasePerfPlugin.java:145)
at com.google.firebase.perf.plugin.FirebasePerfPlugin.lambda$apply$0(FirebasePerfPlugin.java:107)
によるとFirebase Perf プラグイン 1.4.1 リリースノート:
非推奨の Android Gradle プラグイン API から移行しました。
したがって、1.4.1 にアップグレードする必要があります。
classpath "com.google.firebase:perf-plugin:1.4.1"