1、打包工具的输入,就是需要打包的apk包,也叫母包。游戏里面引入sdk抽象层的jar包,调用抽象层的接口。完成接入,然后打成apk。
2、打包工具会首先用apktool -d 对母包进行反编译。反编译到该渠道对应的临时工作目录中
3、重命名包名。我们知道在AndroidManifet.xml中的package就是包名,为了防止后面我们重新生成R文件导致冲突,我们对每个渠道都设置一个后缀。比如UC,后缀叫.uc。当乐,后缀.dl 等等。如果渠道SDK有明确要求,使用他们提供的后缀,那就使用他们提供的后缀。如果没有,就自己设置一个。
4、拷贝SDK资源。将该渠道对应的SDK资源,从对应的SDK配置目录中,拷贝到反编译后的临时工作目录中。
1)拷贝SDK的assets目录,libs目录,res目录等
2)将classes.dex也反编译成smali格式,拷贝到反编译临时工作目录中
3)和SDK_Manifest.xml中的内容合并到游戏目录的AndroidManifest.xml中。
5、生成游戏中需要使用的配置。
1)对于之前SDK目录中config.xml中配置的APPID,APPKEY等信息,根据需要,对于需要添加到AndroidManifest.xml中的,我们就将他添加到AndroidManifest.xml中的meta-data中。对于其他参数,我们会在assets目录下生成一个develop_config.properties文件。
2)对于SDK目录下config.xml中配置的插件信息,我们会在assets目录下,生成一个plugin_info.xml文件。这样SDK抽象层会读取这个配置来实例化对应的插件。
6、重新生成R文件。部分渠道需要支持他们的闪屏画面。根据我们的闪屏解决方案(后面会专门来说),我们需要重新生成R文件,来索引我们的闪屏资源图片等信息。
7、重新打包,采用apktool -b重新将合并之后的资源和代码,进行打包
8、签名和优化。部分渠道要求使用他们提供的签名文件,所以,我们对签名文件也采用了配置。可以根据不同的渠道来配置不同的签名文件。
9、经过以上步骤,一个渠道包就生成了。
通过上面这个打包流程,我们已经知道单个渠道包是如何生成的了。那么,像第一张图片中所表示的那样,我们打包工具是同时打出各个不同渠道SDK的渠道包。我们是如何来实现的呢?请看下图:
每个游戏,都有一个全局配置,里面配置了当前需要打包的渠道。这样,打包工具首先会读取该配置,然后按照上面的打包流程,对各个渠道进行打包。最终在输出目录下生成各个渠道对应的渠道包。
至此,我相信你对U8SDK里的打包工具有了一个比较全面的了解。但是,这还不够完善。比如,我们可以将参数从配置中脱离出来,采用界面化的管理方法。这样,你就可以将这套工具给运营或者策划去使用,程序开发人员,就不再需要负责打包的工作了。
打包的效率和速度上,也可以继续不断地进行优化。删除不必要的文件操作,减少不必要的流程等。
打包工具的源码三天三夜都说不完,所以建议,大家对着源码来看,根据上面所说的,慢慢熟悉打包工具,最后能够彻底掌握他,随心所欲完善修改他。
本文作者:小黑