Android Studio3.0 Gradle相关配置

基于Android Studio3.0
提供demo:https://github.com/hacjy/GradleConfigDemo

1、依赖库的统一管理配置
-创建config.gradle 关键字ext
-如何使用:首先,在工程的build.gradle中导入该配置文件:apply from:"config.gradle"
然后,使用rootProject对象调用,如rootProject.ext.android["compileSdkVersion"]。

2、生成签名打包
创建签名:Build->Generate Signed Apk,然后Create new keystore。
之后在app中的build.gradle中设置签名(必须设置在buildType之前

signingConfigs {
        release {
            storeFile file('D:/workspace/keystore.jks')
            keyAlias 'androidKeystore'
            keyPassword 'android'
            storePassword 'android'
        }
    }

当然不喜欢手动写的话,也可以设置自动生成:Project Structure->app->Signing添加一个签名即可
Generate Signed Apk这种方式生产的apk是放在app同级对应的release/debug目录下。当然,如果使用gradle的命令去打包,生成的apk是存放在app->build-output-apk目录下。

3、修改打包出的apk名称
studio3.0 gradle api有变动,具体请看:https://developer.android.google.cn/studio/build/gradle-plugin-3-0-0-migration.html#variant_api

具体代码如下:

android.applicationVariants.all { variant ->
        variant.outputs.all {
            //修改apk名称variant.name对应buildType.name
            outputFileName = "${variant.name}-${project.archivesBaseName}-

${variant.versionCode}-${variant.versionName}-${releaseTime()}.apk"
        }
    }

4、多渠道打包配置
-必须声明flavorDimensions:flavorDimensions("default")
studio提示:Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

-定义渠道名称

 flavorDimensions("default")
 productFlavors{
        xiaomi{dimension "default"}
        huawei{dimension "default"}
        baidu{dimension "default"}
    }
 productFlavors.all{
        flavor->flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE:name]
    }

5、通过buildTypes根据环境设置测试/生产环境地址

 buildTypes {
        debug{
            minifyEnabled false
            //配置api地址,在BuildConfig可以找到该字段
            buildConfigField ("String", "API_URL", ""http://debug.com"")
        }

        release {
            minifyEnabled true
            //配置api地址,在BuildConfig可以找到该字段
            buildConfigField("String","API_URL",""http://release.com"")
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-

rules.pro'
        }
    }