1. 程式人生 > >AndroidStudio一次打多個包

AndroidStudio一次打多個包

功能背景:

因公司專案要求,每次打包都需要打包三個版本,兩個測試版本和一個線上的版本,


並且呼叫不同的baseURL,最開始的做法是每次打包一次就換一個baseURL,然後一個個打包,分別需要打包三次,如果編譯很慢會浪費了很多時間,還需要註釋掉不同的baseURL,於是想到應該如何一次性打包三個版本的apk並且呼叫不同的baseURL,如果有類似需求的,可以參照我下面自己實現的方式。

首先在 src 目錄下新建幾個自己需要打包對應名稱的包,比如我要打包如下三個版本, uat ,nduat,product,新建各自java資料夾,可以直接複製main檔案下的java包到各個新建目錄下,然後只新建和宣告自己需要類和對應常量(需一致)。

public class Constant {public static String BASE_URL = "http://www.*****";}

然後在主程式main需要的地方呼叫對應的常量baseUrl,實際開發中是呼叫api去請求資料


在程式碼中呼叫的是當前選擇對應的productFlavors版本的程式碼,比如當前選擇的是nduat版,其他版本會顯示下面好像報錯的紅圈,編譯正常,當我們打包成功後,它會呼叫對應目錄下面常量


然後簽名打包,配置gradle檔案,這些按照基本流程走,按照下面基本的配置可以得到打包得到三個對應的版本,id 根據你自己的需要設定是否可以同時在一個手機上執行多個自己的app。







以上過程完成了開始提到的需求,具體實現程式碼起來很簡單,以此類推,資原始檔等也可以通過以上方式。

gradle中宣告變數:

buildConfigField BOOLEAN, BUG, TRUE // 這句話是設定了一個boolean型別的變數BUG,並且賦值為true
buildConfigField STRING, URL_API, "\"http://xx.xx.xx.xx:8080\"" // 設定一個String型別變數URL_API,並且將api地址賦給它 versionNameSuffix 

引用再build中定義的值:

在xml中引用

        <meta-data
            android:name="TD_CHANNEL_ID"
            android:value="${TD_CHANNEL_VALUE}" />

 <category android:name="${applicationId}" />

在java中引用

public static boolean isDebug = BuildConfig.BUG; // true 除錯。false:上線
public static final String URL = BuildConfig.URL_API; //  伺服器地址

相關推薦

AndroidStudio

功能背景: 因公司專案要求,每次打包都需要打包三個版本,兩個測試版本和一個線上的版本, 並且呼叫不同的baseURL,最開始的做法是每次打包一次就換一個baseURL,然後一個個打包,分別需要打包三次,如果編譯很慢會浪費了很多時間,還需要註釋掉不同的baseUR

Ubuntu系統編寫shell指令碼程式安裝軟體

#!/bin/sh sudo apt-get install gcc g++ python -y sudo apt-get install gcc g++ python python-dev -y sudo apt-get install mercurial -y sudo apt-get install b

下載文件

itl cnblogs script log logs html 文件 download nload 一次下載多個文件 JavaScript多文件下載一次下載多個文件

(轉)Spring文件上傳,包括選中文件

bmi while .html span cto input 獲取文件 dex asn 背景: http://www.cnblogs.com/lixuwu/p/8495275.html已經實現了單文件的上傳和下載,多文件的上傳是另一種情景,這裏記錄下來 實現過程

下載檔案的解決思路-JS

一次下載多個檔案的解決思路(iframe) - Eric 真實經歷 最近開發專案需要做檔案下載,想想挺簡單的,之前也做過,後臺提供下載介面,前端使用window.location.href就行了唄。不過開發的時候發現,有些檔案有附屬檔案,點選 下載按鈕 需要下載兩個檔案,而且不能使用壓縮包的形式。想想

maven 打包maven專案

maven 一次打包多個maven專案。 使用場景 一個專案由多個子專案組成,每個子專案也是一個maven專案。每次打包需要打包每個子專案,很麻煩,其實可以通過配置一個頂級的pom.xml檔案來解決這個問題,只需要打包頂層的maven專案,即可。如果一個專案有多個子專案的pom.

