以前负责项目打渠道包时,都是使用传统的方式进行打包,自从发现美团的打多渠道包方式后,感觉少用了不少的时间
下面我来说一下自己集成美团的多渠道打包方式,方便自己回顾,也希望能帮到大家
在接入Walle之前,我们需要创建好签名文件,并且在项目的app build.gradle中进行配置,如下:
signingConfigs {
release {
storeFile file('D:\\asexample\\MyWalleApplication\\key\\walle.jks')
storePassword '123456'
keyAlias = 'walle'
keyPassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug{
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
美团Walle具体接入方式可以参考:https://github.com/Meituan-Dianping/walle/
首先在位于项目根目录 build.gradle 文件中添加Walle Grale 插件的依赖,如下:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.6'
}
}
并在当前App的build.gradle文件中apply这个插件,并添加上用于读取渠道号的ARR
apply plugin: 'walle'
dependencies {
compile 'com.meituan.android.walle:library:1.1.6'
}
同时还需要在app的build.gradle中配置插件:
然后进行同步一下。
接着把多渠道文件放到app目录下,如下图:
然后我们需要进行多渠道打包的时候,只需要执行./gradlew clean assembleReleaseChannels
即可来生成所有的渠道包
到此,我们就可以看到项目下生成了多渠道包:
生成多渠道包到此也就完成了
但是这里还有一个问题,我们直接通过美团Walle多渠道方案打包生成的apk,在经过360加固之后,是会丢掉渠道信息的
,对此问题,美团在GitHub上也提出了解决方案360加固失效?
这里我们就直接采用Jay-Goo
大佬提供的Python打包脚本ProtectedApkResignerForWalle,这也是美团官方推荐的方案。接下来我们就讲解如何使用该脚本
第一步:在app的build.gradle中添加依赖:
compile 'com.meituan.android.walle:library:1.1.6'
第二步:把https://github.com/Jay-Goo/ProtectedApkResignerForWalle 中的文件克隆下来,放在自己工程自定义的文件夹中,如下:
上图walle文件夹下除了自定义的,其余文件和文件夹就是从Jay-Goo大佬那里克隆下来的
接着我们把加固后的包放到walle文件夹下,如下图所示:
把config.py文件中的这几个内容改成自己项目中的配置 ,如下图所示:
还有把config.py文件中sdkBuildToolPath改成自己的Android SDK buidtools所在的路径:
然后在ApkResigner.py文件所在路径下运行python脚本:python ApkResigner.py如下图所示:
执行完成后就生成了多渠道包,如下图:
如果你不想每次生成多渠道包时都要修改config.py文件中的protectedSourceApkName的名字,我们复制一个config2.py你可以用如下的方式替换:
同时还有复制一个ApkResigner.py命名为ApkResigner2.py,并把该文件中的所有config替换成config2,如下图:
然后在控制台运行脚本:python AapResigner.py如下图,同样可以生成多渠道包:
至此美团多渠道打包总结完毕!我的整个完整demo下载