Android Studio への引っ越しトラブル ~ Manifest Merger編 ~

  • 2015年1月21日
  • by 
Android Studio への引っ越しトラブル ~ Manifest Merger編 ~

Android Studio がメジャーバージョンアップで焦って Eclipse+ADT から引っ越しした際の困った話です。

Manifest Merger編

今回の引っ越し対象となった Eclipse+ADT プロジェクト内容は、基本機能は同じで複数のアプリの開発していたプロジェクトです。

プロジェクト構成

  • メイン機能のライブラリプロジェクト
  • 各アプリケーションプロジェクト

Android Studio へ Eclipse+ADT プロジェクトの import を行いビルドした時に

Error:Execution failed for task ‘:MyApplication:processDebugManifest’. > Manifest merger failed with multiple errors, see logs

マニフェストの合併でエラーが発生。。。

Messages Gradle Build のすぐ上に解決策が記述されておりました。

Suggestion: add ‘tools:replace=”android:icon”‘ to element at AndroidManifest.xml:37:2 to override
Suggestion: add ‘tools:replace=”android:value”‘ to element at AndroidManifest.xml:62:3 to override

AndroidManifest.xml を上書きするには、

tools:replace=”android:icon” を <application> タグに加える。。。

Android StudioはGradleを採用しているのでAndroidManifest.xml が複数あった場合マージされるとの事。。。
これによっては競合が発生して今回のエラーみたいなものが起きます。

Eclipse+ADT の時はライブラリプロジェクトのAndroidManifest.xmlは無視されていたので先入観にやられました。

マージのみで競合が発生しないケース

異なる値と同じ属性を持っていない場合、問題なくマージされます。

競合するケース

異なる値と同じ属性を持っている場合、競合が発生します。
android:theme=”@android:style/Theme.Black.NoTitleBar”
android:theme=”@android:style/Theme.Black.NoTitleBar.Fullscreen”

AndroidManifest.xml の競合を解決するものもしっかりございまして。

Android Tools Project Site ~Manifest Merger~
http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger

に詳しく書いてありました。。。

本題の対応方法です。
(1) <manifest> タグに xmlns:tools=”http://schemas.android.com/tools” を追加する。

(2) Messages Gradle Build の所に出ていた対応方法を追加する。
・アプケーションプロジェクトのAndroidManifest.xml

Suggestion: add ‘tools:replace=”android:icon”‘ to element at AndroidManifest.xml:37:2 to override
Suggestion: add ‘tools:replace=”android:value”‘ to element at AndroidManifest.xml:62:3 to override
基本的な対応はこれで良いかと。
これからはこの辺りもしっかり考えていけないなと思ったこの頃です。

ちゃんと最新のものは追いかけないといけませんね。。。

Android Tools Project Site を見ていただければ詳しい対応方法などは記載されているのでお暇なときにでも見てみてください。

コメント