U8SDK——区分参数存储的位置(assets目录中还是AndroidManifest.xml中)

作者: 分类: U8SDK 发布时间: 2015-02-28 20:05 64条评论

最近有同学在使用U8SDK接入360SDK的时候,发现了一个问题。就是360渠道SDK需要的APPID等参数是需要放在AndroidManifest.xml中的。而
u8sdk里面,则是把这些参数放在各个渠道SDK配置目录下的config.xml中,然后打包工具在打包的时候,会将这些信息统一地写入到assets目录下的
develop_config.properties文件中。

现在这个问题,也很好解决。我们在config.xml中配置params的时候,我们在每个param里面增加两个属性。bWriteInManifest和bWriteInClient

如果bWriteInManifest=1,打包的时候,打包工具就将该参数添加到AndroidManifest.xml的meta-data里面。

如果bWriteInClient=1,或者你不配置,默认情况就将该参数添加到develop_config.properties文件中。

(注:新版U8SDK已经支持了)

那么对于已经在使用u8sdk的童鞋们,可以按照如下步骤来添加对应的支持。同时,顺便也熟悉了解下打包脚本的原理吧。

首先在config_utils.py里面loadChannelUserConfig这个方法里,将下面这段代码:

修改为如下格式,增加bWriteInManifest和bWriteInClient参数的解析。

这样,就将config.xml里面param配置里面的bWriteInManifest和bWriteInClient属性解析出来了。解析完了,还不行。我们需要根据这两个属性将
该参数分别填写到develop_config.properties和AndroidManifest.xml里面

首先,我们需要在config_utils.py里的writeDeveloperProperties里面将写入develop_config里的参数给过滤下.将原来的代码片段:

修改为:

这样,只有config.xml里面bWriteInClient=1的那些参数才会被写入到develop_config.properties.里面

紧接着,我们还需要将那些bWriteInManifest=1的参数添加到AndroidMananifest.xml中。我们需要在apk_utils.py增加一个方法,拷贝到文件最后面即可。

这个方法就是将所有bWriteInManifest=1的参数添加到AndroidManifest.xml中的meta-data中。

然后,在main.py里面的doPack方法中,在apk_utils.writeSupportInfo(channel, decDir)行的下面一行,添加writeManifestMetaInfo的调用。
添加后,这块代码像这样:

最后,为了验证是否有些参数可以被添加到AndroidManifest.xml中。你修改下main.py里面doPack方法,注释掉file_utils.del_file_folder(workDir)。

然后,执行pack_debug.bat打包工具,打包完成后,在u8work/渠道名称/decompile/目录下,打开AndroidManifest.xml文件,看看里面是否有你需要添加的参数。同时,看decompile目录下面assets目录下面develop_config.properties里面的属性是否也正确。

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

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

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