U8SDK——IOS统一渠道SDK接入解决方案(思路)

作者: 分类: U8SDK 发布时间: 2015-06-14 15:15 611条评论

经过大半年的时间,U8SDK Android部分已经比较成熟了,也得到了很多童鞋的认可。在这段时间内,有很多童鞋,都在问针对IOS的渠道SDK,有没有类似可行的统一接入解决方案。这里说的IOS渠道SDK,不仅仅指的是IOS的InAppPurchase,还包括各种针对越狱IOS的渠道,比如PP助手,91助手,XY助手等等。经过一段时间的调查,发现IOS越狱的渠道SDK也在快速地增加,到目前为止,已经不下于几十家了。而且,这个数字还在快速增加。所以,针对IOS渠道SDK的统一接入解决方案的研发,也是势在必行了。
 
经过一段时间的构思和试验,最终,基本确定了一套可行的解决方案。方案还没有开始实现,这里,先说说总体的思路和设计,希望支持U8SDK的童鞋们,一起来交流,最终形成一套简单实用的解决方案。
 
整套机制和目前的U8SDK Android部分一样(点这里温故一下) ,还是基于同一个主体思想:游戏层不和具体的渠道SDK有任何的耦合。唯一不同的就是,就是需要做一套满足整套机制的打包工具。
 
整套机制需要做的工作,罗列如下:
 
1、采用Objective-C 或者swift 实现一边 U8SDK抽象层。(之前U8SDK采用的是java开发的,这里换个语言抄一遍即可)
2、实现一套打包工具,可以基于母工程,实现资源的整合,最后通过命令来完成出包。
3、U8Server的部分不用动,应该这个部分不仅仅适用于Android 渠道SDK,同样也适用IOS的渠道SDK部分
 
那么,根据罗列的工作,可以看出,主要的工作,还是在于,打包工具这里。Android渠道SDK的打包工具,我们采用的是基于反编译母包的APK,然后动态地将渠道SDK的资源代码合并到母包中,最后,采用命令重新打包,签名,最终生成最终的渠道包。关于Android部分的打包工具设计可以看这篇博客( “#ff0000;”>点这里)。可见基于反编译还是有很大的好处的。因为不需要游戏工程,只需要apk母包,即可打出渠道包。
 
但是,对于IOS渠道SDK,我们没办法像Android那样,采用反编译的方案,因为暂时还没有发现能反编译ipa包的技术方案。所以,我们只能基于游戏源工程来实现了。

 
1、游戏工程只需要引入U8SDK抽象层库文件,调用相应的接口方法即可。
 
2、每个渠道SDK接入的时候,也是引入U8SDK抽象层库文件,实现相应的接口即可。和Android部分类似。最后,将渠道SDK生成一个静态库(.a文件)
 
3、将每个渠道SDK的资源库文件,静态库,framework等,以及上一步中打出来的渠道SDK接入工程的静态库文件一起放到固定的配置文件夹下面。
 
4、为每个渠道SDK定义一个配置文件,主要配置,支持的插件,渠道SDK需要的参数,渠道SDK需要引入的系统库名称,以及需要设置的编译参数等。
 
5、因为Android部分的打包工具,我们采用的是python写的,为了保持统一,IOS部分的打包工具,我们一样采用python来实现。github上有一个开源的操作xcode工程文件的python插件(mod-pbxproj)。可以采用这个来通过python脚本完成静态库,frameworks等文件的添加。
所以,在打包某个渠道SDK的时候,首先将木工程拷贝一份,然后通过这个插件来添加第四步中配置文件中的各种文件,以及修改或者增加一些编译指令。
 
6、最后,通过xcodebuild命令将工程编译成.app 然后通过xcrun命令将.app签名,最终胜出**.ipa
 

如果你有更好的思路,请记得告诉小黑哦~ 😆
 

 
 
如果你支持并看好U8SDK,那么你可以看看 “#ff0000;”>U8SDK的增值服务
如果你有任何关于SDK相关的问题,你可以访问 “#ff0000;”>U吧(SDK问答社区)

本文出自 U8SDK技术博客,转载时请注明出处及相应链接。

本文永久链接: http://www.uustory.com/?p=1803

评论功能已经关闭,请加入U8SDK技术群进行讨论和咨询:207609068
Ɣ回顶部
U8SDK技术群 x
技术同学请加入
点击加入