xcodeを最新の環境の5.1にバージョンアップしてから、初めてadmobを入れようとしては待ってしまった。
admob広告表示に関しては、一度実装してみた後は、コピペですんでいた。
今回も、今までと同じように前回作成したアプリのソースをコピペした所、エラーになった。
エラーの内容は、以下のようなものが出てきた。
===================================================================
ld: warning: ld: warning: ld: warning: ignoring file /ファイルのパス/adkit/libAdapterIAd.a, missing required architecture arm64 in file /ファイルのパス/adkit/libAdapterIAd.a (3 slices)ignoring file /ファイルのパス/libAdapterNend.a, missing required architecture arm64 in file /ファイルのパス/adkit/libAdapterNend.a (3 slices)ignoring file /ファイルのパス/adkit/libGoogleAdMobAds.a, missing required architecture arm64 in file /ファイルのパス/libGoogleAdMobAds.a (3 slices)
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_GADRequest", referenced from:
objc-class-ref in CategoryEditViewController.o
objc-class-ref in MainViewController.o
objc-class-ref in ItemEditViewController.o
"_kGADAdSizeBanner", referenced from:
-[CategoryEditViewController viewDidLoad] in CategoryEditViewController.o
-[MainViewController viewDidLoad] in MainViewController.o
-[ItemEditViewController viewDidLoad] in ItemEditViewController.o
"_OBJC_CLASS_$_GADBannerView", referenced from:
objc-class-ref in CategoryEditViewController.o
objc-class-ref in MainViewController.o
objc-class-ref in ItemEditViewController.o
"_kGADAdSizeLeaderboard", referenced from:
-[CategoryEditViewController viewDidLoad] in CategoryEditViewController.o
-[MainViewController viewDidLoad] in MainViewController.o
-[ItemEditViewController viewDidLoad] in ItemEditViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
===================================================================
このブログでも以前に書いていた部分に引っかかったのかと思い見直してみたが、ちょっと違う。
以前は、単純にビルドの設定を変更する事で対応できたのだが、今回は、前回と同じ選択肢が存在しない。
それに、他にもちょっと怪しい指摘もあるので、全体的に見直しを行う事にした。
まずは、組み込むadmonやAppBankのファイルのバージョンをチェック。
案の定、既に古いものを使用していた。
一度、使い始めた後に、この部分に関して、あまりバージョンアップをしていなかった。
早速、全て、最新のファイルを取得し組み込むがあまり変わらない。
というよりも、エラーが増えた。
===================================================================
"_AVAudioSessionPortBuiltInSpeaker", referenced from:
-[GADDevice audioRouteUsingAVAudioSession] in libGoogleAdMobAds.a(GADDevice.o)
"_AVAudioSessionPortHeadphones", referenced from:
-[GADDevice audioRouteUsingAVAudioSession] in libGoogleAdMobAds.a(GADDevice.o)
"_OBJC_CLASS_$_AVAudioSession", referenced from:
objc-class-ref in libGoogleAdMobAds.a(GADDevice.o)
"_OBJC_CLASS_$_CTTelephonyNetworkInfo", referenced from:
objc-class-ref in libGoogleAdMobAds.a(GADDevice.o)
===================================================================
こんなのが増えている。
これは、中をじっくり見ると、どうも、必要なframeworkが増えているようだった。
結果的に、以前使っていた時よりも、下記の2個が必要なっていた。
・AVFoundation.framework
・CoreTelephony.framework
この追加で、とりあえず、エラーはなくなったが、64bitでビルドするとワーニングが残る。
そのまま実行すると、AppBankの広告は表示されない。
ログに広告の取得失敗が残っている。
これこそ、以前と同じなのだが、ビルドの設定に以前と同じものはなくなっている。
しかたなく、「Build Setting」の「Architectures」を「Other」を選択。
そこで、「armv7」「armv7s」の2項目を入力し、他の項目は削除しておく。
この設定で、ワーニングは消えた。
動作も、問題なく広告表示されるようになったので、これでよいと思われる。
以前のバージョンでは、選択肢にあったので簡単であったのに、今回は、手入力が必要になったようだ。
[3回]
PR