android 渠道号_亲测:安卓打渠道包神器,1分钟出自动出100个渠道包
是美團開源的,個人覺得很好用,分享出來。
下面是官方地址:
https://github.com/Meituan-Dianping/walle
注意:
buildtoos最好選用27版本,因為新的buildtools是v3簽名,會導致apk無法安裝到安卓9手機上。
說明:
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.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")}配置項具體解釋:
- apkOutputFolder:指定渠道包的輸出路徑, 默認值為new File("${project.buildDir}/outputs/apk")
- apkFileNameFormat:定制渠道包的APK的文件名稱, 默認值為'${appName}-${buildType}-${channel}.apk'
- 可使用以下變量:
- channelFile:包含渠道配置信息的文件路徑。 具體內容格式詳見:渠道配置文件示例,支持使用#號添加注釋。
如何獲取渠道信息
在需要渠道等信息時可以通過下面代碼進行獲取
String channel = WalleChannelReader.getChannel(this.getApplicationContext());如何生成渠道包
生成渠道包的方式是和assemble${variantName}Channels指令結合,渠道包的生成目錄默認存放在 build/outputs/apk/,也可以通過walle閉包中的apkOutputFolder參數來指定輸出目錄
用法示例:
- 生成渠道包 ./gradlew clean assembleReleaseChannels
- 支持 productFlavors ./gradlew clean assembleMeituanReleaseChannels
更多用法
插入額外信息
channelFile只支持渠道寫入,如果想插入除渠道以外的其他信息,請在walle配置中使用configFile
walle { // 渠道&額外信息配置文件,與channelFile互斥configFile = new File("${project.getProjectDir()}/config.json")}configFile是包含渠道信息和額外信息的配置文件路徑。
配置文件采用json格式,支持為每個channel單獨配置額外的寫入信息。具體內容格式詳見:渠道&額外信息配置文件示例 。
注意:
- 此配置項與channelFile功能互斥,開發者在使用時選擇其一即可,兩者都存在時configFile優先執行。
- extraInfo 不要出現以channel為key的情況
而對應的渠道信息獲取方式如下:
ChannelInfo channelInfo= WalleChannelReader.getChannelInfo(this.getApplicationContext());if (channelInfo != null) { String channel = channelInfo.getChannel(); Map extraInfo = channelInfo.getExtraInfo();}// 或者也可以直接根據key獲取String value = WalleChannelReader.get(context, "buildtime");臨時生成某渠道包
我們推薦使用channelFile/configFile配置來生成渠道包,但有時也可能有臨時生成渠道包需求,這時可以使用:
- 生成單個渠道包: ./gradlew clean assembleReleaseChannels -PchannelList=meituan
- 生成多個渠道包: ./gradlew clean assembleReleaseChannels -PchannelList=meituan,dianping
- 生成渠道包&寫入額外信息:
- ./gradlew clean assembleReleaseChannels -PchannelList=meituan -PextraInfo=buildtime:20161212,hash:xxxxxxx
- 注意: 這里的extraInfo以key:value形式提供,多個以,分隔。
- 使用臨時channelFile生成渠道包: ./gradlew clean assembleReleaseChannels -PchannelFile=/Users/xx/Documents/channel
- 使用臨時configFile生成渠道包: ./gradlew clean assembleReleaseChannels -PconfigFile=/Users/xx/Documents/config.json
使用上述-P參數后,本次打包channelFile/configFile配置將會失效,其他配置仍然有效。 -PchannelList,-PchannelFile, -PconfigFile三者不可同時使用。
命令行工具使用方式
可以使用命令行工具來支持各類自定義的需求,具體使用方式詳見:Walle CLI 使用說明
總結
以上是生活随笔為你收集整理的android 渠道号_亲测:安卓打渠道包神器,1分钟出自动出100个渠道包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python opencv手册_教你用P
- 下一篇: ffmpeg builds by zer