解决walle打的包加固后获取不到渠道信息

按照上一篇文章使用Walle实现多渠道打包打出来的包经360加固后,会导致无法获取到渠道信息,所以如果你打的渠道包要经过360加固,就不能使用上一篇文章的方法打渠道包,这里提供另一种方法:

1、app的 build.gradle 文件添加walle的依赖用于获取渠道信息
dependencies {
    
    
    compile 'com.meituan.android.walle:library:1.1.6'
}
2、将之前配置在manifest文件中标签内的友盟的渠道信息删除,修改友盟初始化方法为:
     //获取渠道信息
    String channel = WalleChannelReader.getChannel(this.getApplicationContext());
    UMConfigure.init(this, BuildConfig.UMENG_APPKEY, channel, UMConfigure.DEVICE_TYPE_PHONE, "");
3、正常打包,然后加固,得到加固后的apk(还未签名),这里暂且命名为app_release_enc.apk
4、上github下载 ProtectedApkResignerForWalle项目,将第3步加固后未签名的apk放到此项目的根目录:

在这里插入图片描述

5、修改config.py文件:
#!/usr/bin/python  
#-*-coding:utf-8-*-

#keystore信息
#Windows 下路径分割线请注意使用\\转义
keystorePath = "./xxx.keystore"
keyAlias = "xxx"
keystorePassword = "xxx"
keyPassword = "xxx"

#加固后的源文件名(未重签名)
protectedSourceApkName = "app_release_enc.apk"
#加固后的源文件所在文件夹路径(...path),注意结尾不要带分隔符,默认在此文件夹根目录
protectedSourceApkDirPath = ""
#渠道包输出路径,默认在此文件夹Channels目录下
channelsOutputFilePath = ""
#渠道名配置文件路径,默认在此文件夹根目录
channelFilePath = ""
#额外信息配置文件(绝对路径,例如/Users/mac/Desktop/walle360/config.json)
#配置信息示例参看https://github.com/Meituan-Dianping/walle/blob/master/app/config.json
extraChannelFilePath = ""
#Android SDK buidtools path , please use above 25.0+
sdkBuildToolPath = "/B/sdk/build-tools/27.0.3"

这里顺便补充下相对路径知识(老忘):

"/"    表示根目录

"./"   表示当前目录

"../"  表示上一级目录("../../"上二级)

eg:
在这里插入图片描述

6、修改channel里的要打包的渠道:

在这里插入图片描述
这里暂且只打华为、小米、应用包三个渠道的包:

huawei 
xiaomi 
yingyongbao 
7、cmd打开命令行窗口,进入ProtectedApkResignerForWalle项目根目录,执行命令:python ApkResigner.py

在这里插入图片描述
执行成功后,ProtectedApkResignerForWalle项目根目录会生成channels文件夹,打开此文件夹可以看到新生成的3个渠道包:
在这里插入图片描述
自此,walle打的包加固后获取不到渠道信息的问题就解决了。

结合热更新的补充

1、项目打出基准包后,build文件下会生成如下图所示的bakApk文件,此文件我们一定要保存好,后面如果要打补丁时,要保证build文件下方有此文件,否则补丁包打不出来。
在这里插入图片描述
2、我们将第1步生成的基准apk上传到360网页加固后,下载加固成功但未签名的apk放到ProtectedApkResignerForWalle项目根目录生成多渠道apk(生成的apk会自动签名),然后发布到各个应用市场。

3、当发现有bug时,我们首先修复bug,改完后将第1步生成的bakApk文件放到app目录下的build文件里,然后打补丁包。

4、将生成的补丁包上传到bugly,然后各个应用市场的app都会收到补丁。


另外,github上ProtectedApkResignerForWalle项目给出的注意事项:

在这里插入图片描述

Guess you like

Origin blog.csdn.net/sqf251877543/article/details/101297630