亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

Android ProductFlavor的使用詳解

瀏覽:116日期:2022-09-18 09:49:38
目錄前言productFlavorsflavorDimensions多緯度前言

最近一直在學(xué)習(xí)Android Gradle 相關(guān)的知識點,今天剛好看到了 ProductFlavor 這節(jié),ProductFlavor 表示產(chǎn)品風(fēng)味,Google 相關(guān)的文檔可以看 Android developers ProductFlavor ,產(chǎn)品風(fēng)味這詞起的還是挺有意思的,乍看上去我一時半會也不理解這是干嘛的,如果說是用于區(qū)分打包的那么我 gradle 文件里的 buildTypes 不是就已經(jīng)夠用了嗎,所以我花了一點時間重新看了下,按照我的理解如果你只是中小型的項目不涉及區(qū)分不同地區(qū)用戶打不用的包的那么 ProductFlavor 基本上也沒什么用處,但如果你項目里要區(qū)分國內(nèi)版和國外版甚至還要根據(jù)用戶是否是VIP會員加上收費和免費的版本,這種情況下就會出現(xiàn)國內(nèi)收費、免費國外收費、免費的版本,在極端點,我收費和免費的版本在相同頁面上甚至顯示的UI布局和icon圖標資源都不一樣,這種情況又該怎么處理呢,ProductFlavor 的出現(xiàn)就非常友好的幫助我們開發(fā)者解決了上述的版本區(qū)分。

productFlavors

Android ProductFlavor的使用詳解

productFlavors 的用法很簡單,主要是用來多渠道打包使用,直接在 android 閉包下定義 productFlavors 就可以了,在我的例子中我的APP定位為收費和免費版本,所以我需要在 2 處定義我的“產(chǎn)品風(fēng)味”也就是我要打包的渠道(收費和免費版本的兩個不同APP的渠道),注意下在目前的AS中如果你僅僅只是定義了 代碼2 ,那么在構(gòu)建的時候必然會報 3 處的錯誤,沒有定義產(chǎn)品緯度,所以為了解決這個問題,我們在代碼1處定義了一個“是否付費 isPaying ”的緯度。

Android ProductFlavor的使用詳解

如圖,在我們定義好了是否付費的緯度以及付費和免費的產(chǎn)品風(fēng)味之后,你會發(fā)現(xiàn)現(xiàn)在構(gòu)建出來了4個構(gòu)建變體,也就是在free和charge風(fēng)味下各自構(gòu)建了debug和release的變體,現(xiàn)在我們有了兩個不同的風(fēng)味,如果我想安裝到手機上是兩個不同的APK又改怎么處理呢?首先我們的包名就不能相同,在free和charge閉包下定義:

productFlavors{ free{applicationId ’com.example.gradle.free’ } charge{applicationId ’com.example.gradle.charge’ }}

根據(jù)上面的配置最后在手機上跑的是兩個APK,這個我已經(jīng)驗證過了,盡管如此還是沒體現(xiàn)出差異化,我們接下來改變下代碼的邏輯,在他們的app名以及首頁修改下

Android ProductFlavor的使用詳解

看我們的紅框處,我已經(jīng)將他們的app的名稱全改掉了,怎么處理的呢?

productFlavors{ free{applicationId ’com.example.gradle.free’resValue 'string',’appName’,’免費版’ } charge{applicationId ’com.example.gradle.charge’resValue 'string',’appName’,’收費版’ }}

首先我還是修改了 productFlavors 中的代碼,定義了一個 resValue,這個參數(shù)你可以理解為在不同的風(fēng)味下定義標簽的意思,比如說我在代碼中分別為 free 和 charge 風(fēng)味定義了 resValue 標簽,那么在構(gòu)建他們變體的時候就可以引用到這個標簽

Android ProductFlavor的使用詳解

如圖,我還新定義了兩個文件夾“free”和“charge”,如果你想做差異化的話就必須根據(jù)產(chǎn)品風(fēng)味來定義文件夾,這里因為應(yīng)用的名稱是在清單文件里配置的,所以各自copy了一份,我反正理解的是既然是差異化那么從main里面將有差異的文件copy出來修改就可以了,當然了里面的包名,路徑之類的還是得要一致的,講到這其實大家也就明白了,如果你想在不同的APP頁面里做差異化,那么就按照這個套路來就可以了,所以“修改首頁(MainActivity)”的任務(wù)就交給大家了,自己動手體會下。

flavorDimensions多緯度

Android ProductFlavor的使用詳解

什么是多緯度,比說是否付費是一個緯度,國家是一個緯度,在上圖中我又定義了一個 nation 緯度,注意如果你定義了一個緯度那么必須要使用到它,在各個產(chǎn)品風(fēng)味下通過 dimension 來決定你的風(fēng)味是使用的哪一個緯度,free 和 charge使用了 isPaying ,china 和 france 使用了 nation,那么多緯度的作用也就是為了更加精細的區(qū)分你的APP,如 3 通過這種方式,我完全可以可以打包出不同國家的差異化APP,是不是很靈活呢,不過一般情況下也用不到那么精細,不然這個項目光是維護就很頭疼,好,到最后我們可以得出一個公式 【緯度1的產(chǎn)品風(fēng)味數(shù)量】 * 【緯度2的產(chǎn)品風(fēng)味數(shù)量】 * buildType數(shù)量 = 最終的APK變體數(shù)量。

以上就是Android ProductFlavor的使用詳解的詳細內(nèi)容,更多關(guān)于Android ProductFlavor的使用的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Android
相關(guān)文章:
主站蜘蛛池模板: 免费久草视频 | 亚洲精品一区二区三区第四页 | 久久黄色影片 | 欧美大片在线观看成人 | 免费看孕妇毛片全部播放 | 日韩经典一区 | 国产亚洲精品yxsp | 在线播放亚洲美女视频网站 | 日韩中文字幕免费观看 | 荡女妇边被c边呻吟久久 | 在线中文字幕精品第5页 | 久久久久久国产精品免费免 | 九九久久久久午夜精选 | 欧美亚洲国产精品久久 | 怡红院免费全部视频在线视频 | 日本在线观看不卡免费视频 | 亚洲一区二区三区免费在线观看 | 欧美日韩色黄大片在线视频 | 亚洲国产欧美在线成人aaaa | 欧美激情精品久久久久久久九九九 | 久操精品视频 | 免看一级一片一在线看 | 日本乱人伦片中文字幕三区 | 正在播真实出轨炮对白 | 欧美做爰野外在线视频观看 | 午夜国产亚洲精品一区 | 日本高清免费视频www | 欧美成人专区 | 国产欧美精品区一区二区三区 | 亚洲成人免费在线观看 | 成人免费视频网 | 千涩成人网 | 久久精品国产亚洲aa | 欧美中文字幕一区二区三区 | 色噜噜国产精品视频一区二区 | 伊人久久国产免费观看视频 | 国产自精品在线 | 久久国产成人亚洲精品影院老金 | 日韩视频在线观看一区 | 香蕉一区二区三区观 | 欧美第一网站 |