多渠道打包VasDolly接入指南

之前多渠道打包一直用的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

經(jīng)過(guò)測(cè)試是可以使用根據(jù)已有包生成多渠道包的;只需要先正常打一個(gè)包,在調(diào)用gradle rebuildChannel命令生成多渠道包。注意baseApk 的地址要填寫(xiě)正確;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容