首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

多人协作时gradle配置优化(3)

多人协作时gradle配置优化(3)

由于build.gradle文件中一些配置在多人协作时会被频繁修改,所以我们需要将这些配置提取出来使得每个开发者的修改不影响到版本库中的配置,有以下两种方法:

    将这些配置,如android插件版本(com.android.tools.build:gradle:3.1.2),compileSdkVersion等,放到gradle.properties中。为什么要放到gradle.properties中,因为该文件中的配置在项目构建时会被自动加载,而且我们并不会将gradle.properties放到版本管理中,可以随意修改而不影响其他开发者。具体做法参考如下:

项目根目录的build.gradle文件

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
     
    buildscript {
        
        repositories {
            google()
            jcenter()
        }
        dependencies {
            def ver = '3.1.2'//版本库中的默认配置,一般只有管理员才能修改
            if (hasProperty('androidPluginVer')) {//如果配置文件中定义了该属性,则使用,否则使用默认配置
                ver = getProperty('androidPluginVer')
            }
            classpath "com.android.tools.build:gradlever"
            
     
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
     
    allprojects {
        repositories {
            google()
            jcenter()
        }
    }
     
    task clean(type: Delete) {
        delete rootProject.buildDir
    }

模块的build.gradle文件

    apply plugin: 'com.android.application'
     
    android {
        def sdkVer = 26 //版本库中的默认配置,一般只有管理员才能修改
        if (hasProperty('sdkVersion')) {//如果配置文件中定义了该属性,则使用,否则使用默认配置
            sdkVer = getProperty('sdkVersion')
        }
        compileSdkVersion sdkVer
        defaultConfig {
            applicationId "com.xiaofei.activityhide"
            minSdkVersion 15
            targetSdkVersion sdkVer
            versionCode 1
            versionName "1.0"
            if (rootProject.hasProperty("developer")) {
                versionName = developer
            }
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
     
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:26.1.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.0'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.1'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }
返回列表