読者です 読者をやめる 読者になる 読者になる

naichi's lab

3日後の自分(他人)への書き置き

【unity、Cloud Build】unityプロジェクトにGoogleAnalyticsを導入してCloud Buildを通すとこまで

Unity Google Analytics AdMob Cloud Build

f:id:naichilab:20161130021717p:plain:w320

先日の記事でFirebaseの導入に失敗したので代わりにGoogleAnalyticsを入れる。

はじめに

AdMob導入済みの

この記事の最後にも書きますが、 Cloud Buildが見事にエラーしまくるのでGit等のコミット(バックアップ)はこまめにね!!!

環境

  • やった日 : 2016/11/30
  • Google Mobile Ads Unity Plugin v3.1.2 (ビルドエラー対応で更新 3.0.5 -> 3.1.2)
  • GoogleAnalyticsV4.unitypackage (v0.5-beta) (この記事で新規追加)
  • Unity 5.5.0f2

手順

基本的に下記ページに従う

Google Analytics Plugin for Unity - Developer Guide  |  Analytics for Unity  |  Google Developers

  1. あらかじめGoogleAnalyticsにプロパティを用意しておく

    3つ用意した。

    • 太陽人間iOS
    • 太陽人間Android
    • 太陽人間Other
  2. 下記リポジトリからunity用プラグインのダウンロード

    https://github.com/googleanalytics/google-analytics-plugin-for-unity/releases

    GoogleAnalyticsV4.unitypackageをダウンロードした。

  3. [Android]AndroidManifestへのタグ追加はAdMob導入ですでに済んでいたので不要

  4. [iOS]AdSupportとかの参照追加とかも、AdMobとかですでにやってありそうだったので無視

    ちゃんと参照追加しましょう。 これがiOSビルドのエラー2(後述)を引き起こすので注意。

  5. GAv4 プレハブの配置と設定

    f:id:naichilab:20161128232255p:plain

    Send Launch Event にチェックを入れておくと起動するだけでデータが飛ぶみたい?

起動

Prefabをシーンに置いたまま、Unityエディタ上で起動してみると

Google Analytics -> レポート -> 作ったプロパティのビュー -> リアルタイム

f:id:naichilab:20161128232525p:plain

表示された!

どの画面を見ているかを取得

ここの内容です -> Google Analytics Plugin for Unity - API Reference  |  Analytics for Unity  |  Google Developers

今のプロジェクトでは SceneSwitcher ってクラスで画面遷移を制御してる。

