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 Settings で) 変更するほうが簡単な場合もあります。

Colliding attributes colliding-attributes

ライブラリでは、主要 AndroidManifest.xml からの属性を自由にオーバーライドすることができません。このエラーは、前述の Resource not found 問題同様、ライブラリがアプリケーションアイコンやラベルの文字列を設定することが原因です。

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

Android の Gradle
Android マニフェスト