Unity

Unity/AndroidでAdMob導入時にエラーが出た話

2020/06/26

※ 本ページはプロモーションが含まれています。

UnityでAndroid向けのプロジェクトにAdMobを追加したときに、ビルドエラーが出て苦戦したのでメモ。

【状況】

以前リリースしたアプリをUnityAdからAdMobに変更するため、手順通りAbMobのパッケージをインポートしてビルドしたらエラーが出た。(文末参照)

【対応】

"Gradle build failed."ということなので、試しにビルドを「Gradle」→「Internal」に変更してビルドしてみたけど、他のエラーをはいてビルドできず。海外のフォーラムとか含めて色々みてみると、「SDKをアップデートしたらなおった」、とか「重複したファイルがあってそれを消したらビルドできた」とか、「AdMobのパッケージを古いバージョンをいれたらビルドできた」とか色々あって、何が正解かよくわからない。

色々試した結果、自分は重複した「support-core-utils-25.3.1.aar」ファイルを削除したら無事ビルドできた。ファイルのあった場所は、

------------------------------

(1) Asset/Plugins/Android/

(2) Temp/gradleOut/libs

(3) Temp/StagingArea/aar

--------------------------------

の3か所にあって、(1) Asset/Plugins/Android/にある「support-core-utils-25.3.1.aar」「support-core-utils-25.3.1.aar.meta」のファイルを削除した。

Admob導入時に上記ファイルが重複してエラーを起こしていたって言うことなのかなあ。

【エラー】
-------------------------------------------------------------------

CommandInvokationFailure: Gradle build failed.
C:Program FilesUnityEditorDataPlaybackEnginesAndroidPlayer/ToolsOpenJDKWindowsbinjava.exe -classpath "C:Program FilesUnityEditorDataPlaybackEnginesAndroidPlayerToolsgradlelibgradle-launcher-4.6.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"

stderr[
D8: Program type already present: android.support.v4.content.LocalBroadcastManager$1

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task
':transformDexArchiveWithExternalLibsDexMergerForRelease'.
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex

(省略)

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.Command.Run (System.String command, System.String args, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidJavaTools.RunJava (System.String args, System.String workingdir, System.Action`1 progress, System.String error)
UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1 progress)
Rethrow as GradleInvokationException: Gradle build failed
UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1 progress)
UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

-------------------------------------------------------------------


-Unity