1. 统一SDK版本管理配置

1. 统一SDK版本管理配置
2. build.gradle 使用each循环引入第三方框架
3. build.gradle中buildConfigField使用
4. 优化res资源管理, 使用SourceSets资源分包
5. gradle配置模板

为了提高项目开发效率,在实际项目开发过程中往往会引入一些开源框架,还有项目中使用的各种Module,当引入Module过多时最好提供一种统一的方式去管理版本号,如:compileSdkVersion、buildToolsVersion、minSdkVersion等。

我在网上找了很多资料,网上提供了好几种方案,写法也有好几种,不过最终原理其实都是差不多的,主要原理分为以下几步:

一. 创建配置文件config.gradle

配置信息就放在这个文件里, 文件名字随便取,后缀是.gradle即可。

情况一:文件放在项目的 app目录下,如下图:appConfig.png
appConfig.png
情况二:文件放在项目的 项目根目录下,如下图:config.png
config.png

二. 找到配置文件config.gradle

情况一:文件放在项目的 app目录下

一般来说,放在 app目录下config.gradle配置信息,只能在主项目中引用,引用方式:
在app目录下的build.gradle文件开头,加上apply from: 'config.gradle'。如下图


a.png
情况二:文件放在项目的 app目录下

这种情况,config.gradle配置信息可以全局使用,在主工程和Module下都可以使用,统一SDK版本配置需要使用这种方式,引用方式:
在项目根目录下的build.gradle文件加上apply from: 'config.gradle'。如下图


b.png

三. 引用配置信息里面的内容

1. config.gradle应该怎么写

网上有好几种写法,下面是我个人认为比较方便的方案

ext {
    //sdk版本管理
    CompileSdkVersion = 26  // 用于编译的SDK版本
    BuildToolsVersion = "28.0.3" // 用于Gradle编译项目的工具版本

    ApplicationId = "com.wanji.shop" //包名
    MinSdkVersion = 19    // 最低支持Android版本
    TargetSdkVersion = 26   // 目标版本
    VersionCode = 1         //版本号
    VersionName = "1.0"
    MinifyEnabled = false //是否混淆

    // App dependencies
    appcompatVersion = "26.1.0"
    constraintVersion = "1.1.3"
    junitVersion = "4.12"
    runnerVersion = "1.0.2"
    espressoVersion = "3.0.2"

    supportV4Version = "26.1.0"
    designVersion = "26.1.0"

    //公共的(系统的)
    roots = [
            //项目基本的(每个项目需要的)
            "appcompatV7"               :   "com.android.support:appcompat-v7:${appcompatVersion}",
            "constraint"                :   "com.android.support.constraint:constraint-layout:${constraintVersion}",
            "junit"                     :   "junit:junit:${junitVersion}",
            "runner"                    :   "com.android.support.test:runner:${runnerVersion}",
            "espresso"                  :   "com.android.support.test.espresso:espresso-core:${espressoVersion}",
    ]
2. build.gradle怎么引用

①: 对于ext下的变量,网上的写法:rootProject.ext.CompileSdkVersion或者ext.CompileSdkVersion,其实直接引用变量名CompileSdkVersion就可以了。
②:对于:roots数组,直接roots.appcompatV7这样引用就可以了。总体写法如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion CompileSdkVersion
    defaultConfig {
        applicationId ApplicationId
        minSdkVersion MinSdkVersion
        targetSdkVersion TargetSdkVersion
        versionCode VersionCode
        versionName VersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

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

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation roots.appcompatV7
    implementation roots.constraint
    testImplementation roots.junit
    androidTestImplementation roots.runner
    androidTestImplementation roots.espresso
}

你可能感兴趣的:(1. 统一SDK版本管理配置)