几种gradle常量定义和使用

方法一:

 buildConfigField "int", "CHANNELID", "100"

方法二:

 manifestPlaceholders = [CHANNELID      : "100"]

通过这种方式(方法二)命名常量之后就可以在AndroidManifest.xml中使用${CHANNELID}的方式了。
方法二常常被用来设置的常量包括图标,还有一些集成sdk的key之类。

 manifestPlaceholders = [app_icon      : "@mipmap/ic_launcher_beta",
                         app_icon_round: "@mipmap/ic_launcher_beta_round",
                        ]

其他方法都可以通过BuildConfig.xxx 的方式在代码中获取并使用,看情况使用吧。另外方法一和二在当前模块build.gradle中定义的话,就只能在再当前module中使用。如果要整个项目都使用的话,还是使用方法四。(方法三的优雅版)
方法一和方法二:可以看另一篇文章:build_gradle常量的使用

方法三和四可以多module共用,在项目或者依赖库版本升级的时候,可以避免修改起来工作量太大,而且可能出现漏改的情况,导致依赖冲突、打包失败等的问题。

方法三:

gradle可以通过ext来自定义常量,要做到常量共用的话,就要在根节点下的build.gradle文件中进行常量定义。

buildscript {

    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

ext {
    android = [
            compileSdkVersion: 29,
            buildToolsVersion: "29.0.2",
            applicationId    : "com.geeboo.jetpackproject",
            minSdkVersion    : 16,
            targetSdkVersion : 29,
            versionCode      : 1,
            versionName      : "1.0"
    ]

    libs = [
            libAndroidAppcompat: 'androidx.appcompat:appcompat:1.1.0',
            libAndroidConstraintlayout: 'androidx.constraintlayout:constraintlayout:1.1.3',
            libJunit: 'junit:junit:4.12',
            libTestJunit: 'androidx.test.ext:junit:1.1.1',
            libTestEspresso: 'androidx.test.espresso:espresso-core:3.2.0'
    ]
}

写法四

在根目录下创建一个common.gradle文件(文件名称随意)专门用来定义常量

ext {
    android = [
            compileSdkVersion: 29,
            buildToolsVersion: "29.0.2",
            applicationId    : "com.xxx.xxx",
            minSdkVersion    : 16,
            targetSdkVersion : 29,
            versionCode      : 1,
            versionName      : "1.0"
    ]

    libs = [
            libAndroidAppcompat: 'androidx.appcompat:appcompat:1.1.0',
            libAndroidConstraintlayout: 'androidx.constraintlayout:constraintlayout:1.1.3',
            libJunit: 'junit:junit:4.12',
            libTestJunit: 'androidx.test.ext:junit:1.1.1',
            libTestEspresso: 'androidx.test.espresso:espresso-core:3.2.0'
    ]
}

然后在根节点下的build.gradle中添加 apply from: file(‘common.gradle’)

apply from: file('common.gradle')
buildscript {

    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

使用:

apply plugin: 'com.android.application'

android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion
    buildToolsVersion rootProject.ext.android.buildToolsVersion
    defaultConfig {
        applicationId rootProject.ext.android.applicationId
        minSdkVersion rootProject.ext.android.minSdkVersion
        targetSdkVersion rootProject.ext.android.targetSdkVersion
        versionCode rootProject.ext.android.versionCode
        versionName rootProject.ext.android.versionName
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation libs.libAndroidAppcompat
    implementation libs.libAndroidConstraintlayout
    testImplementation libs.libJunit
    androidTestImplementation libs.libTestJunit
    androidTestImplementation libs.libTestEspresso
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:${versions.coroutinesVersion}"
}

写法五

直接在gradle.properties中定义:

BUILD_TOOLS_VERSION=28.0.3
SUPPORT_VERSION=27.1.1
MIN_SDK_VERSION=21
TARGET_SDK_VERSION=26
COMPILE_SDK_VERSION=29

使用:

android {
    compileSdkVersion COMPILE_SDK_VERSION as int
    defaultConfig {
        minSdkVersion MIN_SDK_VERSION as int
        targetSdkVersion TARGET_SDK_VERSION as int
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值