Android多渠道打包解决加固标签消失

多渠道打包插件用的时美团的Walle, 打包用gradle,需下载安装gradle并配置环境变量,加固用的时腾讯的乐固PC,

解决应用加固导致Walle渠道信息失效的自动化脚本,自动生成渠道包,该插件需要python环境,ubuntu自带,其他系统需要自行配置

Github:https://github.com/Jay-Goo/ProtectedApkResignerForWalle

1.Walle配置

项目的gradle文件添加 classpath 'com.meituan.android.walle:plugin:1.1.6'

dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.meituan.android.walle:plugin:1.1.6'
    }

module的gradle文件添加compile 'com.meituan.android.walle:library:1.1.6'

//apply plugin: 'walle'
美团walle多渠道打包
walle {
    // 指定渠道包的输出路径
    apkOutputFolder = new File("./APK");
    // 定制渠道包的APK的文件名称
    def fileName = '${appName}-版本号-${versionName}-渠道-${channel}.apk'
    apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}v${versionName}-${versionCode}-${buildTime}.apk';
    // 渠道配置文件
    channelFile = new File("${project.getProjectDir()}/channel")
}

//多渠道打包
compile 'com.meituan.android.walle:library:1.1.6'

walle模块与自带的android模块时同级关系,不是包含关系,项目的classpath和module的compile的引入路径是有区别的,

 

project.getProjectDir()是当前module的根目录,存放的channel是普通文本文件,里面时多渠道的配置信息,内容如下:

Qh360 #360
Yyb #应用宝
Wdj #豌豆荚
Lenovo #联想
Xiaomi #小米
Huawei #华为
Meizhu #魅族
Oppo #oppo
Vivo #vivo

在项目中可通过

String channel = WalleChannelReader.getChannel(this.getApplicationContext());

channel就是渠道标签

gradle环境变量配置的是全局时可直接执行下列命令,否则需到gradle的安装目录

生成所有渠道包
./gradlew clean assembleReleaseChannels

生成单个渠道包(huawei渠道):
./gradlew clean assembleReleaseChannels -PchannelList=huawei
生成多个渠道包(huawei、xiaomi渠道):
./gradlew clean assembleReleaseChannels -PchannelList=huawei,xiaomi

当提示gradlew权限不够时,使用以下命令增加权限:chmod +x gradlew

渠道包的生成目录默认存放在 build/outputs/apk/,也可以通过Walle闭包中的apkOutputFolder参数来指定输出目录

2.加固

直接用工具加固,不要为加固包签名,得到未签名的加固包,此时项目中获取的渠道标签为空

3.签名并重新恢复标签

https://github.com/Meituan-Dianping/walle 下载解压

按照config.py文件中的注释改成自己项目配置

#!/usr/bin/python  
#-*-coding:utf-8-*-

#keystore信息
#Windows 下路径分割线请注意使用\\转义
keystorePath = "文件路径/签名文件"
keyAlias = "别名"
keystorePassword = "密钥"
keyPassword = "密钥"

#加固前的源文件名(未重签名)
protectedSourceApkName = "加固未签名的.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+,换成你自己的SDK路径,实例如下
sdkBuildToolPath = "/home/ldd/android-sdk/build-tools/26.0.2"

channel文件与你项目的channel文件一样,可按需修改

运行命令 `python ApkResigner.py`,即可自动生成所有加固过并签名的渠道包。


 

修改于2019-12-16,乐固已出可直接签名生成多渠道包功能,无需再这么麻烦

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值