List集合刪除元素

JAVA中迴圈遍歷list有三種方式:   for迴圈、增強for迴圈(也就是常說的foreach迴圈)、iterator遍歷。 1、for迴圈遍歷list for(int i=0;i<list.size();i++){ if(list.get(i).equals

WEB版選擇檔案進行批量上傳(swfupload)的解決方案

功能完全支援ie和firefox瀏覽器!       一般的WEB方式檔案上傳只能使用FileUpload控制元件進行一個檔案一個檔案的進行上傳,就算是批量上傳,也要把檔案一個一個的新增到頁面,無法如windows程式一樣,一次選擇多個檔案進行批量上傳。這樣在某些應用上就

Android6.0及以上版本請求許可權的處理方式

final private int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124; private void insertDummyContactWrapper() { List<Stri

Python列表刪除重複元素

(1)刪除列表中所有'a': l = [0,1,'a',2,'a','a',3,4] l = [x for x in l if x != 'a'] print(l) >>[0,1,2,3,4] (2)刪除列表中所有'a'和‘b’: delete_list = ['a','b'

Android 仿PC端QQ自由截圖,可支援區域

仿PC端QQ截圖,可任意截圖,這裡只做了矩形這一種形狀,可同時支援擷取多個區域,支援撤銷上次截圖,重新擷取。 實現原理: 自定義SurfaceView,在SurfaceView上繪製具有一個可拉伸,移動的矩形框,當點選截圖按鈕後,計算矩形

使用JDBC插入表、條記錄

程式碼如下: public static void insertBatch() { int count[]; int count1[]; Boolean isinsert = false; Connection con = null; PreparedS

Android 6.0動態申請許可權(申請

Android一次申請多個動態許可權 昨天做一個錄音功能的程式,發現在開啟Mic的時候發生了程式崩潰,但是錯誤提示裡面居然沒有提示許可權禁止。  解決的方法有:1.手動去選擇“應用”–>“程式”–>找到那個程式新增許可權,後面程式就可以正常使用了 2.設定動態請

訓練得到模型做整合的方法

參考論文 SNAPSHOT ENSEMBLES: TRAIN 1, GET M FOR FREE 解決的問題 多個分類器整合可以獲得超過單個分類器的效果,但整合分類器就要求有多個分類器,在訓練速度和測試速度方面不佔優勢。本文提出的方法可以提高整合學習的訓練速度,通過一次訓練,

Python中讀取

Python 2裡面讀取輸入的函式是raw_input(), Python 3的是input(),讀入一個值後回車讀取輸入就退出了,想要一次讀取多個輸入,可以像下面這樣: a, b = raw_inp

redis列表型別list如何返回值並刪除這些值

redis的列表型別list是一個常用的資料型別,但是這個型別並不支援一次性返回多個值並刪除這些已經返回的值。 其實我們可以通過redis的事務,來完成這個一次性返回多個值並刪除這些已經返回的值的需求。 redis中的事務就是一組命令的集合,這些命令要麼全部執行,要麼全都

如何用shell讀取檔案內容

在寫shell指令碼的時候,因為shell本身的資料結構很簡單,連二維陣列都不能支援,所以配置檔案的形式也不能過於複雜(個人看法,有什麼意見請說),因此需要寫多個配置檔案來滿足業務。 通常情況下,我們用shell讀取一個配置檔案是這樣寫的: while re

WEB版選擇檔案進行批量上傳(Plupload)的解決方案

/// <summary> /// uploadFiles 的摘要說明 /// </summary> public class uploadFiles : IHttpHandler { public void Process

替換詞,批量替換字串(使用不了的解決辦法)

三天前上CSDN,發現有人回覆批量替換多個詞的工具使用不了。下載下來試用了一下,確實報錯,這兩天打算做個網頁版本的,排版佈局還沒弄好。 上貼回覆以前工具使用不了的解決辦法:下載32位的jre,然後配置JAVA_HOME。 2、下載完畢解壓後,假如路徑(自

如何銷燬Activity,和如何銷燬activity

public class ActivityCollector { public static List<Activity> activities = new ArrayList<Activity>(); public static void addActivity(