Gradle基本配置

1.共享变量

定义一个名为common_config.gradle的文件放在工程根目录下。内容如下:

project.ext{

    //java语言
    javaVersion = 8
    javaMaxHeapSize = '4G'
    
    //Android编译版本
    compileSdkVersion = 27
    buildToolsVersion = "27.0.3"
    minSdkVersion = 17
    targetSdkVersion = 27
    
    //混淆
    minifyEnable = true
    shrinkResEnable = minifyEnable

    //JDK版本兼容
    sourceCompatibility = this.&getJavaVersion()
    targetCompatibility = this.&getJavaVersion()
}

def getJavaVersion(){
    switch(project.ext.javaVersion){
        case "7":
            return JavaVersion.VERSION_1_7
        case "8":
            return JavaVersion.VERSION_1_8
        default:
            return JavaVersion.VERSION_1_6
    }
}

1.某个工程modle的build.gradle想要引用配置的话,如下:

apply from: "${project.rootDir}/common_config.gradle"

android {
    compileSdkVersion project.ext.compileSdkVersion
    buildToolsVersion project.ext.buildToolsVersion

    defaultConfig {
        minSdkVersion project.ext.minSdkVersion
        targetSdkVersion project.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
    }

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

    compileOptions {
        sourceCompatibility project.ext.sourceCompatibility
        targetCompatibility project.ext.targetCompatibility
    }
}

2.同时对所有modle添加配置的话,则在工程根目录下的build.gradle下添加如下:

subprojects {
    apply from: "${project.rootDir}/common_config.gradle"

    dependencies {
        testCompile 'junit:junit:4.12'
    }
}

2.aar函数库的引用

比如工程包含两个module:app和otherpart,其中app依赖于otherpart,在otherpart/libs目录下存放; 依赖函数库。

为了otherpart能正常引用aar文件中的类,需要在otherpart/build.gradle文件中添加如下:

android{
    ...
    
    //为了能够在工程的libs目录中找到其中的aar文件
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

dependencies {
    //aar文件的依赖配置
    compile(name: 'aar的名字' , ext: 'aar')
}

如果其他模块依赖于otherpart的aar,则需要在根目录下的build.gradle添加如下:

allprojects {
    repositories {
        ...
        flatDir {
            dirs '../otherpart/libs'
        }
    }
}

3.签名和混淆的配置

在app下的build.gradle文件中进行配置如下:

android {
    signingConfigs {
        //** 需要替换成自己项目的值,其中***.keystore文件和build.gradle位于同级目录
        myConfig {
            storeFile file("***.keystore")
            storePassword "***"
            keyAlias "***"
            keyPassword "***"
        }
    }


    buildTypes {
        debug {
            // debug版本可签名也可不签名
            signingConfig signingConfigs.myConfig
            //是否混淆
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 
            'proguard-rules.pro'
        }
        release {
            // 签名配置
            signingConfig signingConfigs.myConfig
            //是否混淆
            minifyEnabled true
            //Zipalign优化
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 
            'proguard-rules.pro'
        }
    }
}

4.Maven Central和JCenter

allprojects {
    repositories {
        mavenCentral()
        jcenter()
    }
}

获取函数库的原理:

以EventBus为例:

compile 'de.greenrobot:eventbus:2.4.0'

GROUP_ID:ARTIFACT_ID:VERSION

此处GROUP_ID是de.greenrobot,ARTIFACT_ID是eventbus,VERSION是2.4.0。

GROUP_ID:标识函数库所属的Group。

ARTIFACT_ID:标识函数库的名字。

VERSION:标识函数库的版本号。

你可能感兴趣的:(android,gradle)