Version: 2019.1
Android の Gradle
Android マニフェスト

Gradle のトラブルシューティング

古いシステムの代わりに、Gradle を使って Android プロジェクトをエクスポートしたばかりならば、ビルドエラーに遭遇するかもしれません。特に、Android ライブラリを追加して使用している場合や、カスタムの AndroidManifest.xml を加えた場合にエラーになる可能性があります。

Android Gradle プラグインは、古い ADT/Ant システムよりもはるかに詳細にこだわります。Android Gradle プラグインは、エラーと考えられるものはすべて受け付けません。例えば、複製のシンボルや、存在しないリソースへの参照などです。主要アプリケーションと同じ属性を設定するライブラリプロジェクトさえ、エラーになります。

問題を修正するには、主要なものでも、プロジェクトが使用するライブラリでも、 AndroidManifest.xml ファイルを編集することが必要です。

問題の原因が不明なプロジェクトや、後述のトラブルシューティングの部分で表示されない問題がある場合は、Build Settings から Gradle プロジェクトとしてプロジェクトをエクスポートして、コマンドラインでビルドします。コマンドラインでビルドすると、さらに詳細なエラーメッセージが表示され、より素早い修正ができます。

特定の問題

Resource not found resource-not-found

AndroidManifest.xml ファイルは、主要なものであってもライブラリのものでも、存在しないリソースを参照します。これは、ライブラリによって設定されたアプリケーションアイコンや、ラベルの文字列であることがしばしばです。これは、参照を削除せずに、主要マニフェストをライブラリプロジェクトにコピーすると発生します。

Android Manifest の 1 つ (通常はライブラリのマニフェスト) から属性を削除してください。

Duplicate files in APK [duplicate-files-in-apk] (APK に複製ファイルがあります)

主要アプリケーションとライブラリプロジェクト間や、2 つのライブラリプロジェクト間で、同じ名のファイルがあります。すべてのファイルが同じ APK パッケージにコピーされることに注意してください。

ファイルの 1 つを削除する必要があります。

Colliding package names colliding-package-names

ライブラリは、同じ Java パッケージを主要アプリケーションや、他のライブラリとして使用できません。

通常、ライブラリのパッケージ名を別のものに変更する必要があります。 コードが大量に含まれているライブラリの場合、(Player 設定で) メインパッケージ名を変更する方が簡単かもしれません。

Colliding attributes colliding-attributes

ライブラリは、主要な AndroidManifest.xml ファイルの属性を自由にオーバーライドすることはできません。しばしば、このエラーは、上記の Resource not found 問題と同様に、アプリケーションアイコンやラベル文字列を設定するライブラリによって発生します。

ライブラリから属性を削除するか tools:replace 属性を application タグに加えて、マージの競合の解決方法を示します。

Android の Gradle
Android マニフェスト