ブログランキング・にほんブログ村へ


iPhone/iPad用潜水艦ゲームアプリ ソナーエコー iTunesにて公開中

2015年09月17日

[iOS] xcode7 : リンカーがエラー / ライブラリ.o does not contain bitcode.

前の記事のxcode7 になったらADmobの6系が通らなくなったって内容だけど、cocoaPodsを使ってADMob SDK 7.4.1つうのを入れてビルドしてみても改善されなかった。

リンカーのエラーを見ると6系のときと同じで、なんかbitcodeとかいうのがないとかなんとか。
ld: '/Users/XXX/Documents/XCodeProjects/XXXXX/Pods/Google-Mobile-Ads-SDK/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADGestureIdUtil.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

それでこのbitcode問題を調べてみるとやはりxcode7で出るようで、回避方法はBuild Settingsのほうの設定変更だった。

手順としては、 Project / TARGET / Build Settings で All (Basicでは非表示)にすると Build Options セクションに ENABLE_BITCODEという欄があって、これがYesになってる。これをNoに変える。

ADMob SDK 6 系でもこの変更だけで通るかもしれない。通る可能性が濃厚。だが試していない。
(その後この設定変更だけで通ることを確認した @2015.9.20追記)

それはADMob 6 系のSDKの入ってたProjectにADMob 7 をpod installして、古いADMobのライブラリを削除したらそれだけで通っちゃったから。
なんでそうなるの?って感はあるのだけど、まあいいか。

とりあえず懸念事項について一つ道筋が見えた。
タグ:iOS Xcode xcode7
posted by みこあいさ at 11:19| iOS開発

[iOS] cocoaPodがクラッシュ ( xcode7 / AdMob )

iOS9がリリースされ、xcodeも正式に7になり、面倒だなぁと思いつつもアップデート。
そしたらやっぱりプロジェクトが通らなくなってる。メジャーアップデートですんなりいったことの方が珍しい。

何がエラーって色々あるけど、まずはADmob。これのライブラリが気に入らないと。
実はずっとADmobのライブラリは6系で止めてた。7にしようとすると、cocoaPod使って入れなくちゃいけなくて、そうすると使ってるObjective-C++とすこぶる相性が悪い。Objective-Cなら問題ないようだけど。
(ただし、のちに7系でなくても通せることが判明 @2015.9.20追記 次の記事参照)

ラップするとかで頑張りゃなんとかなるか‥ということで仕方なくcocoaPodでpod installする。


すると。

pod install
Analyzing dependencies

CocoaPods 0.39.0.beta.4 is available.
To update use: `gem install cocoapods --pre`
[!] This is a test version we'd love you to try.

For more information see http://blog.cocoapods.org
and the CHANGELOG for this version http://git.io/BaH8pQ.

Downloading dependencies
Installing Google-Mobile-Ads-SDK (7.4.1)
Generating Pods project
2015-09-17 10:37:45.134 ruby[1631:378611] [MT] DVTAssertions: ASSERTION FAILURE in /Library/Caches/com.apple.xbs/Sources/IDEFrameworks/IDEFrameworks-8227/IDEFoundation/Initialization/IDEInitialization.m:590
Details: Assertion failed: _initializationCompletedSuccessfully
Function: BOOL IDEIsInitializedForUserInteraction()
Thread: {number = 1, name = main}
Hints: None
Backtrace:
0 0x000000010c930a5c -[DVTAssertionHandler handleFailureInFunction:fileName:lineNumber:assertionSignature:messageFormat:arguments:] (in DVTFoundation)
1 0x000000010c9301e9 _DVTAssertionHandler (in DVTFoundation)
2 0x000000010c930455 _DVTAssertionFailureHandler (in DVTFoundation)
3 0x000000010c9303b7 _DVTAssertionFailureHandler (in DVTFoundation)
4 0x000000010dd3cf5c IDEIsInitializedForUserInteraction (in IDEFoundation)
5 0x0000000110994eb9 +[PBXProject projectWithFile:errorHandler:readOnly:] (in DevToolsCore)
6 0x0000000110996a3e +[PBXProject projectWithFile:errorHandler:] (in DevToolsCore)
7 0x00007fff88bfaf44 ffi_call_unix64 (in libffi.dylib)
Abort trap: 6

飛びやがった。βだから仕方ないのかもしれんが。
どうすりゃいいと探すが、例によって日本語の資料はなし。
ようやく見つけた英語のそれっぽいのを参考に

cocoaPodsをアンインスコ。
sudo gem uninstall cocoapods

そんでもってインスコ。
sudo gem install cocoapods

それでpod install。

Updating local specs repositories

CocoaPods 0.39.0.beta.4 is available.
To update use: `gem install cocoapods --pre`
[!] This is a test version we'd love you to try.

For more information see http://blog.cocoapods.org
and the CHANGELOG for this version http://git.io/BaH8pQ.

Analyzing dependencies
Downloading dependencies
Installing Google-Mobile-Ads-SDK (7.4.1)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `XXXXX.xcworkspace` for this project from now on.
Sending stats

通ったよ。

でもやっぱりβのままなんだね。
posted by みこあいさ at 10:51| iOS開発