欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android多渠道打包配置方案

 更新時(shí)間:2024年06月06日 08:22:51   作者:Stephen10086  
多渠道打包,顧名思義就是用來區(qū)分同一個(gè)軟件,在不同渠道上的釋放版本,目前我們有需求是要一套軟件代碼庫多個(gè)項(xiàng)目共同使用,針對(duì)不同的項(xiàng)目打包不同的渠道apk,現(xiàn)學(xué)記錄一下,需要的朋友跟著小編一起來學(xué)習(xí)吧

背景

多渠道打包,顧名思義就是用來區(qū)分同一個(gè)軟件,在不同渠道上的釋放版本。

這個(gè)手機(jī)上大型app幾乎是必配置的一個(gè)項(xiàng),給不同型號(hào)的手機(jī)所用的apk會(huì)做一些細(xì)微的區(qū)別。像筆者使用酷安社區(qū)比較多,在官網(wǎng)下載的酷安apk界面頂部有軟件管理功能,在其他手機(jī)廠的應(yīng)用商店里下載的酷安就沒有這個(gè)功能。

目前我們有需求是要一套軟件代碼庫多個(gè)項(xiàng)目共同使用,針對(duì)不同的項(xiàng)目打包不同的渠道apk,現(xiàn)學(xué)記錄一下。

Gradle腳本和Manifest文件配置

不同渠道的apk既然要做細(xì)微的功能上的區(qū)分,就需要在代碼里能拿到一個(gè)類似鍵值對(duì)的標(biāo)志位。并且能夠全局調(diào)用。首先我們需要在app級(jí)的gradle文件里配置不同的channel名稱。

其中flavorDimensions和productFlavors中的維度名稱需要一一對(duì)應(yīng)。隨便寫一個(gè)"default"即可。

defaultConfig {

    xxxx = xxxx

    flavorDimensions.add("default")  
}

gradle.kts語法與Groovy略有不同,要添加自己配置的東西一般是使用create,register之類的關(guān)鍵字,不熟悉配置的可以先試試。

不同渠道包的域里,我們可以區(qū)分很多參數(shù)值,像這里我是配置了不同渠道使用不同平臺(tái)的簽名。

 productFlavors {
        create("cheetah") {
            dimension = "default"
            signingConfig = signingConfigs.getByName("cheetah")
            manifestPlaceholders["CHANNEL_VALUE"] = "cheetah_channel"
        }
        create("redfin") {
            dimension = "default"
            signingConfig = signingConfigs.getByName("aaos")
            manifestPlaceholders["CHANNEL_VALUE"] = "redfin_channel"
        }
}

為了可以設(shè)置成自己想要的鍵值對(duì),建議在Manifest清單文件里設(shè)置一組元數(shù)據(jù),在打包時(shí)讓Gradle去賦值它。結(jié)合上下兩段代碼,我們?cè)贛anifest里的一組元數(shù)據(jù),key設(shè)為CHANNEL,value為引用型的變量CHANNEL_VALUE,在Gradle渠道配置里,我們使用:

manifestPlaceholders["CHANNEL_VALUE"] = "cheetah_channel"

來為其賦值。

   <meta-data
            android:name="CHANNEL"
            android:value="${CHANNEL_VALUE}" />

打包時(shí),可以通過判斷flavor的名稱,來輸出不同的apk名字。

    android.applicationVariants.configureEach {
        outputs.all {
            if (this is com.android.build.gradle.internal.api.ApkVariantOutputImpl) {
                if (flavorName == "redfin") {
                    this.outputFileName = "RedfinChannel_V${versionName}.apk"
                } else if (flavorName == "cheetah") {
                    this.outputFileName = "CheetahChannel_V${versionName}.apk"
                }
            }
        }
    }

代碼調(diào)用

全局性的打包配置完畢后,我們?nèi)绾卧诖a里去使用區(qū)分不同渠道呢。

