Xcode9.0にアップデートしてからAdMobのフレームワークを入れ替えてビルドしたらエラーが発生。
Undefined symbols for architecture arm64:
“_OBJC_CLASS_$_GADRequest”, referenced from:
objc-class-ref in TabController.o
objc-class-ref in SettingViewController.o
“_OBJC_CLASS_$_GADInterstitial”, referenced from:
objc-class-ref in TabController.o
“_OBJC_CLASS_$_GADRewardBasedVideoAd”, referenced from:
objc-class-ref in SettingViewController.o
“_OBJC_CLASS_$_GADBannerView”, referenced from:
objc-class-ref in TabController.o
objc-class-ref in SettingViewController.o
“_kGADAdSizeBanner”, referenced from:
__T09Pedometer13TabControllerC11viewDidLoadyyF in TabController.o
__T09Pedometer21SettingViewControllerC11viewDidLoadyyF in SettingViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
arm64のアーキテクチャーエラーが出てるけど、昔のAdmobでは発生しなかったのがおかしいなって。
Xcodeでライブラリリンク時に発生するエラーに対応するframework
XcodeでiOSアプリをコンパイル後にライブラリをリンクする際、必要な framework が足りないと、以下のようなエラー(Undefined symbols for architecture arm64)が発生します。
こちらのサイトに乗っているように、最初は新しいAdmob必要なframeworkが足りないのかな?とも思ったんだけども、
エラー内容的になんか違う。
そして、色々調べた結果、出てきたのが、Xcode 9.0のバグ?と思われるという内容の記事。
フレームワークを手動でプロジェクトに追加した場合、フレームワークがプロジェクトにリンクされないらしい。
プロジェクトのGeneralのLinked Frameworks and Librariesをよく見てみたら、確かにAdmobのフレームワークが追加されてなかったんで、関連付けてビルドしてみたら通った。
Xcodeがメジャーアップデートするとこういう初期不良的なことが結構発生するから焦る。。。
とりあえずよかった。
コメントを残す