unity study

Unityでサクッとモックを作れるようになることを目指して、基本的なテクニックを抑えていく過程を残すブログのつもりだったけど、今はただ自分のトラブルシューティングメモになってるブログ

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 has but 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 has but 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.xmlandroid:targetSdkVersion="26"という記述があるらしい。
よくわからないがGoogleMobildeAdsはandroid:targetSdkVersion="26"を求めているけど、Unityプロジェクト自体が25になっているから起きている?
確かにPlayerSettingsでAndroidのTargetAPILevelは25になっている。
というか25が最高で26がない。

AndroidStudioのSDKManagerで26をインストールする。
しかしPlayerSettingsのTargetAPILevelは25までしか表示されない。
これは何故なのだろうか。
とりあえず「Automatic(highest installed)」を選択することでビルドは通った。
この対応の仕方で正しいのかはよくわからない。