更新admob ios sdk到GoogleAdMobAdsSdkiOS-6.2.1时编译报错

因修改游戏代码,增加admob点击广告监听事件后,发现在iphone4 ios5.1.1下没有捕获到到对应的事件
//点击广告后切换回游戏时
- (void)adViewDidDismissScreen:(GADBannerView *)adView
因此使用的是切出游戏时的事件
- (void)adViewWillLeaveApplication:(GADBannerView *)adView
将sdk升级到最近版本,尝试解决点击广告未触发- (void)adViewDidDismissScreen:(GADBannerView *)adView的问题。
下载地址
http://dl.google.com/googleadmobadssdk/googleadmobadssdkios.zip
解压后发现相比之前用的sdk多了几个头文件,将相关代码拷贝到原来sdk目录下进行覆盖。
clear后build,报错。
(1)错误1
Undefined symbols for architecture armv7:
"CGSizeFromGADAdSize(GADAdSize)", referenced from:
-[iFarmerAppDelegate buildADmobADView] in iFarmerAppDelegate.o
-[iFarmerAppDelegate setAdViewPostion:withY:] in iFarmerAppDelegate.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

查询相关代码,发现此处报错是因为之前版本与最新版本中的GAD_SIZE相关预定义值发生了变化,之前版本中GAD_SIZE的定义是放在GADBannerView.h中:
// iPhone and iPod Touch ad size.
#define GAD_SIZE_320x50 CGSizeMake(320, 50)

// Medium Rectangle size for the iPad (especially in a UISplitView's left pane).
#define GAD_SIZE_300x250 CGSizeMake(300, 250)

// Full Banner size for the iPad (especially in a UIPopoverController or in
// UIModalPresentationFormSheet).
#define GAD_SIZE_468x60 CGSizeMake(468, 60)

// Leaderboard size for the iPad.
#define GAD_SIZE_728x90 CGSizeMake(728, 90)
而最新版本中增加了一个GADAdSize.h,所有的 GAD_SIZE的定义放到了该头文件中,且内容和之前的也不一样:
#define GAD_SIZE_320x50 CGSizeFromGADAdSize(kGADAdSizeBanner)
#define GAD_SIZE_300x250 CGSizeFromGADAdSize(kGADAdSizeMediumRectangle)
#define GAD_SIZE_468x60 CGSizeFromGADAdSize(kGADAdSizeFullBanner)
#define GAD_SIZE_728x90 CGSizeFromGADAdSize(kGADAdSizeLeaderboard)
#define GAD_SIZE_120x600 CGSizeFromGADAdSize(kGADAdSizeSkyscraper)

因此,最简单的修改方式就是将使用预定义变量的地方直接替换为原来版本中其对应文本即可

(2)错误2
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_ASIdentifierManager", referenced from:
objc-class-ref in libGoogleAdMobAds.a(GADIdentifierUtilities.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

"_OBJC_CLASS_$_ASIdentifierManager", referenced from:

Objc-class-ref in libGoogleAdMobAds.a(GADIdentifierUtilities.o)

Symbol(s) not found for architecture armv7

:Linker command failed with exit code 1 (use -v to see invocation)

查询后发现是缺少了AdSupport.framework,添加后解决该编译错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值