U8SDK——如何满足某个游戏的特殊需求

作者: 分类: U8SDK 发布时间: 2015-06-25 20:51 63条评论

今天 @盛同志提了一个问题,也是U8SDK之前没有考虑到的问题。问题描述如下:游戏母包中接入了一个推送插件,比如个推。但是个推的一个provider的 android:authorities属性需要替换为downloads.第三方包名 这样的格式。但是我们知道,通过U8SDK打包,各个渠道包的包名都是不一样的。虽然,我们在U8SDK中,各个渠道SDK可以有自己的特殊操作脚本,这里用渠道SDK特殊操作脚本(可以看这篇博客了解)来实现这个需求,就太不和谐了。而这个只能作为某款游戏自己的特殊业务需求。所以,我们需要像对各个渠道SDK一样,也为每个游戏定义一个特殊化操作脚本。这样,上面类似的需求,我们就可以放在游戏的特殊化脚本中完成。还算完美的解决方案了。首先,我们将每个游戏的特殊化操作脚本,命名为post_script.py(PS:含义为打包后期处理脚本),放在打包工具/config/games/游戏名称/scripts/post_script.py下。比如U8SDK自带的测试游戏的话,放在打包工具/config/games/game1/scripts/post_script.py。然后,我们定义一个操作接口:

然后,在打包工具/scripts/core.py中,apk_utils.doSDKScript操作之后,我们调用一次apk_utils.doGamePostScript方法。这个方法的实现如下:

这样,我们就为每个游戏定义了一个特殊话操作脚本。那么,上面的案例,我们就来简单实现一下。比如我们现在的游戏是game1,那么,我们在game1/scripts/目录下定义一个post_script.py脚本:

这样,用打包脚本执行一次打包,随便打一个渠道包。然后在打包工具/workspaces/游戏名称/decompile/AndroidManifest.xml打开看一看,找到com.igexin.download.DownloadProvider 看看他的android:authorities属性,是否已经变成了downloads.其中为当前渠道包的包名

以后有类似的需求,都可以放在这个脚本中完成。

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

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

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