walle多渠道打包
在项目的build.gradle 中添加对walle的依赖:
classpath'com.meituan.android.walle:plugin:1.1.6'
在app的build.gradle中配置:
applyplugin:'walle'
walle {
// 指定渠道包的输出路径
apkOutputFolder =new File("${project.buildDir}/outputs/channels");
// 定制渠道包的APK的文件名称
apkFileNameFormat ='${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';
// 渠道配置文件
channelFile =new File("${project.getProjectDir()}/channel")
}
implementation'com.meituan.android.walle:library:1.1.6'
app目录下新建channel,写入项目需要打包的渠道:
application中测试渠道是否写入成功
//检测渠道是否写入成功:
String channel = WalleChannelReader.getChannel(this.getApplicationContext());
Log.d("My_Channel","channel = " + channel);
使用:
生成所有渠道包 ./gradlew clean assembleReleaseChannels
生成单个渠道包: ./gradlew clean assembleReleaseChannels -PchannelList= Qh360
生成多个渠道包: ./gradlew clean assembleReleaseChannels -PchannelList= Qh360, sogou
结果:
填坑之路
发版后的几天,发现了一个巨坑,我集成了bugly的热更新,walle打包之后,用乐固加固完上线几天,统计的同学问我为什么没有渠道的信息,我十分懵逼,以为自己打包的问题,然后重新打包改用config.json方式传渠道号,walle多渠道打包之后亲测有效,自信满满给运营,还好上线之前又测了一次,果断渠道号不见了,见鬼有没有。于是google,baidu,一顿操作,才知道乐固加固的时候把渠道号给抹了。好在有大神趟过坑:https://github.com/Jay-Goo/ProtectedApkResignerForWalle。
1.先把bugly的batapk中的基准包用乐固加固,切记不要签名,只加固不签名就行。
2.clone大神的开源项目:https://github.com/Jay-Goo/ProtectedApkResignerForWalle
3.将walle的channel文件或者config.json文件和加固后的apk放到clone的文件根目录下,安装github上严格操作,最后运行 python ApkResigner.py(我是cd到目录下运行的)。然后就静待佳音,几秒钟就OK了,前提是有python环境哈。