前言
在看到美团工程师提出python脚本打包多渠道apk,如获至宝,想想之前项目十几个渠道打包下来大概20来分钟再加上电脑配置不好,那就等的更久,现在采用python的方式打包分分钟搞定十几个渠道,感觉就是畅快!
常规的打包方式
项目开发中最常用到的打包方式是 Gradle的方式,该方式的具体步骤不在本文讲解中,通常用这种方式打一个包几分钟(具体根据项目大小、电脑配置而定),那么十几个,上百个呢,这样的操作是非常耗时的。所以我们需要用更加快速的打包方式—python脚本打包
python 打包原理
我们先事先准备一个apk文件改后缀apk为zip并解压,其目录如下:
其中有个META-INF 的目录,每个apk都会包含这样的一个目录。因为META-INF目录不会被重新签名,所以我们可以将渠道文件放到该目录下,然后在代码中读取该目录下的渠道文件的渠道信息就可以了。该原理就是利用了apk解压文件下的META-INF不会被重新签名这个空隙罢了。看到这里有人会问,那这和python有毛关系啊。
如果我们一个个的apk解压,添加渠道文件到META-INF那确实和python没有关系,如果某个项目有上百个渠道你又怎么办呢?现在都讲究自动化,这就是python的作用,将上面的操作交给python去自动完成吧!现在我们通过下面的步骤来详细了解其中步骤吧!
python脚本打包准备工作
- 签名好的apk
- python脚本文件
- 提供channal的文本文件
- 在代码中获取渠道名称
1. 准备好签名好的apk 这一步就不用说了吧。
2. python脚本文件代码
|
|
不熟悉python的同学还需要自己去网上查查怎么运行python文件(1、安装python运行环境 2、运行python文件)
该段代码的作用很简单:1、遍历当前目录的apk文件 2、然后在apk的META-INF的的目录中生成与渠道列表相对应的渠道文件 3、输出各个渠道的apk文件
3. 准备渠道列表文件
像上图中这样一个渠道号占一行,整个文件保存为.txt文件格式,上文的python代码就需要读取该渠道文件中的渠道记录
4. 在代码中获取渠道名称
|
|
该方法在需要获取渠道信息的地方调用(调用之前需要在META-INF目录下生成渠道文件)