深入淺出Android Gradle構建系統(四:自定義構建過程之配置manifest)
Android Gradle外掛提供了大量的DSL來自定義構建過程,這篇blog就來講解如何在gradle中配置manifest。
DSL提供了配置以下Manifest條目的功能:
minSdkVersion
targetSdkVersion
versionCode
versionName
applicationId (更加方便有效的包名 -- [參考](http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename))
測試app的包名
Instrumentation test runner
- android {
- compileSdkVersion 19
- buildToolsVersion "19.0.0"
- defaultConfig {
- versionCode 12
- versionName "2.0"
- minSdkVersion 16
- targetSdkVersion 16
- }
- }
android元素中的defaultConfig元素就是我們用來配置Manifest的地方。早期版本的Android外掛使用packageName來配置manifest中的packageName屬性,從0.11.0開始,使用applicationId來代替packageName。這樣可以消除應用的包名(其實就是應用的id)和java的包名之間的混淆。
更強大的是build檔案中描述的配置可以是動態的,比如可以從檔案或者自定義的邏輯中獲取版本名稱。
- def computeVersionName() {
- ...
- }
- android {
- compileSdkVersion 19
- buildToolsVersion "19.0.0"
- defaultConfig {
- versionCode 12
- versionName computeVersionName()
- minSdkVersion 16
- targetSdkVersion 16
- }
- }
注意:不要使用作用域中的getter方法名作為函式名,比如在defaultConfig{}作用域中呼叫getVersionName()將會自動呼叫defaultConfig.getVersionName(),而不會呼叫自定義的方法。
如果某個屬性的值沒有使用DSL設定,這個屬性將會使用某些預設值,下表展示了預設值的處理過程。
屬性名 DSL物件中的預設值 預設值
Property Name | Default value in DSL object | Default value |
versionCode | -1 | value from manifest if present |
versionName | null | value from manifest if present |
minSdkVersion | -1 | value from manifest if present |
targetSdkVersion | -1 | value from manifest if present |
applicationId | null | value from manifest if present |
testApplicationId | null | applicationId + “.test” |
testInstrumentationRunner | null | android.test.InstrumentationTestRunner |
signingConfig | null | null |
proguardFile | N/A (set only) | N/A (set only) |
proguardFiles | N/A (set only) | N/A (set only) |
如果你想在build指令碼中使用自定義的邏輯來查詢這些屬性,第二列中的值就很重要。比如,你可以編寫如下的程式碼:
- if (android.defaultConfig.testInstrumentationRunner == null) {
- // assign a better default...
- }
相關文章
- Android 自定義構建型別 BuildTypeAndroid型別UI
- Gradle for Android ( 構建變體 )GradleAndroid
- Android 應用構建速度提升Gradle配置優化AndroidGradle優化
- Android中的Gradle之配置及構建優化AndroidGradle優化
- Gradle 與 AGP 構建 API: 配置您的構建檔案GradleAPI
- 用Gradle 構建你的android程式GradleAndroid
- 深入淺出的webpack構建工具---HappyPack優化構建(九)WebAPP優化
- 通過Gradle自動實現Android元件化模組構建GradleAndroid元件化
- Gradle For Android(2)--基礎的定製構建GradleAndroid
- 深入淺出的webpack構建工具---DllPlugin DllReferencePlugin提高構建速度(七)WebPlugin
- Zepto自定義模組打包構建
- Android Gradle基於引數化配置實現差異化構建AndroidGradle
- gradle構建spring原始碼GradleSpring原始碼
- Gradle構建SpringBoot專案GradleSpring Boot
- gradle中的增量構建Gradle
- Gradle之多專案構建Gradle
- Android Gradle Groovy自動化構建進階篇AndroidGradle
- Android打包之配置構建變體Android
- Gradle自動實現Android元件化模組構建GradleAndroid元件化
- 使用gradle構建springboot專案GradleSpring Boot
- Java整合系列:高效構建自定義外掛Java
- 使用CSS自定義屬性構建骨架屏CSS
- [譯] 使用 Go 和 ReactJS 構建聊天系統 (四)GoReactJS
- 使用新 Android Gradle 外掛加速您的應用構建AndroidGradle
- 深入淺出的webpack4構建工具--webpack4+react構建環境(二十)WebReact
- 在gradle中構建java專案GradleJava
- Gradle中的差異化構建Gradle
- Gradle快速構建Spring Boot專案GradleSpring Boot
- Rust 程式設計影片教程(進階)——006cargo 加強 (釋出配置自定義構建)Rust程式設計Cargo
- 【Java】【Gradle】Gradle構建SpringBoot專案,Gradle模組化管理JavaGradleSpring Boot
- OpenHarmony自定義構建函式:@Builder裝飾器函式UI
- C++構建工具-構建系統C++
- Spring Cloud構建統一配置中心SpringCloud
- 深入剖析Vue原始碼 - 響應式系統構建(中)Vue原始碼
- 深入剖析Vue原始碼 - 響應式系統構建(上)Vue原始碼
- 深入剖析Vue原始碼 - 響應式系統構建(下)Vue原始碼
- Rust 程式設計視訊教程(進階)——006cargo 加強 (釋出配置自定義構建)Rust程式設計Cargo
- springboot gradle demo (使用 Gradle 構建的 Spring Boot專案)Spring BootGradle
- AndroidStudio配置settings.gradle在工程中構建多個專案AndroidGradle