walle 多渠道打包

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环境哈。

你可能感兴趣的:(walle 多渠道打包)