原文發於微信公衆號 jzman-blog,歡迎關注交流。
經過前面幾篇文章學習了 Gradle 基礎知識以及 Gradle 插件相關的知識,關於 Gradle 及其插件相關知識請先閱讀下面幾篇文章:java
上篇文章瞭解了 Android Gradle 插件的一下配置方法,記得剛開始接觸 Android 中的 build.gradle 配置文件也是一臉懵逼,不知道各個配置項的具體含義,這篇文章將對 Android 開發中一些最基本的配置進行介紹,若是你有這方面的疑惑,相信這篇文章對你有必定收穫android
defaultConfig 是 Android Gradle 配置文件中的一個配置塊,defaultConfig 的類型是 ProductFlavor,若是沒有自定義 ProductFlavor,則使用默認的 ProductFlavor 來配置 Android 工程,下面對 defaultConfig 中的一下配置屬性進行介紹:c++
//默認的ProductFlavor配置塊 defaultConfig { //配置App的包名 applicationId "com.manu.base" //配合App最低支持的Android系統版本,下面兩種minSdkVersion的配置效果是一致的 minSdkVersion 19 <!--minSdkVersion 'KitKat'--> //配置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 模式下時配置不一樣的簽名文件。微信
第一步:建立簽名證書文件,以下圖所示填寫相關信息:app
第二步:使用 signConfigs 配置塊配置已建立簽名證書文件的相關信息以下:工具
//簽名文件配置 signingConfigs { release{ //簽名證書文件 storeFile file("project.jks") //簽名證書文件密碼 storePassword "111111" //簽名證書密鑰別名 keyAlias "project_jks" //簽名證書中密鑰密碼 keyPassword "111111" } debug{ //默認狀況下,debug模式下的簽名已配置爲Android SDK自動生成的debug簽名文件證書 //默認簽名文件位置:.android/debug.keystore } }
第三步:使用簽名文件配置,在 android{} 下 defaultConfig{} 中使用上述配置,具體以下:post
defaultConfig { //... //使用指定的簽名文件配置 signingConfig signingConfigs.release }
除了在 defaultConfig{} 中配置,還能夠在分別在 denbug 或者是 release 模式下配置不一樣的簽名文件,可在 buildTypes{} 中單獨配置配置,具體以下:單元測試
buildTypes { release { signingConfig signingConfigs.release //... } debug{ signingConfig signingConfigs.debug //... } //... }
Android Gradle 內置了兩種構建類型 debug 和 release,二者區別是前者通常用在調試狀態,後者通常用於正式發佈狀態,其餘方面都同樣,那麼如何增長新的構建類型呢,可直接在 buildTypes{} 中添加要添加的類型便可,buildTypes 接收的參數是一個域對象,添加的構建類型都是 BuildType,因此能夠經過 BuildType 的相關屬性來配置構建類型,下面是 BuildType 的常見的一些配置屬性:學習
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 下面,裏面的內容主要是一些最基本的不能混淆的內容,兩個默認的混淆文件以下:
//沒優化 proguard-android.txt //已優化 proguard-android-optimize.txt
那麼如何使用混淆呢,在 buildTypes{} 中對應的構建類型下設置 minifyEnabled 爲 true 開啓混淆,而後配置具體的混淆文件,具體以下:
buildTypes { release { //開啓混淆 minifyEnabled false //配置混淆文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } //... }
zipalign 是 Android 提供的一個整理優化 apk 文件的工具,可在必定程度上上提升系統和應用的運行效率,更快的讀取 apk 中的資源,下降內存的使用,開啓 zipalign 優化只須要在 buildTypes{} 中對應的構建類型下開啓 zipalign 優化便可,具體以下:
buildTypes { release { //開啓zipalign優化 zipAlignEnabled true //'' } //... }
這篇算介紹了 Android 開發中一些常見配置項的介紹。
能夠關注公衆號:躬行之(jzman-blog),一塊兒交流學習。