多渠道打包美团工具walle使用步骤以及坑...

多渠道打包美团工具walle使用步骤以及坑...,第1张

开头(坑的开始)

总所周知.多渠道打包是一个不容易的工作。它的必要性以及使用可以看一下的文章.
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所以我没试过.)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/992601.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存