准备工作
签署配置
release
然后你的app build.gradle里面就会出现以下代码!
signingConfigs {
sankuai {
storeFile file("keystore/meituan-debug.keystore")
storePassword "1234567"
keyAlias "meituan"
keyPassword "12345678"
}
}
Wall
Walle(瓦力):Android Signature V2 Scheme签名下的新一代渠道包打包神器
瓦力通过在Apk中的APK Signature Block区块添加自定义的渠道信息来生成渠道包,从而提高了渠道包生成效率,可以作为单机工具来使用,也可以部署在HTTP服务器上来实时处理渠道包Apk的升级网络请求。
Quick Start
为了方便大家的使用,我们提供了2种使用方式:
- Gradle插件方式,方便快速集成
- 命令行方式,最大化满足各种自定义需求
Gradle插件使用方式
配置build.gradle
在位于项目的根目录 build.gradle 文件中添加Walle Gradle插件的依赖, 如下:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.0.0'
}
}
并在当前App的 build.gradle 文件中apply这个插件,并添加上用于读取渠道号的AAR
apply plugin: 'walle'
dependencies {
compile 'com.meituan.android.walle:library:1.0.0'
}
配置插件
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")
}
如何生成渠道包
用法示例:
1.通过项目channel配置文件生成渠道包√
./gradlew clean assembleReleaseChannels
//必须配置渠道配置文件
//channelFile = new File(“${project.getProjectDir()}/channe”)
walle {
// 指定渠道包的输出路径
apkOutputFolder = new File("${project.buildDir}/outputs/channels");
// 定制渠道包的APK的文件名称
apkFileNameFormat = '${appName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';
//如果是通过项目channel配置文件生成渠道包 此渠道文件必须配置
//channelFile = new File("${project.getProjectDir()}/channel)
}
2.通过渠道配置文件(gradlew)来生成渠道包√
./gradlew clean assembleReleaseChannels -PchannelFile=channel
如果通过渠道配置文件来生成渠道包,渠道配置文件配不配置都无所谓,因为./gradlew clean assembleReleaseChannels -PchannelFile=channel -PchannelFile=channel 已经指定了渠道文件,注:这里指定的是项目根目录下的channle文件,不是app目录下的channle文件,这也是默认渠道配置路径,
即,
1:配置了channelFile = new File("${project.getProjectDir()}/channel)
,调用./gradlew clean assembleReleaseChannels -PchannelFile=channel 优先级别高于walle配置 channelFile = new File("${project.getProjectDir()}/channel)
,所以不会引用walle渠道配置指定目录!
2:walle 渠道文件可以不配置,默认就是通过渠道配置文件(gradlew)找到位于项目的根目录下的channle文件!
walle {
// 指定渠道包的输出路径
apkOutputFolder = new File("${project.buildDir}/outputs/channels");
// 定制渠道包的APK的文件名称
apkFileNameFormat = '${appName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';
//如果是通过项目channel配置文件生成渠道包 此渠道文件必须配置
//channelFile = new File("${project.getProjectDir()}/channel)
}
3:如果你有多个渠道比如:online , onlineTest, offline,那么./gradlew clean assembleReleaseChannels -PchannelFile=channel, 执行是无效的!
必须指定打生成的渠道,比如./gradlew clean assembleOnlineReleaseChannels -PchannelFile=channel
说了一堆废话,说白点方法2就是无视walle里面的渠道配置文件,就那么简单!
原理介绍
对该工具的原理感兴趣的同学,可以移步美团Android新一代渠道包生成工具进行了解。