そいつに GoogleAnalyticsV4のインスタンスをもたせて

 public class SceneSwitcher : MonoBehaviour, ISceneSwitcher
    {
        public GoogleAnalyticsV4 googleAnalytics;

画面切り替えのタイミングで LogScreen メソッドを呼び出す

googleAnalytics.LogScreen ("Field");

実行してみる。

f:id:naichilab:20161128233249p:plain

おー、簡単にどの画面開いてるか取れるようになった。

こりゃ楽しい。

CloudBuild上でエラーの嵐

エディタ上ではここまでで動くんだけど、Cloud Buildが Android / iOS ともに壊れてひどい目にあった。

よなよな対応して直すのに2日かかった...
それぞれの対応法は長くなるので全て別記事!

Androidのエラー

Unable to convert classes into dex format.

blog.naichilab.com

iOSのエラー1

'pod' command not found

blog.naichilab.com

iOSのエラー2

Undefined symbols for architecture armv7:

blog.naichilab.com

おわりに

いやー大変だった・・・

けどこれで AdMob + Google Analytics + アドフリくん を含んだ形でCloud Build通るようになったし一段落かな・・・

【unity、iOS、CloudBuild】Google Analyticsを入れたらビルドエラー(Undefined symbols for architecture armv7:)

Unity AdMob Google Analytics Error

f:id:naichilab:20161130021717p:plain:w320

blog.naichilab.com

上記前回の記事の続き。

cocoapodsのエラーは消えたけど別のエラーが出てきた。

エラー内容

Cloud Buildのコンパクトログではこんな感じ

241:        [xcode]       -[GAISqlStore errorMessage] in libGoogleAnalyticsServices.a(GAISqlStore.o)
242:        [xcode]   "_NSSQLiteErrorDomain", referenced from:
243:        [xcode]       -[GAIDataStore performBlockAndWait:withError:] in libGoogleAnalyticsServices.a(GAIDataStore.o)
244:        [xcode]       -[GAISqlStore errorMessage] in libGoogleAnalyticsServices.a(GAISqlStore.o)
245:        [xcode]   "_NSSQLiteErrorDomain", referenced from:
246:        [xcode]       -[GAIDataStore performBlockAndWait:withError:] in libGoogleAnalyticsServices.a(GAIDataStore.o)
247:        [xcode] clang: error: linker command failed with exit code 1 (use -v to see invocation)
248:        [xcode] ** BUILD FAILED **

なんかパッとしないエラーだったのでフルログを見てみると

11729:        [xcode] Undefined symbols for architecture armv7:
11730:        [xcode]   "_sqlite3_prepare_v2", referenced from:
11731:        [xcode]       -[GAISqlStore prepareSql:] in libGoogleAnalyticsServices.a(GAISqlStore.o)
11732:        [xcode]   "_sqlite3_errmsg", referenced from:
11733:        [xcode]       -[GAISqlStore errorMessage] in libGoogleAnalyticsServices.a(GAISqlStore.o)
11734:        [xcode]   "_sqlite3_close", referenced from:
11735:        [xcode]       -[GAISqlStore closeDatabase] in libGoogleAnalyticsServices.a(GAISqlStore.o)
11736:        [xcode]   "_sqlite3_open_v2", referenced from:
11737:        [xcode]       -[GAISqlStore openAndValidateDatabase] in libGoogleAnalyticsServices.a(GAISqlStore.o)
11738:        [xcode]   "_sqlite3_column_int", referenced from:
11739:        [xcode]       -[GAISqlStore rowCountForTableWithName:] in libGoogleAnalyticsServices.a(GAISqlStore.o)
11740:        [xcode]   "_inflateInit2_", referenced from:
11741:        [xcode]       +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a

お、それっぽいメッセージ( Undefined symbols for architecture armv7: )出てる。

ぐぐる

あれやこれやと調べていくと、 XCodeProject上でライブラリの参照が足りてないことが原因でした。

  • CoreData.framework
  • libz.tbd
  • libsqlite3.tbd

ローカルのXCodeで上記を追加したらビルド成功したので間違いなさそう。

f:id:naichilab:20161130235925p:plain

次はこれらを自動参照するようにせねば。

ライブラリの自動参照設定

Unity Cloud Buildではいちいち手動で参照設定できないので自動化する。

blog.naichilab.com

上記記事で書いたスクリプトを使い続けてるんだけど、そこに追記する。

下記を追加

     //フレームワーク追加
        List<string> frameworks = new List<string> () {
            "CoreData.framework",
            "libz.tbd",
            "libsqlite3.tbd"
        };

        foreach (var framework in frameworks) {
            pj.AddFrameworkToProject (target, framework, false);
        }

ビルド

成功した!!

GoogleAnalyticsのマニュアルみると・・・

Google Analytics Plugin for Unity - Developer Guide  |  Analytics for Unity  |  Google Developers

しっかり書いてあった!!!

f:id:naichilab:20161201000652p:plain

ごめんなさいごめんなさい。

【unity、iOS、CloudBuild】AdMobやGoogleAnalyticsを入れたらビルドエラー('pod' command not found)

Unity AdMob Google Analytics Error

f:id:naichilab:20161130021717p:plain:w320

タイトルの通り。

Google AnalyticsをUnityで使おうとして入れたんだけど、 CloudBuildが通らなくなった。

環境

  • Google Mobile Ads Unity Plugin v3.1.2
  • GoogleAnalyticsV4.unitypackage (v0.5-beta)
  • Unity 5.5.0f2

エラー内容

[Unity] Player export failed. Reason: 'pod' command not found; unable to generate a usable Xcode project. You can install cocoapods with the Ruby gem package manager:

cocoapods がないって言ってる。

状況

下記記事の通り対応した直後。 GoogleAnalyticsPlugin を入れた後で GoogleMobileAdsPlugin を入れてごにょごにょした状況。

blog.naichilab.com

すでに訳わからん状況からのスタート。

ぐぐる

それっぽいフォーラムを発見。

answers.unity3d.com

対応

1. いったんUnityのプラットフォームをiOSに変更。

プラットフォーム変更することでResolverが走るかな?と思ったけど何も起こらなかった。
このまま進める。

2. Assets/GoogleMobileAds/Editor/AdMobDependencies.cs から下記を削除

        Type iosResolver = Google.VersionHandler.FindClass(
            "Google.IOSResolver", "Google.IOSResolver");
        if (iosResolver == null) {
            return;
        }
        Google.VersionHandler.InvokeStaticMethod(
            iosResolver, "AddPod",
            new object[] { "Google-Mobile-Ads-SDK" },
            namedArgs: new Dictionary<string, object>() {
                { "version", "7.13+" }
            });

3. ローカルビルド

XCode再インストールしようとしてできてないのでパス...

3. CloudBuildでビルド

エラーが変わった・・・

241:        [xcode]       -[GAISqlStore errorMessage] in libGoogleAnalyticsServices.a(GAISqlStore.o)
242:        [xcode]   "_NSSQLiteErrorDomain", referenced from:
243:        [xcode]       -[GAIDataStore performBlockAndWait:withError:] in libGoogleAnalyticsServices.a(GAIDataStore.o)
244:        [xcode]       -[GAISqlStore errorMessage] in libGoogleAnalyticsServices.a(GAISqlStore.o)
245:        [xcode]   "_NSSQLiteErrorDomain", referenced from:
246:        [xcode]       -[GAIDataStore performBlockAndWait:withError:] in libGoogleAnalyticsServices.a(GAIDataStore.o)
247:        [xcode] clang: error: linker command failed with exit code 1 (use -v to see invocation)
248:        [xcode] ** BUILD FAILED **

長くなるので次の記事

【unity、Android】AdMob導入済みプロジェクトにGoogleAnalyticsを入れたらビルドエラー(Unable to convert classes into dex format)

Unity AdMob Google Analytics Error

f:id:naichilab:20161130021717p:plain

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 and Google Analytics packages conflict · Issue #299 · googleads/googleads-mobile-unity · GitHub

確かにAdMobプラグインをだいぶ前に入れた後、つい最近GoogleAnalyticsプラグインを入れた。

試す

1. Assets/PlayServicesResolver/* を消す

2. 最新のAdMobプラグインをダウンロード

Releases · googleads/googleads-mobile-unity · GitHub

3.1.2まで上がってた

3. ダウンロードしたAdMobプラグインをインポート

f:id:naichilab:20161130014607p:plain

かなり変わってるな・・・

これ聞かれたけどOK押した f:id:naichilab:20161130014728p:plain

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 を全部削除

    f:id:naichilab:20161130020519p:plain

  • ProjectSettings/ から下記2ファイルを削除

    • GoogleAarExplodeCache.xml
    • GoogleDependencyAdMobUnity.xml

    f:id:naichilab:20161130020703p:plain

8. Unity再起動

一度再起動しても Assets/Plugins/Android/play-service-* が出てこなかったのでもう一度再起動。

f:id:naichilab:20161130021256p:plain

お、綺麗にバージョンが揃った。

最初はどれか9.4が混ざってたきがする。

9. ローカルビルド

成功したあああああああああ

10. CloudBuild

これも成功したーーーー

めでたしめでたし。

【unity】unityプロジェクトにFirebase Analyticsを入れてみる(失敗)

Unity Firebase Firebase Analytics

f:id:naichilab:20161127032041p:plain

Firebase、気になってたので試してみる。

やったことをメモ

はじめに

つい最近(11/24だから3日前)、unity用のパッケージが出たらしい。
googledevjp.blogspot.jp

なんてタイムリーな。

環境

  • 書いた日:2016/11/27
  • Unity 5.5.0b4
  • firebase_unity_sdk 1.0.1

手順

基本はここに書かれてる通りにするだけ
https://firebase.google.com/docs/unity/setup

自分は Firebase Analytics しか使わないけど他も同じだと思う。

  1. Firebase上でアプリを追加

    • iOSアプリ

      f:id:naichilab:20161127025143p:plain:w320
      作成すると GoogleService-Info.plist がダウンロードされる。

    • Androidアプリ

      f:id:naichilab:20161127031247p:plain:w320
      作成すると google-services.json がダウンロードされる。

  2. ここから Firebase Unity SDK をダウンロードする。

    2016/11/27現在、firebase_unity_sdk_1.0.1.zip だった。
    中身はunitypackageの詰め合わせ
    f:id:naichilab:20161127025522p:plain:w320

  3. Unityプロジェクトを開いた状態で、 FirebaseAnalytics.unitypackage をダブルクリックして取り込む。

    なんかたくさんあるけど全部。
    f:id:naichilab:20161127025939p:plain:w320

  4. GoogleService-Info.plist をUnityフォルダにコピー

    どこでもいいって書いてあったので Assets/Plugins/iOS/Firebase/ に入れた。
    f:id:naichilab:20161127030700p:plain

  5. google-services.json をUnityフォルダにコピー

    どこでもいいって書いてあったので Assets/Plugins/Android/Firebase/ に入れた。
    f:id:naichilab:20161127031438p:plain

え、これだけ・・・

プッシュしてUnityCloudBuildの結果待ち。

ビルドエラー

f:id:naichilab:20161127033615p:plain:w480

101: [Unity] Assets/PlayServicesResolver/Editor/AdMobDependencies.cs(14,9): error CS0433: The imported type `Google.JarResolver.PlayServicesSupport' is defined multiple times
102: [Unity] /BUILD_PATH/rirunaichi.sun-human.debug-for-release-ios/Assets/PlayServicesResolver/Editor/Google.JarResolver.dll (Location of the symbol related to previous error)
103: [Unity] /BUILD_PATH/rirunaichi.sun-human.debug-for-release-ios/Assets/PlayServicesResolver/Editor/JarResolverLib.dll (Location of the symbol related to previous error)

JarResolverが2つあるとな。
たぶんもともとAdMob入れてたしやろなぁ。

たしかに2つある。

f:id:naichilab:20161127033706p:plain

コミット履歴を見る限りAdMobのと競合で間違いなさそうだ・・・

f:id:naichilab:20161127033923p:plain

安直に片方消してみる。さよなら JarResolverLib

ってなんか Install Android SDK Package ってのが動き出した 。いつからいた???

f:id:naichilab:20161127034122p:plain:w480

うおー怖い。

f:id:naichilab:20161127034334p:plain

ビルド壊れる予感がプンプンするぜ。

f:id:naichilab:20161127034401p:plain

Gitに身を委ねて全部OK、OK、、、

再度プッシュしてUnityCloudBuildの結果待ち。

結果

Android

ビルドは通った。

けど実機で実行するとアイコン押した瞬間に落ちる。

エラー内容

11-28 01:35:18.705: E/AndroidRuntime(6561): java.lang.NoSuchMethodError: No static method zzb(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzaa; or its super classes (declaration of 'com.google.android.gms.common.internal.zzaa' appears in /data/app/com.rircreate.sunhuman-2/base.apk)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at com.google.firebase.provider.FirebaseInitProvider.zza(Unknown Source)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at android.app.ActivityThread.installProvider(ActivityThread.java:5811)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at android.app.ActivityThread.installContentProviders(ActivityThread.java:5403)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5342)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at android.app.ActivityThread.-wrap2(ActivityThread.java)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at android.os.Handler.dispatchMessage(Handler.java:102)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at android.os.Looper.loop(Looper.java:154)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at android.app.ActivityThread.main(ActivityThread.java:6077)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at java.lang.reflect.Method.invoke(Native Method)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
11-28 01:35:18.705: E/AndroidRuntime(6561):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

iOS

ビルド通らず。

[Unity] Error running cocoapods. Please ensure you have at least version  1.0.0.  You can install cocoapods with the Ruby gem package manager:

cocoapodsがないとかなんとか・・・

ちとこれ以上調べてられないのでロールバックして終了〜

まとめ

いきなり現行プロジェクト(AdMobとかAdfurikunとか入ってる)に突っ込むのは無謀だったかも。

そのうちシンプルなプロジェクトで再挑戦する。

噂のPop会に参加してみた

日記

噂のPop会に潜入取材してきましたよ。

そもそもPop会って?

アプリ開発会の首領、Popさん率いる闇の会合

Popさんって誰?

Cocos2dxを操り趣味開発(たぶん)のはずなのにすごい勢いでリリースしていく開発ガチ勢、凄腕プログラマー。 素材は全部Excelのオートシェイプで描いてるって噂・・・マジか。

最新作、マジックメーカー楽しいよ!

、、、だと思ってましたが違いました。

そのところ実際はめっちゃ真面目にアプリについて語り合うSkype会議でした。

何するの?

基本は毎週土曜にやってるSkype会議らしいです。

進捗報告会

あらかじめGoogleDriveにapkをアップロードしておき、各々ダウンロード。

プレイしながら ここがいい ここがわるい とガチで意見を出し合います。

急な参加でしたが無理言って 太陽人間(開発中のアプリ) をプレイしてもらいました。

リアルタイムで埋まっていく感想シート...!!!

f:id:naichilab:20161126232253p:plain

みんな むすこ 好きそうでなによりw

案の定、残課題としてタスク積んである箇所はバシバシ指摘もらいましたw

それ以外にも気づいてなかった箇所もいくつか指摘もらえてかなりの収穫。

これはいい刺激。

apkを見せる(プレゼンする側になる)のは隔週

参加者が多くて毎週全員のを見てると時間がかかり過ぎるそうで、 apkを見せるのは隔週ぐらいで回してるそうです。

見せない週は他の人のゲームを遊んで意見を書く側に徹するってことですね。

まとめ

Popさんのモチベーション保ってる秘密を垣間見た気がします。

参加し続けると以下のような効果を得られる気がします。

  • 開発者自身が気づけないところに気づかせてもらえる
  • 次回までに進捗を出さないといけない適度なプレッシャーで開発が進む

きになる人はぜひ・・・!

ぜひ!

【unity】AdMob導入済みプロジェクトにアドフリくん入れたらビルドエラー already added: Landroid/support/v4/〜

タイトルの通り。

すでにAdMobを導入済みのUnityプロジェクトに、 アドフリくんSDKを入れたらビルドエラーするようになった。(Unity Cloud Build)

環境

  • Mac OS X El Capitan 10.11.6
  • Unity 5.5.0b4
  • adfurikunSDK_Unity_2_7
    • 導入時、adfurikunPlugin_nogooglelibの方のunitypackageを使った。

エラー内容

200: [Unity] Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat;
201: [Unity] Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoIcsImpl;
202: [Unity] Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoJellyBeanMr2;
203: [Unity] Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoStubImpl;
204: [Unity] Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
205: [Unity] Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs;
206: [Unity] Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatJellyBeanMr2;
207: [Unity] Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActionBarDrawerToggle;
208: [Unity] Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActionBarDrawerToggle$1;
209: [Unity] java.lang.RuntimeException: Translation has been interrupted
210: [Unity] Caused by: java.lang.InterruptedException: Too many errors

対応

どうもGooglePlayServiceの support/v4 ってのが重複してるような気がした。

アドフリくんSDK導入時のコミット履歴をみたら、 Assets/Plugins/Android/libs/android-support-v4.jar ってのがあったのでそれを削除してみる。

f:id:naichilab:20161122235954p:plain

お、ビルド成功した。

f:id:naichilab:20161123001538p:plain

ヘッダーらへんの2つがアドフリくん。 2つ出てるのはカスタムサイズのやつを試してるから。

真っ白なのはなんでやろ?まぁ待ってみるか。