cocos2d 使用 cocoapods 安装 google admob ads sdk

1.为什么要用cocoapods

我喜欢搞游戏的一个原因:

游戏不需要涉及太多变化的API。如果你搞多安卓和IOS原生开发就知道了。有些4.X能用的Android API,在2.X就不能用。IOS也是一样,IOS8有增加了不少API。游戏这块本质上就是在画布上画东西,比较纯粹。

软件开发最喜欢的就是使用第三方库。不用重复造轮子。但是接入的第三方库一多起来就会非常麻烦。各种依赖问题。后续升级问题。都是非常头痛。

游戏开发比较蛋疼的是接入各种广告SDK,渠道SDK。好像cocos2d 的AnySDK比较好用,没用过。cocos2d好像也在搞跟cocoapods 功能类似的东西。

搞了半天还没说cocoapods是干嘛用的。搞原生IOS开发的可能对cocoapods比较熟悉,cocoapods就是用来搞第三方库的。

看下cocoapods如何更加方便地安装google admob ads sdk你就知道为什么要使用它了。

2.土办法在cocos2d中使用google admob ads sdk

先准备梯子用搜索引擎搜索 google admob 文档,下载最新的google admob for IOS。整个东西解压出来:

复制到你的游戏项目中,然后XCode,把所有的文件添加进来。这个时候Library Search Path一般都是绝对路径,把它改成相对路径:

$(SRCROOT)/../Ad/GoogleMobileAdsSdkiOS-6.12.2

然后开始编译。出现错误。发现google admob 的系统依赖framework没搞。添加各种framework:

AVFoundation,AdSupport,AudioToolbox,CoreGraphics,CoreTelephony,MessageUI,StoreKit,SystemConfiguration。然后重新开始编译,还是错误。然后各种google 搜索,baidu 搜索。发现蛋疼的最新版google admob还需要EventKit,EventKitUI。 加上它们,继续重新编译。

如果幸运地话会成功。失败的话就要搞Other Linker Flag,加上-ObjC? 最后-force_load "$(SRCROOT)/../Ad/GoogleMobileAdsSdkiOS-6.12.2/libGoogleAdMobAds.a" 总算搞定。

如果IOS升级到9,Google admob就会升级。然后你要把老的全部删除。新的这样重新来一遍,血都会吐光。鬼知道,又少了什么系统依赖导致编译错误。鬼知道会不会正确载入那个xx.a文件。

作为游戏开发者,你只想快点搞定这些蛋疼的第三方SDK接入,好赶快去编写游戏具体的逻辑,,而不是在这种地方浪费时间。

幸运的是有Cocoapods,幸运的是google admob 支持Cocoapods。我们来看下用cocoapods安装google admob会是如何的步骤。

3. 使用cocoapods 安装 google admob

假设你的Mac已经安装好cocoapods.

打开终端,输入 pod search google,会列出google的很多支持cocoapods 安装的IOS库。发现admob的名字是叫google-admob-ads-sdk。然后我们换成pod search Google-AdMob-Ads-SDK。搜索结果如下:

好清晰!最新的版本是6.12.2,还有些老的版本,不管它。

然后打开文本编辑工具。我这里使用Sublime2,输入:

platform :ios, ‘5.1.1’pod ‘Google-AdMob-Ads-SDK’, ‘~> 6.12.2’

发现在游戏项目种多了一个Pods的文件夹,里面有两个配置文件。另外下面多了一个Pods的项目,它会生成libPod.a和libPods-Google-AdMob-Ads-SDK.a。

非常高兴地开始编译整个游戏。可惜遇到了编译错误:cocos2d.h not find!,血吐光!!不是说要cocoapods安装会好些吗?怎么搞的?

打开Pod.debug.xcconfig 和 Pod.release.xcconfig中的

HEADER_SEARCH_PATHS 和 LIBRARY_SEARCH_PATHS中加入$(inherited)

完整如下:

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Google-AdMob-Ads-SDK"LIBRARY_SEARCH_PATHS = $(inherited) "$(PODS_ROOT)/Google-AdMob-Ads-SDK/GoogleMobileAdsSdkiOS-6.12.2"OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Google-AdMob-Ads-SDK"OTHER_LDFLAGS = -ObjC -l"GoogleAdMobAds" -l"Pods-Google-AdMob-Ads-SDK" -framework "AVFoundation" -framework "AdSupport" -framework "AudioToolbox" -framework "CoreGraphics" -framework "CoreTelephony" -framework "EventKit" -framework "EventKitUI" -framework "MessageUI" -framework "StoreKit" -framework "SystemConfiguration"OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS)PODS_ROOT = ${SRCROOT}/Pods继续编译,还是出错,又是libGoogleAdMobAds.a的问题。

在Other Linker Flag,加上 -force_load "$(PODS_ROOT)/Google-AdMob-Ads-SDK/GoogleMobileAdsSdkiOS-6.12.2/libGoogleAdMobAds.a"

总算搞定:

3.使用cocoapods总结

虽然还是遇到了头文件搜索目录和.a文件载入的问题,但是已经比原始的土办法好了很多。

1.它自动地解决了系统依赖库的问题

2. 解决后后续更新的问题。后续更新只需要先更改PodFile的版本号,输入pod update就OK了。

3. 所有第三方库都放在一个pods项目中,比较有调理。

当然这只是简单地接入google admob ads sdk,要真正使用它,还是要仔细地看文档。有什么banner Ad,全屏Ad,各种banner Ad尺寸,还有banner Ad位置等等。以后有空介绍下它们。

4. 安装cocoapods

安装cocoapods我放到了最后讲,因为比较简单:

gem sources –remove https://rubygems.org/gem sources -a sudo gem install cocoapodspod setup

因为在天朝,那个源被墙了,所以要先移除,然后换成淘宝的源。然后gem install cocoapods就可以了。要等待比较久的时间,因为总共cocoapods大概在50-80MB大小。

所有的失败,与失去自己的失败比起来,更是微不足道

cocos2d 使用 cocoapods 安装 google admob ads sdk

相关文章:

你感兴趣的文章:

标签云: