溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android多渠道打包神器ProductFlavor怎么使用

發(fā)布時間:2022-08-17 09:39:19 來源:億速云 閱讀:186 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“Android多渠道打包神器ProductFlavor怎么使用”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Android多渠道打包神器ProductFlavor怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

    一.什么是多渠道打包

      在不同的應(yīng)用市場可能有不同的統(tǒng)計需求,需要為每個應(yīng)用市場發(fā)布一個安裝包,這里就引出了Android的多渠道打包。在安裝包中添加不同的標(biāo)識,以此區(qū)分各個渠道,方便統(tǒng)計app在市場的各種下載量、用戶數(shù)等關(guān)鍵數(shù)據(jù)。

    多渠道打包的原理就是為我們每個平臺或者市場發(fā)布的apk指定一個唯一的標(biāo)識符。通過這個標(biāo)識符就可以知道被下載的apk是在哪個平臺市場下載的。

    1.多版本

    基于buildTypes

    (1) debug:調(diào)試版本,無混淆

    (2) release:發(fā)布版本,有混淆、壓縮

    2.多環(huán)境

    基于productFlavors

    (1)develop:開發(fā)環(huán)境,開發(fā)和自測時使用

    (2)check:測試環(huán)境,克隆一份生產(chǎn)環(huán)境的配置,在這里測試通過后,再發(fā)布到生產(chǎn)環(huán)境。之所以沒命名為test是因為在gradle編譯時:ProductFlavornamescannotstartwith'test'

    (3)product:生產(chǎn)環(huán)境,正式提供服務(wù)的。

    3.多渠道

    基于Android新的應(yīng)用簽名方案APKSignatureSchemev2中的APKSigningBlock區(qū)塊

    我這里使用的是美團(tuán)封裝的Walle庫。使用Walle庫請確保你的AndroidGradle插件版本在2.2.0以上。

    為什么不直接使用productFlavors來打包多渠道?因為productFlavors打多渠道包太慢了,打30個包差不多十幾分鐘,無法忍受!

    為什么不使用美團(tuán)之前基于META-INF進(jìn)行渠道標(biāo)識的方案?因為Android7.0之后的這種黑科技已經(jīng)失效了!

    二.多渠道打包的方式(ProductFlavor&&多渠道打包插件)

    1.ProductFlavor

    Android基于 Gradle開發(fā)的一個插件里面的產(chǎn)品配置構(gòu)建“變種”制作渠道包。

    Gradle開發(fā)的插件是哪里來的???

    1.首先項目有兩層build.gradle文件:

    • build.gradle(本項目名稱) 最外層的build.gradle文件

    • build.gradle(:app) app目錄下build.gradle文件

    在頂層build.gradle文件中添加依賴

    Android多渠道打包神器ProductFlavor怎么使用

    使用Gradle插件:

    Android多渠道打包神器ProductFlavor怎么使用

    上面是導(dǎo)入多個插件使用plugins;

    plugins {
        id 'com.android.application'
    }

    導(dǎo)入單個可以使用

    apply plugin:'com.android.application'

    就這樣我們就可以在 app目錄下build.gradle文件中的android節(jié)點使用ProductFlavor。

    1.1 如何是使用ProductFlavor
        flavorDimensions "default"
        //方式1:(適用于多數(shù)據(jù))
        //讀取channel.txt渠道文件 創(chuàng)建flavor
        file('channel.txt').readLines().each {
            channel->
                productFlavors.create(channel,{
                    dimension "default"
                    //替換AndroidManifest中的值
                    manifestPlaceholders=[channel1:channel]
                })
        }
        //方式2:(比較常用:適用于少量)
        productFlavors{
                ywj{
                }
                wyw{
                }
            }

    訪問的文件如圖所示:

    Android多渠道打包神器ProductFlavor怎么使用

    他會生成多少個“變種”呢???

    是根據(jù)你的productFlavors中的個數(shù)與buildTypes中的類型個數(shù)(一般是release+debug)

    Android多渠道打包神器ProductFlavor怎么使用

    我這里沒有寫debug但是下面生成了對應(yīng)的“變種”:注意 buildType 類型的debug是默認(rèn)的,不寫也會默認(rèn)存在。

    這個按字母排序的。

    Android多渠道打包神器ProductFlavor怎么使用

    1.2 如何是使用ProductFlavor加載apk包

    使用Gradle工具欄下的Tasks中的build中的工具加載

    Android多渠道打包神器ProductFlavor怎么使用

    點擊assembleRelesase試試水,看看發(fā)生了什么?

    Android多渠道打包神器ProductFlavor怎么使用

    1.3 該如何獲取不同渠道包的信息
    </activity>
            <meta-data android:name="CHANNEL_VALUE" android:value="${channel1}"/>
        </application>
    </manifest>

    再不同的apk包中可以訪問不同的信息。關(guān)于怎么訪問AndroidManifest.xml里的數(shù)據(jù)會在以后進(jìn)行學(xué)習(xí)?。?!

    1.4 使用ProductFlavor加載apk包的優(yōu)缺點

    優(yōu)點:官方,可配置性高

    缺點:每個渠道包需要執(zhí)行完整的構(gòu)建流程,非常的慢?。?!

    2.多渠道打包插件

    這個方法很好的彌補(bǔ)了上一個打包方式的缺點。此時要多加一個依賴。底下目前展示的第二個依賴不可用,不過不要緊。你可以使用美團(tuán)(walle)、騰訊(VasDolly)...等的多渠道打包插件

    Android多渠道打包神器ProductFlavor怎么使用

    //引入插件
    apply plugin: 'com.enjoy.channel'
    channel{
        //基準(zhǔn)包
        baseApk "${buildDir}/outputs/apk/release/app-release.apk"
        //輸出目錄
        outDir "${buildDir}/outputs/channel"
        //渠道信息
        channelFile "${projectDir}/channel.txt"
    }

    Android多渠道打包神器ProductFlavor怎么使用

    Android多渠道打包神器ProductFlavor怎么使用

    如圖所示:根據(jù)上面設(shè)置的路徑輸出。并且生成一個基準(zhǔn)包后,輸出不同渠道包的速度變快了許多。當(dāng)你再在channel.txt文件中再多加些數(shù)據(jù),一樣也會很快的輸出。

    讀到這里,這篇“Android多渠道打包神器ProductFlavor怎么使用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI