之前多渠道打包一直用的360加固寶,今年三月份360開(kāi)始收費(fèi)了;所以用了VasDolly做多渠道的替代方案; GitHub地址 https://github.com/Tencent/VasDolly
一:使用VasDolly的必備條件;
1:build:gradle:4.2.0以上,也就是說(shuō)你需要升級(jí)高版本的AndroidStudio;
二:接入流程
添加對(duì)VasDolly Plugin的依賴(lài)
在根工程的build.gradle中,添加對(duì)打包Plugin的依賴(lài):
dependencies {
classpath 'com.android.tools.build:gradle:4.2.2'
classpath 'com.tencent.vasdolly:plugin:3.0.6'
}
在主App工程的build.gradle中,添加對(duì)VasDolly Plugin的引用:
apply plugin: 'com.tencent.vasdolly'

app的build.gradle頂部
在主App工程的build.gradle中,添加讀取渠道信息的helper類(lèi)庫(kù)依賴(lài):
dependencies {
api 'com.tencent.vasdolly:helper:3.0.6'
}
三:配置渠道列表
1:在gradle.properties文件指定渠道文件名稱(chēng),該渠道文件必須位于根工程目錄下,一行一個(gè)渠道信息。
channel_file=app_channel.txt
2:在channel或者rebuildChannel屬性中通過(guò)channelFile屬性指定渠道文件,一行一個(gè)渠道信息。
channel{
//指定渠道文件
channelFile = file("app_channel.txt")
}
rebuildChannel{
//指定渠道文件
channelFile = file("app_channel.txt")
}
在app的build.gradle中配置(跟buildTypes同級(jí))
//VasDolly插件配置
//gradle channelDebug/channelRelease 編譯生成apk后,再根據(jù)生成的Apk生成渠道包
channel{
channelFile = file("app_channel.txt")
//多渠道包的輸出目錄,默認(rèn)為new File(project.buildDir,"channel")
outputDir = new File(project.buildDir,"channels")
//多渠道包的命名規(guī)則,默認(rèn)為:${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}-${buildTime}
apkNameFormat ='${appName}-${versionName}-${versionCode}-${flavorName}-${buildType}'
//快速模式:生成渠道包時(shí)不進(jìn)行校驗(yàn)(速度可以提升10倍以上,默認(rèn)為false)
fastMode = false
//buildTime的時(shí)間格式,默認(rèn)格式:yyyyMMdd-HHmmss
buildTimeDateFormat = 'yyyyMMdd-HH:mm:ss'
//低內(nèi)存模式(僅針對(duì)V2簽名,默認(rèn)為false):只把簽名塊、中央目錄和EOCD讀取到內(nèi)存,不把最大頭的內(nèi)容塊讀取到內(nèi)存,在手機(jī)上合成APK時(shí),可以使用該模式
lowMemory = false
}
// gradle rebuildChannel 配置此任務(wù)用于不希望重新構(gòu)建apk,直接根據(jù)指定的apk生成渠道包
rebuildChannel {
channelFile = file("app_channel.txt")
//指定的apk生成渠道包,文件名中如果有base將被替換為渠道名,否則渠道名將作為前綴
baseApk = new File(project.buildDir, "outputs/apk/debug/app-debug.apk")
//默認(rèn)為new File(project.buildDir, "rebuildChannel")
outputDir = new File(project.buildDir, "rebuildChannels")
//快速模式:生成渠道包時(shí)不進(jìn)行校驗(yàn)(速度可以提升10倍以上,默認(rèn)為false)
fastMode = false
//低內(nèi)存模式(僅針對(duì)V2簽名,默認(rèn)為false):只把簽名塊、中央目錄和EOCD讀取到內(nèi)存,不把最大頭的內(nèi)容塊讀取到內(nèi)存,在手機(jī)上合成APK時(shí),可以使用該模式
lowMemory = false
}
四:讀取渠道信息
String channel = ChannelReaderUtil.getChannel(getApplicationContext());
五:gradle命令:
兩種方式生成渠道包
1:直接生成
通過(guò)gradle channelDebug、gradle channelRelease命令分別生成Debug和Release的多渠道包。
2:根據(jù)已有包生成
通過(guò)gradle rebuildChannel命令生成多渠道包。
示例:

第一步

第二步

第三步,需要輸入命令
六:碰到的問(wèn)題;
項(xiàng)目中使用了productFlavors

productFlavors
會(huì)跟gradle channelDebug、gradle channelRelease產(chǎn)生沖突;
GitHub的issues

issues