一、需求背景
10年積累的成都做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有康縣免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
實(shí)際項(xiàng)目開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)遇到這樣的場(chǎng)景:一個(gè)項(xiàng)目要根據(jù)需要打包成多個(gè)存在差異的版本,比如對(duì)外版本、對(duì)內(nèi)版本,或者開(kāi)發(fā)版本、測(cè)試版本、線上版本等等……那么如何通過(guò)維護(hù)一套代碼的前提下實(shí)現(xiàn)打包多版本的需求呢?在Android Studio中我們可以使用productFlavors來(lái)實(shí)現(xiàn)這樣的需求。
二、創(chuàng)建差異化版本目錄結(jié)構(gòu)
根據(jù)版本的差異化在src目錄下創(chuàng)建對(duì)應(yīng)的java文件夾,如下圖:
創(chuàng)建external與internal版本,將版本差異化的代碼文件放在這2個(gè)目錄對(duì)應(yīng)的文件夾下,具體的目錄層次同main下面的一樣即可;
三、配置gradle文件
在moudle的gradle配置文件中增加如下配置:
android { …… productFlavors { internal { manifestPlaceholders = [app_label:"對(duì)內(nèi)app"] applicationId "com.ad.demo.internal" } external { manifestPlaceholders = [app_label:"對(duì)外app"] applicationId "com.ad.demo.external" } } }
四、在代碼中判斷版本
如果有些邏輯需要在代碼中判斷版本,可以通過(guò)BuildConfig.FLAVOR去獲取當(dāng)前選擇的是什么版本值:
if(BuildConfig.FLAVOR.equals("external")){ textView.setText(getResources().getString(R.string.my_app_name) + "對(duì)外應(yīng)用"); }
五、按版本打包
簽名打包的時(shí)候,選擇對(duì)應(yīng)的版本即可