最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android多渠道打包神器ProductFlavor詳解

 更新時(shí)間:2022年07月21日 11:55:21   作者:撩得Android一次心動(dòng)  
最近一直在學(xué)習(xí)Android Gradle 相關(guān)的知識(shí)點(diǎn),今天剛好看到了 ProductFlavor 這節(jié),ProductFlavor 的出現(xiàn)非常友好的幫助我們開發(fā)者解決了版本區(qū)分的問題

一.什么是多渠道打包

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

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

1.多版本

基于buildTypes

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

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

2.多環(huán)境

基于productFlavors

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

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

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

3.多渠道

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

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

為什么不直接使用productFlavors來打包多渠道?因?yàn)閜roductFlavors打多渠道包太慢了,打30個(gè)包差不多十幾分鐘,無法忍受!

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

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

1.ProductFlavor

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

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

1.首先項(xiàng)目有兩層build.gradle文件:

  • build.gradle(本項(xiàng)目名稱) 最外層的build.gradle文件
  • build.gradle(:app) app目錄下build.gradle文件

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

使用Gradle插件:

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

plugins {
    id 'com.android.application'
}

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

apply plugin:'com.android.application'

就這樣我們就可以在 app目錄下build.gradle文件中的android節(jié)點(diǎn)使用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{
            }
        }

訪問的文件如圖所示:

他會(huì)生成多少個(gè)“變種”呢???

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

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

這個(gè)按字母排序的。

1.2 如何是使用ProductFlavor加載apk包

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

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

1.3 該如何獲取不同渠道包的信息

</activity>
        <meta-data android:name="CHANNEL_VALUE" android:value="${channel1}"/>
    </application>
</manifest>

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

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

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

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

2.多渠道打包插件

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

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

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

到此這篇關(guān)于Android多渠道打包神器ProductFlavor詳解的文章就介紹到這了,更多相關(guān)Android ProductFlavor內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

定州市| 宁明县| 武威市| 桑日县| 吉林省| 湘潭县| 和平县| 沙坪坝区| 彰化县| 万全县| 尚义县| 灯塔市| 秀山| 筠连县| 金堂县| 安乡县| 登封市| 瓦房店市| 彭水| 天柱县| 偃师市| 左权县| 比如县| 万载县| 西青区| 隆安县| 甘孜| 抚松县| 神农架林区| 黔西县| 孙吴县| 旬阳县| 友谊县| 东莞市| 贞丰县| 平罗县| 绥滨县| 凌海市| 万全县| 宝坻区| 家居|