古いUnityを利用したAndroidアプリビルドでAndroidManifest.xmlのマージに失敗する原因と対処方法¶
古いUnityでAndroidアプリをビルドをする際に、次のようなエラーによりAndroidManifest.xmlのマージに失敗することがあります。
CommandInvokationFailure: Unable to merge android manifests. See the Console for more details.
/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/java -Xmx2048M -Dcom.android.sdkmanager.toolsdir="/Users/john/Library/Android/sdk.old/tools" -Dfile.encoding=UTF8 -jar "/Applications/Unity5.4.5/PlaybackEngines/AndroidPlayer/Tools/sdktools.jar" -
stderr[
]
stdout[
[Temp/StagingArea/AndroidManifest-main.xml:25, /Users/john/sample/unity5/Temp/StagingArea/android-libraries/repro-android-sdk-2.7.9/AndroidManifest.xml:11] Skipping identical /manifest/application/receiver[@name=com.sample.notification.IntentHandler] element.
Warning: [Temp/StagingArea/AndroidManifest-main.xml:31, /Users/john/sample/unity5/Temp/StagingArea/android-libraries/repro-android-sdk-2.7.9/AndroidManifest.xml:3] Main manifest has <uses-sdk android:targetSdkVersion='25'> but library uses targetSdkVersion='26'
]
原因
Repro.unitypackage
に含まれるAARファイルのAndroidManifest.xmlでは、 uses-sdk
タグを使ってtargetSdkVersionを指定しています。通常はアプリのtargetSdkVersionが優先されますが、古いUnityではAARとアプリのtargetSdkVersionが異なる場合にビルドエラーが発生します。
注釈
AndroidManifest.xmlのマージエラーについて、詳しくは こちら をご覧ください。
この問題は、以下の対策が可能です。
対策
- Unity PackageをImportしたプロジェクトから、
Assets > Plugins > Android > libs
にあるAARファイルを削除 - repro-unity-sdkにある
removed-uses-sdk-aar
フォルダのAARファイルをAssets > Plugins > Android > libs
へコピー

この時、コピーしたAARファイルのAndroidManifest.xmlでは uses-sdk
タグが除外されているため、Android SDK Toolの機能により以下のパーミッションが追加されることがあります。
READ_PHONE_STATE
WRITE_EXTERNAL_STORAGE
READ_EXTERNAL_STORAGE
このうちアプリで使っていないパーミッションを除外したい場合は、アプリのAndroidManifest.xmlに以下の該当する uses-permission
タグを追加してください。
<application ...
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />
...
</application>
注釈
パーミッションが自動で追加される条件について、詳しくは こちら を参照してください。