Walle 打包

2020-06-14  本文已影响0人  FlyClound

Android Signature V2 Scheme签名下的新一代渠道包打包神器

使用方式有两种,第一种Gradle插件使用方式

  1. 配置build.gradle
    在位于项目的根目录 build.gradle 文件中添加Walle Gradle插件的依赖, 如下:
buildscript {
    dependencies {
        classpath 'com.meituan.android.walle:plugin:1.1.6'
    }
}

并在当前App的 build.gradle 文件中apply这个插件,并添加上用于读取渠道号的AAR

apply plugin: 'walle'
dependencies {
    compile 'com.meituan.android.walle:library:1.1.6'
}

配置插件

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")
}

2.获取渠道信息

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

3.生成渠道包

生成单个渠道包: ./gradlew clean assembleReleaseChannels -PchannelList=meituan

生成多个渠道包: ./gradlew clean assembleReleaseChannels -PchannelList=meituan,dianping

生成渠道包&写入额外信息:

./gradlew clean assembleReleaseChannels -PchannelList=meituan -PextraInfo=buildtime:20161212,hash:xxxxxxx

注意: 这里的extraInfo以key:value形式提供,多个以,分隔。

详细用法可以参考官方。

第二种用法,命令行工具使用方式

命令行工具使用方式,可参考

在这里插入图片描述
info 里面是渠道信息,output 是生成的渠道包,src_apk 放入已经打好的包,在终端中切换到当前文件夹,执行 ./buildChannels.sh,然后在 output 文件夹中就会生成所有渠道包。walle-cli-all.jar 可以在官网下载最新版。

加固后会获取不到渠道信息

使用 walle 生成的渠道包360加固后会获取不到渠道包, 其他的加固有没有这个问题没有试过。解决方案参考
先加固没签名的包,然后用buildtool中的apksigner签名(有同学反馈24不可以,25.0.0就可以了),然后用walle注入渠道。

相关issue: issue wiki/360加固

有热心的同学也帮忙整理了步骤: 支持Android7.0 Signature V2 Scheme 多渠道打包,并解决类似360加固后获取不到渠道信息 - 渠道统计失败的问题

另: Jay-Goo同学写了一个工具,专门修复类似360加固重签名和批量注入渠道,2秒搞定。支持全平台 https://github.com/Jay-Goo/ProtectedApkResignerForWalle

walle工具下载地址

上一篇 下一篇

猜你喜欢

热点阅读