打包工具的原理
整套 SDK 的核心思想,就是让我们的 SDK 接入成本,能够控制在 1,而不是 N。啥
意思呢?就是,我们接入第一款游戏的时候,我接了这些 SDK,当我接入第二款,第三款
游戏的时候,这套 SDK 可以尽可能的复用,而不是每开发一款游戏,又从头去接各个渠道
sdk。所有的游戏都能够使用同一套 SDK 接入框架,来快速完成 SDK 的接入工作。那么,
我们怎么做到呢?请看总体的思路:
打包工具原理图
游戏 A,游戏 B,游戏 C 是三款不同的游戏,对于他们来说,他们只需要调用 SDK 抽
象层提供的接口,就完成了所有 SDK 的接入工作。这个时间,也就是几个小时的时间吧。
但是,我们知道,各个渠道 SDK 针对不同的游戏,都有不同的 APPID,APPKEY 等配
置信息。所以,我们需要将这些配置信息也放在配置文件中。打包的时候,不同的游戏根
据不同的配置,通过打包工具得到各个 SDK 的渠道包。
那么,像 UC,当乐这些 SDK 是怎么接入的呢?
其实很简单,每个 SDK 接入,都是单独建立一个工程,引入 SDK 抽象层的 jar 包,然
后,实现 SDK 抽象层中的插件接口。然后接好之后,会将 SDK 需要的资源,
classes.dex,以及 libs 等需要的资源和代码,放在打包工具对应的 SDK 配置目录中。比
如,UC 的 SDK,会在打包工具 cong/uc 目录下,放置接好之后的 SDK 资源和代码。
同时,我们还需要两个配置文件。一个是 channel.properties。我们用他来配置,该
渠道的参数配置信息。比如 APPID,APPKEY 等。同时也配置下,需要将哪些目录拷贝到
apk 里面的哪些目录中。同时,各个 SDK 接入都需要在 AndroidManifest.xml 中配置一
些 activity,service,permission 等。我们把这些信息,放在 SDK_Manifest.xml 中。
然后打包的时候,将这个文件的信息合并到母包的 AndroidManifest.xml 中。
我们再来看打包工具。你可能会奇怪,打包工具是怎么将只接入了抽象层的游戏母包输
出为各个 SDK 的渠道包。这里,我们就要来看看打包工具所做的工作: