U8SDK——让渠道可以覆盖母包的游戏名称
最近有不少同学都在问一个问题,就是渠道能覆盖游戏母包中的游戏名称吗?
比如,我一个游戏,游戏母包中的名称是《U吧战争》,但是我在接久游(UC)的渠道之后,我需要将游戏换个名称来上线,比如叫《巴拉斗士》。
也就是其他渠道,使用母包默认的游戏名称,久游渠道使用《巴拉斗士》这个名称。
目前,对于这种需求,我们需要重新打一个母包,因为打包工具中各个渠道的配置中,还无法覆盖母包的应用名称。有点蛋疼。
所幸,这个功能实现起来很容易。我们只需要简单地加几行代码,就能在打包工具中完成这个工作了。
1、游戏渠道配置中增加一个参数
在打包工具目录下/games/config.xml这个渠道配置文件中,我们在每个渠道的配置参数中,增加一个游戏应用名称的配置,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<channel> <param name="id" value="10" /> <param name="name" value="uc" /> <param name="sdk" value="uc" /> <param name="desc" value="UC SDK" /> <param name="suffix" value=".uc" /> <param name="splash" value="0" /> <param name="splash_copy_to_unity" value="0" /> <param name="icon" value="rb" /> <param name="gameName" value="巴拉斗士" /> <sdk-params> <param name="UCGameId" value="544156" desc="GameId"/> <param name="UCCpId" value="55398" desc="CpId"/> <param name="UCDebugMode" value="false" desc="是否开启调试模式(true|false)"/> </sdk-params> <plugins> <plugin name="umanalytics" desc="友盟统计" /> </plugins> <sdk-version> <versionCode>1</versionCode> <!--versionCode用于渠道SDK的更新使用--> <versionName>3.5.3.1</versionName><!--versionName用于标识当前SDK的版本,和渠道SDK的版本一致--> </sdk-version> </channel> |
我们,增加了一个名为”gameName”的参数,用来配置该渠道特殊的游戏名称,这个名称将会覆盖母包中的游戏名称
2、修改打包脚本
增加了配置,这个参数仅仅会被读取到channel对象中,我们还需要在打包工具脚本中,增加修改游戏名称的逻辑。打开打包工具目录/scripts/apk_utils.py文件,我们增加一个覆盖游戏母包名称的函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
def modifyGameName(channel, decompileDir): """ 修改当前渠道的游戏名称,如果某个渠道的游戏名称特殊,可以配置gameName来指定。默认就是母包中游戏的名称 """ print("now to modify game name ....") if 'gameName' not in channel: print("now no game name modify") return manifestFile = decompileDir + "/AndroidManifest.xml" manifestFile = file_utils.getFullPath(manifestFile) ET.register_namespace('android', androidNS) tree = ET.parse(manifestFile) root = tree.getroot() labelKey = '{'+androidNS+'}label' applicationNode = root.find('application') applicationNode.set(labelKey, channel['gameName']) print("the new game name is " + channel['gameName']) tree.write(manifestFile, 'UTF-8') |
3、调用modifyGameName
上面,我们增加了一个覆盖母包游戏名称的方法,我们需要在合适的地方去调用,打开打包工具目录/scripts/core.py,在
1 2 3 4 |
ret = apk_utils.generateNewRFile(newPackageName, decompileDir) if ret: return 1 |
的前面调用该方法:
1 2 |
apk_utils.modifyGameName(channel, decompileDir) |
这样,对于那些拥有特殊名称的渠道,只需要加上这个配置,打包的时候,就可以覆盖了~ 打个包试试吧~
本文出自 U8SDK技术博客,转载时请注明出处及相应链接。
本文永久链接: http://www.uustory.com/?p=2029