Ubantu Jenkins打包五 快速打渠道包

 

1. 渠道包生成原理

渠道包和普通包的区别:

渠道包与普通包相比,渠道相关的信息不同,代码部分相同。开发和编码的时候,渠道信息尽可能的不要采用

硬编码,最好的方法是将渠道配置信息写入AndroidManifest的meta-data,程序中通过读取AndroidManifest的meta-data

中的信息获取渠道对应的渠道信息。

这种情况下,渠道包和普通包只有AndroidManifest有差别,通过重新生成AndroidManifest,和原来的代码和资源重新打包

就可以生成新的渠道包。

2. 快速打渠道包原理

1)生成APK包;

2)反解析APK;

$ apktool d [apk包]

如果失败,请采用

$ apktool d [apk包] -r

3)生成渠道包的AndroidManifest,替换反解析的AndroidManifest

替换生成渠道用的AndroidManifest

4)重新打包生成未签名的新APK;

apktool b [解压后的文件夹] -o [输出的新APK名]

5)对新APK进行签名

jarsigner -digestalg SHA1 -sigalg MD5withRSA -tsa -verbose -keystore [keystore文件] -storepass [用于密钥库完整性的口令] -signedjar [输出的签名apk] [未签名的apk]  [keyAlias]

6)对新签名包进行优化(例如对齐处理)

 

2. 安装APKTOOL

1)下载APKTOOL wrapper script (右键, 链接存储为 apktool)

https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/osx/apktool

2) 下载 apktool-2 (下载地址)

https://bitbucket.org/iBotPeaches/apktool/downloads
3) 安装APKTOOL

下载完的apktool包重命名为 apktool.jar
移动两个文件 (apktool.jar & apktool) 到 /usr/local/bin (需要root权限)
为两个文件添加可执行(chmod +x)
现在就可以使用 apktool 命令了

通过apktool查看安装结果

我们发现我们需要修改的manifest文件就在里面,所以通过命令可以修改下他的内容,然后重新打包,就可以生成一个全新的渠道包了,省去了重新编译构建代码的过程。使用一下Python脚本,将manifest文件里面channel信息进行替换。

import re

def replace_channel(channel, manifest):
    pattern = r'()'
    replacement = r"\g<1>{channel}\g<3>".format(channel=channel)
    return re.sub(pattern, replacement, manifest)

 

https://blog.csdn.net/wangyiyungw/article/details/81101122

你可能感兴趣的:(安卓开发,jenkins打包)