[解決済み] Android Gradle Plugin 7.1へのアップグレード後、AndroidComponentsExtensionクラスがロードされない
質問
最近ダウンロードした Android Studio Bumblebee をダウンロードしたところ、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 にアップグレードすればよいのでしょうか。
どのように解決するのですか。
ナビゲーションセーフの引数を更新する
これらの行は、見るべき重要なものです。
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)
これは、エラーの発生元が Navigation Safe Args プラグイン .
のように Android Gradle Plugin 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 が利用可能になったので、そのバージョンのナビゲーションにアップグレードすると、この修正が適用されます。
バックポート元 ナビゲーション
2.5.0-alpha01
: Safe Args は、Android Gradle Plugin バージョン 7.0.4 に依存するようになりました。これは、Navigation Safe Args が 7.0 より前の Android Studio バージョンと互換性がなくなり、Android Gradle Plugin 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"
}
Navigation ライブラリーは常に Safe Args プラグインと同じバージョンを使用する必要があることに注意してください (つまり、アプリは 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 Plugin 1.4.1 のリリースノートです。 :
非推奨のAndroid GradleプラグインAPIから移行しました。
そのため、1.4.1 にアップグレードする必要があります。
classpath "com.google.firebase:perf-plugin:1.4.1"
関連
-
[解決済み] エラーメッセージ "Android Gradle plugin requires Java 11 to run. 現在、Java 1.8を使用しています"
-
[解決済み】Android Gradleプラグインの現在のバージョンでは、オンデマンドの設定はサポートされていません。
-
[解決済み] Nexus 4でUSBデバッグモードを見つける方法とオンにする方法
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] Android ConstraintLayout - あるビューを別のビューの上に配置する
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] FABアイコンの色を設定する
-
[解決済み] 文字列リソースにHTML?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] BottomSheetDialogFragmentの状態をexpandedに設定する。
-
[解決済み] Androidでマイナスマージンを使用するのは悪いことですか?
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] アダプタからActivityメソッドを呼び出す
-
[解決済み] Android APKファイルの中身を見るには?
-
[解決済み] ViewPager2でスワイプを無効にするには?
-
[解決済み] Recyclerviewと異なるタイプの行のインフレーションの処理
-
[解決済み] HttpURLConnectionを使ったPOSTによるファイル送信