Android打包之配置構建變體
宣告依賴項
下面的示例可以在 app/
模組的 build.gradle
檔案中宣告三種不同型別的直接依賴項:
android {...}
...
dependencies {
// The 'compile' configuration tells Gradle to add the dependency to the
// compilation classpath and include it in the final package.
// Dependency on the "mylibrary" module from this project
compile project(":mylibrary")
// Remote binary dependency
compile 'com.android.support:appcompat-v7:27.1.0'
// Local binary dependency
compile fileTree(dir: 'libs', include: ['*.jar'])
}
下面逐一介紹了每種直接依賴項。
-
模組依賴項
compile project(':mylibrary')
行宣告瞭一個名為“mylibrary”的本地 Android 庫模組作為依賴項,並要求構建系統在構建應用時編譯幷包含該本地模組。 -
遠端二進位制依賴項
compile 'com.android.support:appcompat-v7:27.1.0'
行會通過指定其 JCenter 座標,針對 Android 支援庫的 27.1.0 版本宣告一個依賴項。預設情況下,Android Studio 會將專案配置為使用頂級構建檔案中的 JCenter 儲存區。當您將專案與構建配置檔案同步時,Gradle 會自動從 JCenter 中抽取依賴項。或者,您也可以通過使用 SDK 管理器下載和安裝特定的依賴項。 -
本地二進位制依賴項
compile fileTree(dir: 'libs', include: ['*.jar'])
行告訴構建系統在編譯類路徑和最終的應用軟體包中包含app/libs/
目錄內的任何 JAR 檔案。如果您有模組需要本地二進位制依賴項,請將這些依賴項的 JAR 檔案複製到專案內部的/libs
中。
配置依賴項
您可以使用特定的配置關鍵字告訴 Gradle 如何以及何時使用某個依賴項,例如前述示例中的 compile
關鍵字。下面介紹了您可以用來配置依賴項的一些關鍵字:
-
compile
指定編譯時依賴項。Gradle 將此配置的依賴項新增到類路徑和應用的 APK。這是預設配置。
-
apk
指定 Gradle 需要將其與應用的 APK 一起打包的僅執行時依賴項。您可以將此配置與 JAR 二進位制依賴項一起使用,而不能與其他庫模組依賴項或 AAR 二進位制依賴項一起使用。
-
provided
指定 Gradle 不與應用的 APK 一起打包的編譯時依賴項。如果執行時無需此依賴項,這將有助於縮減 APK 的大小。您可以將此配置與 JAR 二進位制依賴項一起使用,而不能與其他庫模組依賴項或 AAR 二進位制依賴項一起使用。
此外,您可以通過將構建變體或測試源集的名稱應用於配置關鍵字,為特定的構建變體或測試源集配置依賴項,如下例所示。
dependencies {
...
// Adds specific library module dependencies as compile time dependencies
// to the fullRelease and fullDebug build variants.
fullReleaseCompile project(path: ':library', configuration: 'release')
fullDebugCompile project(path: ':library', configuration: 'debug')
// Adds a compile time dependency for local tests.
testCompile 'junit:junit:4.12'
// Adds a compile time dependency for the test APK.
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
}
配置簽署設定
除非您為釋出構建顯式定義簽署配置,否則,Gradle 不會簽署釋出構建的 APK。您可以輕鬆建立釋出金鑰並使用 Android Studio 簽署釋出構建型別。
要使用 Gradle 構建配置為您的釋出構建型別手動配置簽署配置:
建立金鑰庫。金鑰庫是一個二進位制檔案,它包含一組私鑰。您必須將金鑰庫存放在安全可靠的地方。
建立私鑰。私鑰代表將通過應用識別的實體,如某個人或某家公司。
-
將簽署配置新增到模組級
build.gradle
檔案中:... android { ... defaultConfig {...} signingConfigs { release { storeFile file("myreleasekey.keystore") storePassword "password" keyAlias "MyReleaseKey" keyPassword "password" } } buildTypes { release { ... signingConfig signingConfigs.release } } }
要生成簽署的 APK,請從選單欄中選擇 Build > Generate Signed APK。現在,app/build/apk/app-release.apk
中的軟體包已使用您的釋出金鑰進行簽署。
注:將釋出金鑰和金鑰庫的密碼放在構建檔案中並不安全。作為替代方案,您可以將此構建檔案配置為通過環境變數獲取這些密碼,或讓構建流程提示您輸入這些密碼。
要通過環境變數獲取這些密碼:
storePassword System.getenv("KSTOREPWD")
keyPassword System.getenv("KEYPWD")
要讓構建流程在您要從命令列呼叫此構建時提示您輸入這些密碼:
storePassword System.console().readLine("\nKeystore password: ")
keyPassword System.console().readLine("\nKey password: ")
在完成此流程後,您可以分發您的應用並在 Google Play 上釋出它。
警告:將金鑰庫和私鑰存放在安全可靠的地方,並確保您為其建立了安全的備份。如果您將應用釋出到 Google Play,隨後丟失了您用於簽署應用的金鑰,那麼,您將無法向您的應用釋出任何更新,因為您必須始終使用相同的金鑰簽署應用的所有版本。
參考文件:配置構建變體
相關文章
- Gradle for Android ( 構建變體 )GradleAndroid
- Gradle 之構建變體(BuildVariant)GradleUI
- Android構建過程——資源合併打包Android
- Android中的Gradle之配置及構建優化AndroidGradle優化
- Android 多渠道打包配置Android
- Zepto自定義模組打包構建
- 使用Jenkins自動構建Android應用打包並上傳JenkinsAndroid
- Mac 環境下 Android 使用 Jenkins 構建自動化打包MacAndroidJenkins
- 配置軟體原始碼包構建環境原始碼
- 這應該是最全的Jenkins Android自動打包構建教程JenkinsAndroid
- Android 應用構建速度提升Gradle配置優化AndroidGradle優化
- 深入淺出Android Gradle構建系統(四:自定義構建過程之配置manifest)AndroidGradle
- iOS自動構建打包釋出指令碼iOS指令碼
- jenkins配置android自動打包平臺JenkinsAndroid
- webpack--效能優化之打包構建速度和程式碼除錯優化Web優化除錯
- 打包配置
- spring構建神器(等於打包加執行)Spring
- android studio 3.0 gradle 打包指令碼配置AndroidGradle指令碼
- 打包策略 自定義打包配置
- java 中構建不可變物件Java物件
- Webpack 打包優化之體積篇Web優化
- 知識圖譜構建之實體關係挖掘
- nlp基礎之-詞彙表構建的具體做法
- Gradle for Android系列之五 多渠道打包GradleAndroid
- AB打包配置
- 優雅的構建 Android 專案之磁碟快取(DiskLruCache)Android快取
- 從零構建Android工程Android
- Gradle For Android(二) 多渠道打包與簽名配置GradleAndroid
- Gradle for Android(三)多渠道打包、配置簽名資訊GradleAndroid
- Gradle 與 AGP 構建 API: 配置您的構建檔案GradleAPI
- 前後端分離專案:下載、執行、配置、構建、打包、部署:全部實戰演習後端
- 關於持續整合打包平臺的Jenkins配置和構建指令碼實現細節Jenkins指令碼
- 行變列構建sql語句SQL
- Docker 映象構建之 DockerfileDocker
- 軟體工程管理的一點經驗之工程構建軟體工程
- 構建api gateway之 基於etcd實現動態配置同步APIGateway
- Android Gradle基於引數化配置實現差異化構建AndroidGradle
- webpack打包地址配置Web