這里也有兩種方法來獲取,一種是直接拿取Gradle腳本里創(chuàng)建時(shí)的渠道名,直接通過BuildConfig類的FLAVOR字段來獲?。灰环N是拿取我們?cè)贛anifest里設(shè)置的元數(shù)據(jù)的value值,操作稍復(fù)雜一些。具體代碼如下:

object FlavorConfig {

    const val REDFIN = "redfin"
    const val CHEETAH = "cheetah"

    private var manifestMetaData = ""
    private var gradleData = ""

    init {
        val appInfo = appContext.packageManager.getApplicationInfo(
            appContext.packageName,
            PackageManager.GET_META_DATA
        )
        manifestMetaData = appInfo.metaData.getString("CHANNEL") as String
        gradleData = BuildConfig.FLAVOR
    }

    fun getMetaDataOne() = manifestMetaData.apply {
        infoLog("metaData value: $this")
    }

    fun getMeatDataTwo() = gradleData.apply {
        infoLog("gradle metaData value: $this")
    }
}

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

相關(guān)文章

  • Android開發(fā)多手指觸控事件處理

    Android開發(fā)多手指觸控事件處理

    這篇文章主要為大家介紹了Android開發(fā)多手指觸控事件處理教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Android動(dòng)態(tài)人臉檢測(cè)的示例代碼(臉數(shù)可調(diào))

    Android動(dòng)態(tài)人臉檢測(cè)的示例代碼(臉數(shù)可調(diào))

    本篇文章主要介紹了Android動(dòng)態(tài)人臉檢測(cè)的示例代碼(臉數(shù)可調(diào)),具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • Android實(shí)用控件自定義逼真相機(jī)光圈View

    Android實(shí)用控件自定義逼真相機(jī)光圈View

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)用控件自定義逼真相機(jī)光圈,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android系統(tǒng)服務(wù)概覽

    Android系統(tǒng)服務(wù)概覽

    這篇文章介紹了Android系統(tǒng)服務(wù),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Win10下android studio開發(fā)環(huán)境配置圖文教程

    Win10下android studio開發(fā)環(huán)境配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了Win10下android studio開發(fā)環(huán)境配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android編程中延后處理事件的方法小結(jié)

    Android編程中延后處理事件的方法小結(jié)

    這篇文章主要介紹了Android編程中延后處理事件的方法,總結(jié)分析了Handler和TimerTask相結(jié)合以及使用postDelayed實(shí)現(xiàn)延后處理事件的相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • Android對(duì)稱加密與非對(duì)稱加密

    Android對(duì)稱加密與非對(duì)稱加密

    這篇文章主要為大家詳細(xì)介紹了Android對(duì)稱加密與非對(duì)稱加密,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android通知欄增加快捷開關(guān)的功能實(shí)現(xiàn)教程

    Android通知欄增加快捷開關(guān)的功能實(shí)現(xiàn)教程

    對(duì)于Android來說其中一項(xiàng)很方便的操作便是下拉菜單,下拉菜單欄可以快捷打開某項(xiàng)設(shè)置,這篇文章主要給大家介紹了關(guān)于Android通知欄增加快捷開關(guān)的功能實(shí)現(xiàn),需要的朋友可以參考下
    2023-01-01
  • 詳解Android中Service AIDL的使用

    詳解Android中Service AIDL的使用

    作為一名Android開發(fā)人員,如果沒聽過Service,那就有點(diǎn)說不過去了啊,Service是Android四大組件之一,它是不依賴于用戶界面的,就是因?yàn)镾ervice不依賴與用戶界面,所以我們常常用于進(jìn)行一些耗時(shí)的操作,比如:下載數(shù)據(jù)等;本文將詳細(xì)介紹Android中Service AIDL的使用。
    2021-06-06
  • Android實(shí)現(xiàn)炫酷輪播圖效果

    Android實(shí)現(xiàn)炫酷輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)炫酷輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評(píng)論