AndroidStudio下Gradle实现对配置统一管理

对SDK版本和在组建开发中对应用名进行统一管理。

首先在project目录下新建一个gradle文件,如config.gradle文件如下:

ext {
    // false: 组件模式
    // true :集成模式
    isModule = true
    android = [
            compileSdkVersion: 26,
            minSdkVersion    : 14,
            targetSdkVersion : 26,
            versionCode      : 1,
            versionName      : "1.0"
    ]

    appId = ["app"  : "com.dongnao.dnrouter",
             "module1": "com.dongnao.module1",
             "module2" : "com.dongnao.module2" ]

    supportLibrary = "26.1.0"
    dependencies = [
            "appcompat-v7"     : "com.android.support:appcompat-v7:${supportLibrary}",
    ]
}

然后在project下的build.gradle开头把config.gradle引入

//相当于引入头文件 将 config中的内容引入进来
apply from: "config.gradle"

在module下的gradle中,先要引入配置gradle的节点设置全局,如下:

def cfg = rootProject.ext.android
def appId = rootProject.ext.appId

android {
    compileSdkVersion cfg.compileSdkVersion
    defaultConfig {
        minSdkVersion cfg.minSdkVersion
        targetSdkVersion cfg.targetSdkVersion
        versionCode cfg.versionCode
        versionName cfg.versionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = [ moduleName : project.getName() ]
            }
        }

        //添加一条 boolean类型的变量
        buildConfigField("boolean","isModule",String.valueOf(isModule))
        buildConfigField("String","projectName","\"${String.valueOf(project.getName())}\"")

        //组件模式下
        if (!isModule){
            applicationId appId['module2']
        }

        //资源配置
        sourceSets{
            main{
                //在组件模式下 使用不同的manifest文件
                if(!isModule){
                    manifest.srcFile 'src/main/module/AndroidManifest.xml'
                    java.srcDirs 'src/main/module/java','src/main/java'
                }else{
                    manifest.srcFile 'src/main/AndroidManifest.xml'
                }
            }
        }

    }

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

}

 

对于dependencies:

 

引入头:

def librarys = rootProject.ext.dependencies
引入:librarys.each { k, v -> api v }

 

在组建化开发中,需要根据模式配置module还是library,如果是module的话,就还需要配置applicationId,Manifest等。

 

//根据isModule标签动态的切换 集成/组件模式
if (isModule){
    apply plugin: 'com.android.library'
}else{
    apply plugin: 'com.android.application'
}

module下配置包名

//组件模式下
        if (!isModule){
            applicationId appId['module2']
        }

配置不同模式下的资源文件,在module模式下应该有自己的launcherActivity。

 //资源配置
        sourceSets{
            main{
                //在组件模式下 使用不同的manifest文件
                if(!isModule){
                    manifest.srcFile 'src/main/module/AndroidManifest.xml'
                    java.srcDirs 'src/main/module/java','src/main/java'
                }else{
                    manifest.srcFile 'src/main/AndroidManifest.xml'
                }
            }
        }

把gradle中配置同步到java层BuildConfig下。

//添加一条 boolean类型的变量
buildConfigField("boolean","isModule",String.valueOf(isModule))
//String 类型. 参数:String 代表类型,“projectName”代表fieldName,最后:代表值(如果是String类型,需要自己加"")
buildConfigField("String","projectName","\"${String.valueOf(project.getName())}\"")

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值