这篇文章上次修改于 2356 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

BuildTypes

构建类型,AndroidStudio的Gradle组件默认提供了“debug”“release”两个默认配置,此处用于配置是否需要混淆、是否可调试等

当然除上面提到的两种,还允许自定义配置,但这并不是常事。

配置

  • buildConfigField

可以配置debug和release不同的变量,比如服务器地址等等,配置参考《关于gradle对于android动态打包的一些配置之productFlavor》

  • minifyEnabled

一般情况下,AS会自动生成一个 release的配置,其中就有 minifyEnabled false

是否开启混淆,debug与release的默认值都为false。

  • proguardFiles

这个配置应该于上面的 minifyEnabled 配合使用,用于指定混淆规则,一般默认生成“proguard-rules.pro”规则配置文件,在工程app目录下。

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  • zipAlignEnabled

是否对齐资源,用于优化程序,但需要指定签名信息 signingConfig 配置

  • signingConfig
    指定signingConfigs的信息
signingConfig signingConfigs.release

Tip: signingConfigs 与 buildTypes 同级,都是在android{}内配置

signingConfigs {
    debug {
        storeFile file("keystore.jks")//项目app目录为根目录
        storePassword "123456"
        keyAlias "key"
        keyPassword "123456"
    }
    release {
        storeFile file("keystore.jks")
        storePassword "123456"
        keyAlias "key"
        keyPassword "123456"
    }
}
  • shrinkResources

是否移除无用的资源文件

  • debuggable

是否开启DEBUG,默认情况 debug包为true,release包为false

还记得在《关于gradle对于android动态打包的一些配置之productFlavor》文章中提到自定义BuildConfig的属性isDebug时,提到系统自动生成DEBUG属性,正是由此配置的。

举个栗子

buildTypes {
    debug {
        //配置BuildConfig变量
        buildConfigField "String","SERVICE_URL","\"http://deanlib.com/debugservice/\""
        minifyEnabled false//是否混淆
        zipAlignEnabled false//是否资源对齐
        shrinkResources false//是否移除无用资源文件
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.debug//签名
        debuggable false//是否开启debug
    }
    release {
        buildConfigField "String","SERVICE_URL","\"http://deanlib.com/service/\""
        minifyEnabled true
        zipAlignEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
}

2018/4/9.

Dean.King

Beijing