准備工作
簽署配置
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這個插件,並添加上用於讀取渠道號的AARapply 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)
}
說了一堆廢話,說白點方法2就是無視walle里面的渠道配置文件,就那么簡單!
原理介紹
對該工具的原理感興趣的同學,可以移步美團Android新一代渠道包生成工具進行了解。