Android Gradle Plugin(AGP)8.13.0へ更新後、ライブラリモジュールのレイアウトからNavigation Graphを参照しているプロジェクトで、「AAPT: error: resource navigation/nav_graph not found」となりReleaseビルドが失敗する既知問題があります。Google Issue Tracker #443587266で報告され、AGP 9.0で修正済みです。
代表的なエラーログ
Execution failed for task ':module:verifyReleaseResources'.
> A failure occurred while executing
com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action
ERROR: .../merged_res/release/.../layout/activity_module.xml:13:
AAPT: error: resource navigation/nav_graph
(aka com.example.module:navigation/nav_graph) not found.
モジュール名、Variant名、XMLのパス、Navigation Graph名はプロジェクトごとに変わります。AGP 8.13.0への更新後、ライブラリモジュールのverify...Resourcesでだけ失敗する点が重要です。
原因
AGP 8.13.0のリグレッションにより、ライブラリモジュールのリソース検証時にNavigationリソースが正しく統合・解決されず、存在する@navigation/nav_graphをAAPTが見つけられない場合があります。XMLの名前が本当に間違っている場合と同じエラーになるため、ファイルの実在確認が先に必要です。
公式IssueではAGP 8.13.0で再現し、8.12.2へ戻すと成功すると報告されています。Googleの修正一覧ではAGP 9.0.0にIssue #443587266が掲載されています。
発生条件・対象バージョン
- AGP 8.13.0を使用している
- 複数モジュール構成でAndroid Libraryモジュールがある
- ライブラリのレイアウトXMLが
app:navGraph="@navigation/..."などでNavigation Graphを参照している verifyReleaseResourcesなどのライブラリリソース検証を実行する
推奨する解決手順
1. 通常のリソース指定ミスを除外する
module/src/main/res/navigation/nav_graph.xml
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host"
app:navGraph="@navigation/nav_graph" />
ファイル名は小文字とアンダースコアのみとし、参照元のSource Setと対象Variantにファイルが含まれるか確認します。別モジュールのprivateなリソースを誤参照していないかも確認してください。
2. AGP 9.0安定版以降へ更新する
// libs.versions.toml
[versions]
agp = "9.0.1"
AGP 9ではBuilt-in KotlinやDSLの変更もあるため、公式移行ガイドに従い、Gradle Wrapper、JDK、使用中のPluginも対応させます。
3. クリーンReleaseビルドで確認する
./gradlew --stop
./gradlew clean
./gradlew :module:verifyReleaseResources --stacktrace
./gradlew assembleRelease
代替策
AGP 9へすぐ移行できない場合は、公式Issueで成功例が示されているAGP 8.12.2へ一時的に戻す方法があります。依存関係とWrapperを固定し、CIでも同じ版を使ってください。
Issueでは、レイアウトXMLのapp:navGraphを外してNavController.setGraph(...)でプログラムから設定する回避策も報告されています。ただし画面初期化のタイミングやStart Destinationの引数に影響する可能性があるため、公式の恒久修正ではなく個別検証が必要な代替策として扱ってください。
確認方法
verifyReleaseResourcesが成功する- DebugとReleaseの両方でNavigation Graphが読み込まれる
- 開始画面、Deep Link、引数付き遷移が正常に動作する
- CIで同じAGP版を使用してRelease成果物を生成できる
注意点
AGP 8.13.0以外でも同じエラーが出る場合は、ファイル名の誤り、Source Setの配置、モジュール依存関係、Namespaceの違いを先に調べます。キャッシュ削除だけで実際の参照ミスは直りません。また、AGP 9への更新では他の互換性変更も同時に確認してください。
まとめ
AGP 8.13.0への更新後、ライブラリモジュールで存在するNavigation Graphが見つからない場合は、Issue #443587266の既知問題に該当する可能性があります。リソース指定を確認したうえでAGP 9.0以降へ更新し、移行が難しければAGP 8.12.2への一時的な切り戻しを検討してください。
