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'(<meta-data\s+android:name="channel"\s+android:value=")(\S+)("\s+/>)'
    replacement = r"\g<1>{channel}\g<3>".format(channel=channel)
    return re.sub(pattern, replacement, manifest)

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值