上記前回の記事の続き。
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で上記を追加したらビルド成功したので間違いなさそう。
次はこれらを自動参照するようにせねば。
ライブラリの自動参照設定
Unity Cloud Buildではいちいち手動で参照設定できないので自動化する。
上記記事で書いたスクリプトを使い続けてるんだけど、そこに追記する。
下記を追加
//フレームワーク追加 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
しっかり書いてあった!!!
ごめんなさいごめんなさい。