GoogleMobileAdsを入れてうまくAndroidビルドできなかった話
環境:
Unity2017.4.1f1
Google Mobile Ads Unity Plugin v3.13.1
空のプロジェクトにGoogleMobileAdsを入れてみたら、Androidでビルド時に下記のエラーがでた。
CommandInvokationFailure: Unable to merge android manifests.
/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/bin/java -Xmx2048M -Dcom.android.sdkmanager.toolsdir="/Users/ozawatetsuya/Library/Android/sdk/tools" -Dfile.encoding=UTF8 -jar "/Applications/Unity2017.4.1f1/PlaybackEngines/AndroidPlayer/Tools/sdktools.jar" -stderr[
]
stdout[
Warning: [Temp/StagingArea/AndroidManifest-main.xml:12, /Users/xxx/projects/AndroidBuildTest/Temp/StagingArea/android-libraries/GoogleMobileAdsPlugin/AndroidManifest.xml:2] Main manifest hasbut library uses targetSdkVersion='26'
Warning: [Temp/StagingArea/AndroidManifest-main.xml:12, /Users/xxx/projects/AndroidBuildTest/Temp/StagingArea/android-libraries/android.arch.lifecycle.runtime-1.0.0/AndroidManifest.xml:3] Main manifest hasbut library uses targetSdkVersion='26'
[Temp/StagingArea/AndroidManifest-main.xml, /Users/xxx/projects/AndroidBuildTest/Temp/StagingArea/android-libraries/com.android.support.support-core-ui-26.1.0/AndroidManifest.xml:6] Skipping identical /manifest/application/meta-data[@name=android.support.VERSION] element.
[Temp/StagingArea/AndroidManifest-main.xml, /Users/xxx/projects/AndroidBuildTest/Temp/StagingArea/android-libraries/com.android.support.support-core-utils-26.1.0/AndroidManifest.xml:6] Skipping identical /manifest/application/meta-data[@name=android.support.VERSION] element.
[Temp/StagingArea/AndroidManifest-main.xml, /Users/xxx/projects/AndroidBuildTest/Temp/StagingArea/android-libraries/com.android.support.support-fragment-26.1.0/AndroidManifest.xml:6] Skipping identical /manifest/application/meta-data[@name=android.support.VERSION] element.
[Temp/StagingArea/AndroidManifest-main.xml, /Users/xxx/projects/AndroidBuildTest/Temp/StagingArea/android-libraries/com.android.support.support-media-compat-26.1.0/AndroidManifest.xml:6] Skipping identical /manifest/application/meta-data[@name=android.support.VERSION] element.
[Temp/StagingArea/AndroidManifest-main.xml, /Users/xxx/projects/AndroidBuildTest/Temp/StagingArea/android-libraries/com.android.support.support-v4-26.1.0/AndroidManifest.xml:6] Skipping identical /manifest/application/meta-data[@name=android.support.VERSION] element.
]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
「Unable to merge android manifests.」と言われるものの、プロジェクト内には1つしかAndroidManifestは存在しない。
う〜ん、どういうことだろうとエラーログを読んでいくと、Temp/StagingArea/android-libraries/ 以下にあるAndroidManifest.xmlにandroid:targetSdkVersion="26"という記述があるらしい。
よくわからないがGoogleMobildeAdsはandroid:targetSdkVersion="26"を求めているけど、Unityプロジェクト自体が25になっているから起きている?
確かにPlayerSettingsでAndroidのTargetAPILevelは25になっている。
というか25が最高で26がない。
AndroidStudioのSDKManagerで26をインストールする。
しかしPlayerSettingsのTargetAPILevelは25までしか表示されない。
これは何故なのだろうか。
とりあえず「Automatic(highest installed)」を選択することでビルドは通った。
この対応の仕方で正しいのかはよくわからない。