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

Android多渠道打包配置方案

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

背景

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

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

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

Gradle腳本和Manifest文件配置

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

其中flavorDimensions和productFlavors中的維度名稱需要一一對應。隨便寫一個"default"即可。

defaultConfig {

    xxxx = xxxx

    flavorDimensions.add("default")  
}

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

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

 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"
        }
}

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

manifestPlaceholders["CHANNEL_VALUE"] = "cheetah_channel"

來為其賦值。

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

打包時,可以通過判斷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"
                }
            }
        }
    }

代碼調用

全局性的打包配置完畢后,我們如何在代碼里去使用區(qū)分不同渠道呢。

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

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")
    }
}

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

相關文章

  • Kotlin by lazy關鍵字深入探究實現(xiàn)原理

    Kotlin by lazy關鍵字深入探究實現(xiàn)原理

    這篇文章主要介紹了by lazy,在kotlin中使用是很常見的,用于實現(xiàn)懶加載某個數(shù)據(jù)。而這兩個單詞不是一體的,其中by是kotlin中的關鍵字,用于實現(xiàn)委托;lazy是一個方法,他的返回值是委托的具體對象
    2022-11-11
  • Android倒計時功能的實現(xiàn)代碼

    Android倒計時功能的實現(xiàn)代碼

    這篇文章主要介紹了Android倒計時功能的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 解決android studio 3.0 加載項目過慢問題--maven倉庫選擇

    解決android studio 3.0 加載項目過慢問題--maven倉庫選擇

    這篇文章主要介紹了android studio 3.0 加載項目過慢問題解決方案---maven倉庫選擇,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • Android Handler主線程和一般線程通信的應用分析

    Android Handler主線程和一般線程通信的應用分析

    本篇文章小編為大家介紹,Android Handler主線程和一般線程通信的應用分析。需要的朋友參考下
    2013-04-04
  • Android 解決sqlite無法創(chuàng)建新表的問題

    Android 解決sqlite無法創(chuàng)建新表的問題

    這篇文章主要介紹了Android 解決sqlite無法創(chuàng)建新表的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Android使alertDialog.builder不會點擊外面和按返回鍵消失的方法

    Android使alertDialog.builder不會點擊外面和按返回鍵消失的方法

    本篇文章主要介紹了Android使alertDialog.builder不會點擊外面和按返回鍵消失的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • Android響應事件onClick方法的五種實現(xiàn)方式小結

    Android響應事件onClick方法的五種實現(xiàn)方式小結

    本篇文章主要介紹了Android響應onClick方法的五種實現(xiàn)方式小結,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Flutter實現(xiàn)切換應用時隱藏應用預覽

    Flutter實現(xiàn)切換應用時隱藏應用預覽

    如果您要顯示敏感數(shù)據(jù),例如錢包金額,或者只是當?shù)卿洷韱物@示插入的密碼清晰時,當您不在應用程序中時,您必須隱藏敏感數(shù)據(jù)。本文將利用Flutter實現(xiàn)切換應用時隱藏應用預覽,需要的可以參考一下
    2022-06-06
  • Android實現(xiàn)視頻的畫中畫功能

    Android實現(xiàn)視頻的畫中畫功能

    手機觀看視頻的時候,有些工作需要溝通,或者參與搶購活動,同時為了不錯過視頻精彩片段,會選擇畫中畫模式,這篇文章主要為大家詳細介紹了Android實現(xiàn)視頻的畫中畫功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Flutter實現(xiàn)圖片濾鏡效果

    Flutter實現(xiàn)圖片濾鏡效果

    這篇文章主要介紹了Flutter如何實現(xiàn)圖片濾鏡效果,幫助大家更好的理解和學習使用Flutter,感興趣的朋友可以了解下
    2021-04-04

最新評論

墨脱县| 贺兰县| 平武县| 油尖旺区| 巢湖市| 交城县| 鄂托克旗| 平谷区| 乐业县| 建阳市| 嘉峪关市| 油尖旺区| 南岸区| 宁国市| 肇源县| 永平县| 淮南市| 清镇市| 博客| 福建省| 凯里市| 大厂| 乌兰察布市| 泰安市| 巩留县| 比如县| 新源县| 军事| 宁城县| 通道| 会泽县| 来凤县| 鸡西市| 木里| 沐川县| 台中市| 西畴县| 易门县| 崇义县| 永定县| 修文县|