总所周知.多渠道打包是一个不容易的工作。它的必要性以及使用可以看一下的文章.
Android 多渠道打包总结
Android使用walle多渠道打包
新一代开源Android渠道包生成工具Walle
最后不用管那么多.我这边就是使用Walle进行一个打包
最重要的一点,签名一定要是V2的!!!,否则会报错
1.降级Gradle. 此工具不支持7.0以上的Gradle.具体的可以去看issue
2.添加allprojects的依赖库
一定记得,因为默认的Maven库和一些公共库没有这个包的资源…
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.7'
}
}
allprojects {
repositories {
maven {
url 'https://maven.aliyun.com/repository/public/'
}
}
}
3.gradle.app中添加依赖以及配置秘钥,插件等
如果你直接添加依赖,但是没有配置SigningConfig,然后又apply插件,那么就会报错.
分别添加apply plugin.
配置
SigningConfigs.
buildTypes
dependencies
walle
apply plugin: 'walle'
signingConfigs {
release {
storeFile file('..\test01.jks')
storePassword '123456'
keyAlias 'test'
keyPassword '123456'
}
debug {
storeFile file('..\test01.jks')
storePassword '123456'
keyAlias 'test'
keyPassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.findByName('release') ?: signingConfigs.debug //walle必须有这个签名,bug签名
}
}
dependencies {
implementation 'com.meituan.android.walle:library:1.1.7'
}
walle {
// 指定渠道包的输出路径
apkOutputFolder = new File("${project.buildDir}/outputs/channels");
// 定制渠道包的APK的文件名称
apkFileNameFormat = '${appName}-${packageName}-${channel}.apk';
// 渠道配置文件
channelFile = new File("${project.getProjectDir()}/channel.txt")
}
4.其它剩下的就和github上面差不多了
就是在项目中执行该命令
生成渠道包 ./gradlew clean assembleReleaseChannels
成功了就去 output去 *** 作就好了.
给固定的apk加入渠道信息比如场景为生成包->加固->加入渠道信息.
那么,上述的插件场景是不满足我们的条件的。
所以就意味着要将一个apk再生成多个渠道的apk了.
先把大佬的先放在这里先.主要是要用命令行的方式.
https://blog.csdn.net/blf09/article/details/72782795
命令一:(单个写入,如果未指定目录,生成的新Apk与[apk路径]同级目录)
java -jar walle-cli-all.jar put -c[渠道名] [apk路径] [生成的apk路径(可选)]
例如:
java -jar walle-cli-all.jar put -c qiyu C:\Users\Administrator\Desktop\apksigner\qiyu_jiagu_zipalign_v2_sign_walla_channel_tools.apk
命令二:(批量写入,如果未指定目录,生成的新apk与[apk路径]同级目录)
java -jar walle-cli-all.jar batch -f[渠道文件] [apk路径] [生成的新apk路径(可选)]
java -jar walle-cli-all.jar batch -f
C:\\apksigner\qiyu_jiagu_zipalign_v2_sign_walla_channel_tools.apk
C:\Users\Administrator\Desktop\apksigner\apk
更新一下最近遇到的坑:
可能不同的加固后:
walle写入渠道安装报错 Size of APK Signing Block is not a multiple of 4096
https://blog.csdn.net/u012203641/article/details/107863555
这里摘抄一下大佬的:
失败原因
其实报错信息说的很明确了 Size of APK Signing Block is not a multiple of 4096 : apk的签名区块大小必须是4096的倍数 我们用walle写入渠道信息后导致apk中签名区块大小不是4096的倍数,所以报错
这是因为 Android 9.0开始添加了v3签名方式和校验
https://source.android.google.cn/security/apksigning/v3?hl=zh-cn
v3会校验 Signing Block 是否是 4096的倍数
因为用360自动签名的 apksigner 会自动使用 v3签名,所以签名后再写入渠道信息就会报错,那么我们禁用v3签名即可,直接用 27.x.x版本的apksigner进行签名就不会进行v3签名,系统也不会去有这个校验了。
1.1.7版本的walle好像修复了这个问题,写入渠道会自动补齐到 4096的倍数,但是官方没有编译好的jar,issue中有编译好的
简单一点:你可以换一个walle-cli-all.jar工具即可https://github.com/vclub/vclub.github.io/raw/master/walle-cli-all.jar
还不行可以看一下这个issue:
https://github.com/Meituan-Dianping/walle/issues/264
可以使用里面别人写好的python工具,用起来也是不错的哟.~(我懒的安装 python所以我没试过.)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)