Android動態(tài)打包+傳參方法

需求背景

通常我們的應用都會有開發(fā)環(huán)境(也可以理解為debug環(huán)境)、測試環(huán)境、預發(fā)環(huán)境、正式環(huán)境區(qū)分,我想要不改代碼就可以打出我想要環(huán)境的包。比如我現(xiàn)在分別想要一個測試環(huán)境的包和一個線上環(huán)境的包,但是我又不想改代碼

每次發(fā)布的時候發(fā)現(xiàn)版本號和版本名忘記改了

我想要隨時指定一個目錄,將打包好的文件放在這里面

我想要在打包時可以自定義安裝包的文件名

我想要每次打包的時候可以隨意打各個環(huán)境的包


解決辦法

很簡單,如果你不想改代碼又想要得到不同環(huán)境的包,那當然是使用Gradle的命令,前面說過Gradle命令后面可以加上Task的name直接執(zhí)行Task,那我們可以自己定義我們需要的Task,讓不同的Task去做我們想要做的事不就解決問題了嗎。

以下以一個demo舉例打包時傳入?yún)?shù)動態(tài)生成apk安裝包(MAC環(huán)境)

也不難,傳參,需要什么就傳入什么,這樣就解決了動態(tài)指定的問題了。


步驟

1.使用android studio構建一個工程,雙擊進入Gradle Scripts 中的build.gradle?

代碼片段

2.加入常量 def API_SCM_NAME ="debug" ?這里可以附一個默認值

代碼片段-加入常量

3.配置defaultConfig 這里說明一下

project.hasProperty("key")方法用來接收傳入?yún)?shù),這里用了一個三目運算,如果傳入?yún)?shù)VERSION_NAME有參數(shù)則使用傳入?yún)?shù),如果沒有傳入?yún)?shù)則使用默認值“debug”

buildConfigField(類型,鍵,值)方法用來給BuildConfig這個類中加入常量API_HOST,以供代碼中調(diào)用,注意:這里的字符串需要在里面加入引號,用轉義符轉義,因為Groovy會直接把最外層引號內(nèi)的值賦值給生成的自定義變量,如果不加,賦值后的String字符串就會沒有引號,導致編譯出錯。

代碼片段

4.在代碼中引用調(diào)用API_HOST常量;聲明一個LOGIN_URL來存放BuildConfig.API_HOST

代碼片段

5.配置簽名

代碼片段

6.動態(tài)生成APK包名

代碼片段

7.打包命令:

gradle clean assemblerelease -PVERSION_NAME=www.baidu.com

在命令行里面執(zhí)行這個命令就可以打出所有的Beta包了(前提是已經(jīng)安裝好Gradle,并配置好Gradle的環(huán)境變量,或者使用IDE里面的terminal,在項項目目錄下使用gradlew命令),其中assembleBeta 可以根據(jù)自己需求替換成其他的task名字。

傳參就是在后面加上 -P參數(shù),-P后面再加上要傳入的鍵值對,中間用=號連接,需要什么參數(shù)就傳什么參數(shù),如果有其他需要也可以自定義加入。

完結~

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,745評論 25 709
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,253評論 6 342
  • 參考資料:http://gold.xitu.io/post/580c85768ac247005b5472f9htt...
    zhaoyubetter閱讀 11,233評論 0 6
  • 不作就不會死。真正經(jīng)歷了才明白這句話的深刻內(nèi)涵,但已傷痕累累、淚流滿面。每個人都希望自己是那個受老天眷顧的幸運兒,...
    流漠雨閱讀 575評論 0 1

友情鏈接更多精彩內(nèi)容