Gradle 使用技巧(一)
前言
Gradle是使用Groovy語言構建,所以既然是語言,那么就有他的語法,而不是簡單的配置項。關于Gradle有時間會出一系列的文章。
1. 自定義apk輸出名稱 (3.0)
本配置為Android studio3.0及以上的配置,3.0以下版本適用,下面的配置會將所有的Variants都輸出。
// 便利所有的Variants,all是迭代遍歷操作符,相當于for applicationVariants.all { variant ->// 遍歷得出所有的variantvariant.outputs.all {// 遍歷所有的輸出類型,一般是debug和replease// 定義apk的名字,拼接variant的版本號def apkName = "app_${variant.versionName}"// 判斷是否為空if (!variant.flavorName.isEmpty()) {apkName += "_${variant.flavorName}"}// 賦值屬性outputFileName = apkName + ".apk"} }配置到buildTypes的release和debug下面
Gradle配置輸出APK名稱.png2. 配置簽名
我們在使用百度地圖和微信相關的API的時候,是需要我們填入相關的的app簽名進行校驗后才能進行操作,而默認我們在調試模式下使用的是AS為我們提供的android.keystore,所幸,Gradle為我們提供了相關的方法,我們可以為debug和release指定密鑰文件和前面。我們需要先在app.gradle的android節點做做相關的配置。
2.1 配置簽名信息
android{...signingConfigs {debug {try {storeFile file("../簽名文件.jks")storePassword "密碼"keyAlias "別名"keyPassword "密碼"v1SigningEnabled truev2SigningEnabled false}catch (ex) {ex.printStackTrace()throw new InvalidUserDataException("秘鑰用戶名或密碼錯誤${ex.getMessage()}")}}release {try {storeFile file("../簽名文件.jks")storePassword "密碼"keyAlias "別名"keyPassword "密碼"v1SigningEnabled truev2SigningEnabled false}catch (ex) {throw new InvalidUserDataException("秘鑰用戶名或密碼錯誤")}}}... }- signingConfigs 是處于android節點中
- 這里需要注意的是storeFile的路徑是指當前app.gradle的相對路徑。
- 關于v1SigningEnabled和v2SigningEnabled
- APK Signature Scheme v2是Android 7.0 引入一項新的應用簽名方案 APK Signature Scheme v2,它能提供更快的應用安裝時間和更多針對未授權 APK 文件更改的保護。一般情況下都會選擇關閉。
2.2 在相應的buildTypes中指定簽名
buildTypes{release{signingConfig signingConfigs.release...}debug{signingConfig signingConfigs.debug...} }雖然不指定這一步,我們依然能夠正常運行,但是為了出不必要的幺蛾子,我們還是把它加上吧。
3. release和debug設置全局變量
3.1 全局debug開關
寫程序就會要有log,有log我們就需要在打release包的時候就需要手動的設置debug開關為false,但是在某些情況下我們可能會忘記關閉的。所以可以選擇在gradle中通過buildConfigField定義變量,然后再需要的時候直接進行引用。
buildTypes {release {...buildConfigField "boolean", "isDebug", "false"...}debug {...buildConfigField "boolean", "isDebug", "true"...} }以上,我們在兩種模式中都創建了一個叫做isDebug的布爾值的變量,根據類型不同設置值,然后需要重新編譯一下。
編譯完成后直接調用BuildConfig.isDebug作為開關設置即可
關于BuildConfig的內容,可以看下面的截圖
BuildCofig信息.png3.2 API地址的配置
既然有了全局debug開關的設置,那么就肯定有這么一個需求:debug和release下使用不同的API請求地址,其實也就是和前面一個套路,直接通過buildConfigField定義變量。
buildTypes {release {...buildConfigField "boolean", "isDebug", "false"buildConfigField "String", "API", "http://192.168.1.1/release"...}debug {...buildConfigField "boolean", "isDebug", "true"buildConfigField "String", "API", "\"http://192.168.1.1/debug\""...} }String類型一定要記得加雙引用轉義。
String類型一定要記得加雙引用轉義。
String類型一定要記得加雙引用轉義。
后續敬請期待!
免為其難的關注一下公眾號吧!!
總結
以上是生活随笔為你收集整理的Gradle 使用技巧(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: caioj 1077 动态规划入门(非常
- 下一篇: 作为JavaScript开发人员,这些必