cocos2d 使用 cocoapods 安装 google admob ads sdk

前端之家收集整理的这篇文章主要介绍了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'

然后保存文件名为PodFile,没有后缀,放到你的cocos2d项目中的ios项目目录下。像这样:


然后在proj.ios_mac目录下打开终端,输入pod install。稍等片刻,google admob ads sdk就安装好了,所有的系统依赖都会自动弄好。是不是帅的掉渣?


cocoapods提示叫我们使用Match3.xcworkspace,而不是之前的Match3.xcodeproj. IOS项目目录下多了一些东西,有Podfile.lock,还有一个pods文件夹,里面有最新的Google-AdMob-Ads-SDK 6.12.2。 第一次看到这个的时候太叼了。



接着我们打开Match3.xcworkspace



发现在游戏项目种多了一个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=1
HEADER_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 http://ruby.taobao.org/
sudo gem install cocoapods
pod setup

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


http://www.waitingfy.com/archives/1509

猜你在找的Cocos2d-x相关文章