Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Studio配置Gradle(包括signingConfigs、buildTypes和productFlavors等)

Android Studio配置Gradle(包括signingConfigs、buildTypes和productFlavors等)

編輯:關於Android編程

筆者目前使用的Gradle配置描述如下:

配置劃分:

defaultConfig 默認配置 signingConfigs 簽名信息配置 buildTypes productFlavors 打包apk重命名 dependencies 依賴配置

詳細配置:

1,defaultConfig 默認配置

defaultConfig {
   //項目包名配置
   applicationId "com.wildcreek.demo" 
   minSdkVersion 16
   targetSdkVersion 19
   versionCode 14
   versionName "1.0.14"
}

2,signingConfigs 簽名信息配置

signingConfigs {
  release {//發布版本的簽名配置
      storeFile file(props['KEYSTORE_FILE'])
      keyAlias props['KEY_ALIAS']
      storePassword props['KEYSTORE_PWD']
      keyPassword props['KEY_PWD']
  }
  debug {//調試版本的簽名配置
      storeFile file(props['DEBUG_KEYSTORE'])
      keyAlias props['DEBUG_ALIAS']
      storePassword props['DEBUG_KEYSTORE_PWD']
      keyPassword props['DEBUG_KEY_PWD']
  }
}

簽名配置文件signing.properties:

KEYSTORE_FILE = release.keystore
KEY_ALIAS = wildcreek
KEYSTORE_PWD= xxx
KEY_PWD= xxx

DEBUG_KEYSTORE= debug.keystore
DEBUG_ALIAS= androiddebugkey
DEBUG_KEYSTORE_PWD= android
DEBUG_KEY_PWD= android

3, buildTypes

   注意:
  1 .minifyEnabled 會對代碼進行混淆和壓縮,shrinkResources 會對比R文件對無用資源進行刪除
  2.minifyEnabled 設置為true時shrinkResources 的設置才會生效
buildTypes {
  release {
    debuggable true
    minifyEnabled true //啟用Proguard
    shrinkResources true //是否清理無用資源,依賴於minifyEnabled
    zipAlignEnabled true //是否啟用zipAlign壓縮
    signingConfig signingConfigs.release
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
  }
  debug {
    debuggable true
    minifyEnabled false  //不啟用Proguard
    shrinkResources false //是否清理無用資源,依賴於minifyEnabled
    zipAlignEnabled false //是否啟用zipAlign壓縮
    signingConfig signingConfigs.debug
  }
}

4,productFlavors

自定義BuildConfig,工程編譯後會生成BuildConfig類,該類會包含自定義字段。
假設工程包含beijing和shandong兩個productFlavors,且擁有各自不同的服務器等配置信息。

productFlavors{
    beijing{
        buildConfigField("boolean", "IS_LOCAL", "false")
        buildConfigField("String", "SERVER_NAME", "\"BJ\"")
        buildConfigField("String", "SERVER_HOST", "\"http://xxx.xxx.xxx.xx:8080\"")
        buildConfigField("String", "LOGIN_API", "\"login\"")
    }
    shandong{
        buildConfigField("boolean", "IS_LOCAL", "false")
        buildConfigField("String", "SERVER_NAME", "\"SD\"")
        buildConfigField("String", "SERVER_HOST", "\"http://xxx.xxx.xxx.xx:8080\"")
        buildConfigField("String", "LOGIN_API", "\"loginsd\"")
    }
}

5,打包apk重命名

def releaseTime() {
    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}
applicationVariants.all { variant ->
     variant.outputs.each { output ->
         def outputFile = output.outputFile
         if (variant.buildType.name.equals('release')) {
              def fileName = "Demo_v${defaultConfig.versionName}_${releaseTime()}_release.apk"
             if(variant.flavorName.equals("beijing")){
                 fileName = "Demo_v${defaultConfig.versionName}_${releaseTime()}_beijing_release.apk"
             }else if(variant.flavorName.equals("shandong")){
                 fileName = "Demo_v${defaultConfig.versionName}_${releaseTime()}_shandong_release.apk"
             } 
             output.outputFile = new File(outputFile.parent, fileName)
         }else if(variant.buildType.name.equals('debug')){
             def fileName = "Demo_v${defaultConfig.versionName}_${releaseTime()}_debug.apk"
             if(variant.flavorName.equals("beijing")){
                 fileName = "Demo_v${defaultConfig.versionName}_${releaseTime()}_beijing_debug.apk"
             }else if(variant.flavorName.equals("shandong")){
                 fileName = "Demo_v${defaultConfig.versionName}_${releaseTime()}_shandong_debug.apk"
             }
             output.outputFile = new File(outputFile.parent, fileName)
         }
     }
 }

6,dependencies 依賴配置

不同buildTypes 和productFlavors 依賴不同的jar的配置情況

 dependencies {
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support:support-v4:22.2.1'
    compile 'com.google.code.gson:gson:2.2.1'
    compile 'net.robinx:lib.blur:1.0.1'
    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
    compile fileTree(dir: 'libs', exclude:["*mtclib*.jar","*peerconnection*.jar"], include: "*.jar")
    beijingCompile files("libs/mtclib_0908_bj.jar")
    beijingCompile files("libs/libjingle_peerconnection_bj.jar")
    shandongCompile files("libs/mtclib_170110_sd.jar")
    shandongCompile files("libs/libjingle_peerconnection_sd.jar")
}

Github gist:

完整配置參見:

https://gist.github.com/fcf96ba9d265c09694fb24fd5ed34ee7

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved