1. 程式人生 > >Gradle系列之Android Gradle基礎配置

Gradle系列之Android Gradle基礎配置

> 原文發於微信公眾號 jzman-blog,歡迎關注交流。 通過前面幾篇文章學習了 Gradle 基礎知識以及 Gradle 外掛相關的知識,關於 Gradle 及其外掛相關知識請先閱讀下面幾篇文章: - [Gradle系列之初識Gradle](https://juejin.im/post/6844903874629730318) - [Gradle之Groovy基礎篇](https://juejin.im/post/6844903876177428494) - [Gradle系列之構建指令碼基礎](https://juejin.im/post/6844903878199099405) - [Gradle系列之認識Gradle任務](https://juejin.im/post/6844903879872610311) - [Gradle系列之Gradle外掛](https://juejin.im/post/6844903881671966727) - [Gradle系列之Java Gradle外掛](https://juejin.im/post/6844903887078424590) - [Gradle系列之Android Gradle外掛](https://juejin.im/post/6844903891931234312) 上篇文章瞭解了 Android Gradle 外掛的一下配置方法,記得剛開始接觸 Android 中的 build.gradle 配置檔案也是一臉懵逼,不知道各個配置項的具體含義,這篇文章將對 Android 開發中一些最基本的配置進行介紹,如果你有這方面的疑惑,相信這篇文章對你有一定收穫 1. 預設配置 2. 配置簽名信息 3. 構建應用型別 4. 使用混淆 5. 啟用zipalign優化 #### 預設配置 defaultConfig 是 Android Gradle 配置檔案中的一個配置塊,defaultConfig 的型別是 ProductFlavor,如果沒有自定義 ProductFlavor,則使用預設的 ProductFlavor 來配置 Android 工程,下面對 defaultConfig 中的一下配置屬性進行介紹: ```java //預設的ProductFlavor配置塊 defaultConfig { //配置App的包名 applicationId "com.manu.base" //配合App最低支援的Android系統版本,下面兩種minSdkVersion的配置效果是一致的 minSdkVersion 19 //配置App基於哪個Android SDK開發 targetSdkVersion 26 //配置App的內部版本號,一般用於版本升級 versionCode 1 //配置App外部版本號,該版本號供使用者檢視 versionName "1.0" //配置單元測試時使用的Runner testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" //配置測試App的包名 testApplicationId "com.manu.androidgradleproject.test" //使用指定的簽名檔案配置 signingConfig signingConfigs.release } ``` #### 配置簽名信息 配置 App 簽名信息的好處無非是防止 App 被惡意篡改,簽名可保證 App 的唯一性且只有使用相同簽名的後續升級包才能正常安裝,在建立完簽名檔案之後,如果不做配置打包時每次都必須要指定簽名檔案的密碼、別名等,一般 App 開發時在 denug 和 release 模式下時配置不同的簽名檔案。 **第一步**:建立簽名證書檔案,如下圖所示填寫相關資訊: **第二步**:使用 signConfigs 配置塊配置已建立簽名證書檔案的相關資訊如下: ```java //簽名檔案配置 signingConfigs { release{ //簽名證書檔案 storeFile file("project.jks") //簽名證書檔案密碼 storePassword "111111" //簽名證書金鑰別名 keyAlias "project_jks" //簽名證書中金鑰密碼 keyPassword "111111" } debug{ //預設情況下,debug模式下的簽名已配置為Android SDK自動生成的debug簽名檔案證書 //預設簽名檔案位置:.android/debug.keystore } } ``` **第三步**:使用簽名檔案配置,在 android{} 下 defaultConfig{} 中使用上述配置,具體如下: ```java defaultConfig { //... //使用指定的簽名檔案配置 signingConfig signingConfigs.release } ``` 除了在 defaultConfig{} 中配置,還可以在分別在 denbug 或者是 release 模式下配置不同的簽名檔案,可在 buildTypes{} 中單獨配置配置,具體如下: ```java buildTypes { release { signingConfig signingConfigs.release //... } debug{ signingConfig signingConfigs.debug //... } //... } ``` #### 構建應用的型別 Android Gradle 內建了兩種構建型別 debug 和 release,兩者區別是前者一般用在除錯狀態,後者一般用於正式釋出狀態,其他方面都一樣,那麼如何增加新的構建型別呢,可直接在 buildTypes{} 中新增要新增的型別即可,buildTypes 接收的引數是一個域物件,新增的構建型別都是 BuildType,所以可以通過 BuildType 的相關屬性來配置構建型別,下面是 BuildType 的常見的一些配置屬性: ```java buildTypes { release { //... } debug{ //配置簽名 signingConfig signingConfigs.debug //配置在當前構建型別下applicationId的字尾,構建生成Apk的包名會在applicationId的基礎上新增字尾 applicationIdSuffix '.debug' //配置是否生成一個可供除錯的Apk denbuggable true //配置是否生成一個可供除錯jni(c/c++)程式碼的Apk jniDebuggable true //是否啟用proguard混淆 minifyEnabled true //配置當程式中方法數超過65535個時,是否啟用自動拆分多個dex的功能, multiDexEnabled true //配置proguard混淆使用的配置檔案,可配置對個混淆檔案 proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro' //配置是否自動清理未使用的資源,預設為false shrinkResources true //開啟zipalign優化(見下文) zipAlignEnabled true } } ``` 當在 buildTypes{} 中新增新的構建型別之後,Android Gradle 都會自動生成一個 SourceSet,構建 Apk 會從對應的 SourceSet 中進行構建,切記新構建型別的名稱不能和已有的相同。且要在 src 目錄下為新建立的構建型別新增原始碼目錄和資原始檔等,在建立好構建型別的同時,Android Gradle 外掛也會生成對應的 assemble 任務來用於構建該型別的專案,如 release 對應的是 assembleRelease,執行該任務會生成對應的 Apk. #### 使用混淆 程式碼混淆主要了增加反編譯的難度,釋出正式版 App 時一般都得進行程式碼混淆,實際上 Android SDK 下面已經提供了預設的混淆檔案,具體位置在 Android SDK 下面的 tools/progrard 下面,裡面的內容主要是一些最基本的不能混淆的內容,兩個預設的混淆檔案如下: ```java //沒優化 proguard-android.txt //已優化 proguard-android-optimize.txt ``` 那麼如何使用混淆呢,在 buildTypes{} 中對應的構建型別下設定 minifyEnabled 為 true 開啟混淆,然後配置具體的混淆檔案,具體如下: ```groovy buildTypes { release { //開啟混淆 minifyEnabled false //配置混淆檔案 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } //... } ``` #### 啟用 zipalign 優化 zipalign 是 Android 提供的一個整理優化 apk 檔案的工具,可在一定程度上上提高系統和應用的執行效率,更快的讀取 apk 中的資源,降低記憶體的使用,開啟 zipalign 優化只需要在 buildTypes{} 中對應的構建型別下開啟 zipalign 優化即可,具體如下: ```java buildTypes { release { //開啟zipalign優化 zipAlignEnabled true //'' } //... } ``` 這篇算介紹了 Android 開發中一些常見配置項的介紹。 可以關注公眾號:零點小築(jzman-blog),一起交流學習。 ![](https://img2020.cnblogs.com/blog/758808/202009/758808-20200917001501316-3156338