NEO-SHOCKER.COM

AdMob SDK for iOS に必要な framework

AdMob SDK for iOS を組み込む際、いくつかの framework を追加する必要があります。
デベロッパーガイドに追加する framework が書いてありますが、足りません。

Google AdMob Ads iOS(初級)

実際、何の framework を追加しなければならないのか?ちょっと試してみました。
※ Add-ons は入れてません。
※ SDK のバージョンは 6.8.0 を使用。

まず、適当な SingleView のプロジェクト作成し、AdMob SDK を追加して、ViewController.h, .m に 必要なコードだけを書いてビルドしてみます。
この時点で追加されている framework は

  • CoreGraphics
  • UIKit
  • Foundation

何も追加してないので、当然エラーは出ます。数は 17個。

[code:text]
Undefined symbols for architecture i386:
“_AVAudioSessionPortBuiltInSpeaker”, referenced from:
-[GADDevice audioRouteUsingAVAudioSession] in libGoogleAdMobAds.a(GADDevice.o)
“_AVAudioSessionPortHeadphones”, referenced from:
-[GADDevice audioRouteUsingAVAudioSession] in libGoogleAdMobAds.a(GADDevice.o)
“_AudioServicesPlaySystemSound”, referenced from:
-[GADDefaultGMSGHandler didReceiveVibrateNotification:] in libGoogleAdMobAds.a(GADDefaultGMSGHandler.o)
“_AudioSessionGetProperty”, referenced from:
-[GADDevice audioRouteUsingAudioToolkit] in libGoogleAdMobAds.a(GADDevice.o)
“_AudioSessionInitialize”, referenced from:
-[GADDevice audioRouteUsingAudioToolkit] in libGoogleAdMobAds.a(GADDevice.o)
“_OBJC_CLASS_$_ASIdentifierManager”, referenced from:
objc-class-ref 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)
“_OBJC_CLASS_$_MFMailComposeViewController”, referenced from:
objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)
“_OBJC_CLASS_$_MFMessageComposeViewController”, referenced from:
objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)
“_OBJC_CLASS_$_SKStoreProductViewController”, referenced from:
objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)
“_SCNetworkReachabilityCreateWithName”, referenced from:
-[GADNetworkChecker startNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
“_SCNetworkReachabilityScheduleWithRunLoop”, referenced from:
-[GADNetworkChecker startNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
“_SCNetworkReachabilitySetCallback”, referenced from:
-[GADNetworkChecker startNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
“_SCNetworkReachabilityUnscheduleFromRunLoop”, referenced from:
-[GADNetworkChecker stopNetworkChecking] in libGoogleAdMobAds.a(GADNetworkChecker.o)
“_SKStoreProductParameterITunesItemIdentifier”, referenced from:
-[GADOpener openInAppStore:fallbackURLString:] in libGoogleAdMobAds.a(GADOpener.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[/code]

次に、デベロッパーガイドに書いてある以下の framework を追加。CoreGraphics は既にあるので、3つ追加。

  • AudioToolbox
  • MessageUI
  • SystemConfiguration
  • CoreGraphics

ここまででビルドすると、エラーは 8個でこんな感じ。

[code:text]
Undefined symbols for architecture i386:
“_AVAudioSessionPortBuiltInSpeaker”, referenced from:
-[GADDevice audioRouteUsingAVAudioSession] in libGoogleAdMobAds.a(GADDevice.o)
“_AVAudioSessionPortHeadphones”, referenced from:
-[GADDevice audioRouteUsingAVAudioSession] in libGoogleAdMobAds.a(GADDevice.o)
“_OBJC_CLASS_$_ASIdentifierManager”, referenced from:
objc-class-ref 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)
“_OBJC_CLASS_$_SKStoreProductViewController”, referenced from:
objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)
“_SKStoreProductParameterITunesItemIdentifier”, referenced from:
-[GADOpener openInAppStore:fallbackURLString:] in libGoogleAdMobAds.a(GADOpener.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[/code]

ここから見ると足りなそうなのは、下の3つ。

  • AVFoundation
  • StoreKit
  • CoreTelephony

ここまででビルドすると、エラーは2つ。

[code:text]
Undefined symbols for architecture i386:
“_OBJC_CLASS_$_ASIdentifierManager”, referenced from:
objc-class-ref in libGoogleAdMobAds.a(GADDevice.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[/code]

で、あと足りないのは

  • AdSupport

これを追加してビルドすると、エラーは0個。シミュレータで実行すると、広告が表示されました。
AdMob SDK for iOS v6.8.0 で必要な framework は、以下の8個となります。

  • AudioToolbox
  • MessageUI
  • SystemConfiguration
  • CoreGraphics
  • AVFoundation
  • StoreKit
  • CoreTelephony
  • AdSupport

追記:
AdMob SDK for iOS 7.1.0 から CoreMedia.framework も必要となっているみたいです。

Brave Browser