UnityでAndroidビルドする際に起きたエラー。
AdMobとNCMBを利用していましたが、NCMBは関係あるかわかりません。
com.android.build.api.transform.TransformException:
com.android.builder.dexing.DexArchiveBuilderException:
com.android.builder.dexing.DexArchiveBuilderException: Failed to process…
だったり、
CommandInvokationFailure: Gradle build failed. /Applications/Unity/Hub/Editor/2019.1.1f1/PlaybackEngines/AndroidPlayer/Tools/OpenJDK/MacOS/bin/java -classpath “/Applications/Unity/Hub/Editor/2019.1.1f1/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-launcher-4.6.jar” org.gradle.launcher.GradleMain “-Dorg.gradle.jvmargs=-Xmx4096m” “assembleRelease”
といったエラーが起きました。
解決方法
解決したのですが、どれが原因で解決したのかがいまいち分からないので、とりあえず関係ありそうなものを書いていきます。
NCMBとAdMobのバージョンを揃える
Plugins/Android/ 以下のファイルを一度全部削除します。
その後、まずNCMBだけをインポート。
次に、GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xmlを開きます。
<androidPackage spec="com.google.android.gms:play-services-ads:15.0.1">
の末尾の部分を、NCMBのplay-services-XXXファイルの一番高いバージョンに変更。
最後に、Assets > Play Services Resolver > Android Resolver > Resolve を選択してAdMobプラグインを自動で導入。
重複している.jarや.aarのファイルを削除
play-services-XXX
support-XXX
などのファイルで、名前が同じでバージョン番号だけが異なるファイルは古い方を削除します。
このとき、
play-services-base-XX.X.X.aar
も一緒に削除します。(同じ名前のファイルはありませんが)
AndroidManifestの編集
AndroidManifestのminSdkVersionの値を全てのAndroidManifestで同じにします。
UnityでのPlayerSettingsで設定しているMinimum API Levelの値も合わせておきます。
そして、NcmbGcmPlugin.aarの中身のAndroidManifestも見落としがちなので確認します。
Finderやエクスプローラでこのファイルを表示し、拡張子を.zipに変更したあと、展開(解凍)します。
中にAndroidManifestが入っているのでminSdkVersionの値を修正した後、再びzipに圧縮して拡張子を.aarに変更。
展開したフォルダは削除してしまいましょう。
これらを行うと無事ビルドが通るようになりました!!
コメント