AdMob導入済みプロジェクトのGoogle Analyticsを入れたらビルドが通らなくなった。
iOSもエラーしてるけどまずはAndroidビルドエラーを解決したい。
環境
- Google Mobile Ads Unity Plugin v3.0.5
- 半年前ぐらいに入れた今では古いやつ
- GoogleAnalyticsV4.unitypackage (v0.5-beta)
- Unity 5.5.0f2
エラーメッセージ
CommandInvokationFailure: Unable to convert classes into dex format. /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin/java -Xmx2048M -Dcom.android.sdkmanager.toolsdir="/Users/naichi/Library/Android/sdk/tools" -Dfile.encoding=UTF8 -jar "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/sdktools.jar" - stderr[ Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzlu; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzlv; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzlw; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzlx; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzly; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzlz; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzma; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzmb; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzmc; UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.RuntimeException: Translation has been interrupted at com.android.dx.command.dexer.Main.processAllFiles(Main.java:613) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:311) at com.android.dx.command.dexer.Main.run(Main.java:277) at com.android.dx.command.dexer.Main.main(Main.java:245) at com.android.dx.command.Main.main(Main.java:106) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at SDKMain.main(SDKMain.java:129) Caused by: java.lang.InterruptedException: Too many errors at com.android.dx.command.dexer.Main.processAllFiles(Main.java:605) ... 9 more ]
Lcom/google/android/gms/internal/zzlu
みたいなのが重複してるっていってるけどなんのことやら。
どこにいるんだこれは。
ググる
なんかGoogle AnalyticsのResolverは古いからAdMobプラグインのやつで上書きしろっていってる。 まじかよ・・・?
確かにAdMobプラグインをだいぶ前に入れた後、つい最近GoogleAnalyticsプラグインを入れた。
試す
1. Assets/PlayServicesResolver/*
を消す
2. 最新のAdMobプラグインをダウンロード
Releases · googleads/googleads-mobile-unity · GitHub
3.1.2まで上がってた
3. ダウンロードしたAdMobプラグインをインポート
かなり変わってるな・・・
これ聞かれたけどOK押した
4. Assets/GoogleMobileAds/Editor/AdMobDependenies.cs
に下記を追加
似たような箇所があるけど修正じゃなくて追加
Google.VersionHandler.InvokeInstanceMethod( svcSupport, "DependOn", new object[] { "com.google.android.gms", "play-services-analytics", "LATEST" }, namedArgs: new Dictionary<string, object>() { {"packageIds", new string[] { "extra-google-m2repository", "extra-android-m2repository"} } });
5. エディタ上で実行->エラー
KeyNotFoundException: The given key was not present in the dictionary. System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]].get_Item (System.String key) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:150) Google.JarResolver.PlayServicesSupport.ResolveDependencies (Boolean useLatest) GooglePlayServices.ResolverVer1_1.DoResolutionNoAndroidPackageChecks (Google.JarResolver.PlayServicesSupport svcSupport, System.String destinationDirectory, Google.JarResolver.OverwriteConfirmation handleOverwriteConfirmation) GooglePlayServices.ResolverVer1_1+<DoResolution>c__AnonStorey1.<>m__0 () GooglePlayServices.ResolverVer1_1.DoResolution (Google.JarResolver.PlayServicesSupport svcSupport, System.String destinationDirectory, Google.JarResolver.OverwriteConfirmation handleOverwriteConfirmation, System.Action resolutionComplete) GooglePlayServices.PlayServicesResolver.Resolve (System.Action resolutionComplete) GooglePlayServices.PlayServicesResolver.AutoResolve () UnityEditor.EditorApplication.Internal_CallUpdateFunctions () (at /Users/builduser/buildslave/unity/build/artifacts/generated/common/editor/EditorApplicationBindings.gen.cs:197)
6. Unity終了
7. 古いライブラリ削除
Assets/Plugins/Android/play-services-*.aar
を全部削除ProjectSettings/
から下記2ファイルを削除GoogleAarExplodeCache.xml
GoogleDependencyAdMobUnity.xml
8. Unity再起動
一度再起動しても Assets/Plugins/Android/play-service-*
が出てこなかったのでもう一度再起動。
お、綺麗にバージョンが揃った。
最初はどれか9.4が混ざってたきがする。
9. ローカルビルド
成功したあああああああああ
10. CloudBuild
これも成功したーーーー
めでたしめでたし。