【Android】【Gradle】gradle模板

这套模版,汇集了常见的gradle配置,大家可以根据自己需要,选择性使用


apply plugin: 'com.android.application'

android {

    //SDK和编译工具版本
    compileSdkVersion 27
    buildToolsVersion '28.0.3'

    defaultConfig {

        //兼容的设备版本
        minSdkVersion 23
        targetSdkVersion 27

        //应用ID和版本
        applicationId 'com.easing.test'
        versionCode 1
        versionName '1.1.1.935'

        //开启注解处理器
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath = true
            }
        }

        //Java语法版本,默认为Java7,很多时候需要用到Java8的特性
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }

        //支持的CPU指令集,用到jni时需要设置
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
    }

    //第三方库配置
    greendao {
        schemaVersion 2019051201
    }

    //加载指定位置的so库,用到jni时需要设置
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

    //编译jni目录生成so文件
    //如果编译的so文件已经放到libs文件夹下,需要注释此配置,否则会出现so库冲突
    externalNativeBuild {
        ndkBuild {
            path 'src/jni/Android.mk'
        }
    }

    //签名配置
    signingConfigs {
        aodun {
            keyAlias 'aodun'
            keyPassword 'aodun2012'
            storeFile file('aodun.jks')
            storePassword 'aodun2012'
        }
    }

    //打包配置
    buildTypes {

        debug {
            debuggable true
            zipAlignEnabled true
            shrinkResources false
            minifyEnabled false
            //混淆配置
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //使用签名
            signingConfig signingConfigs.aodun
            //APK名称
            applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "animal-v${defaultConfig.versionName}-debug-${releaseTime()}.apk"
                }
            }
            //定义配置变量,编译后可以在代码中通过BuildConfig类使用
            buildConfigField "String", "releaseDate", '"2019年05月12日"'
            buildConfigField "String", "releaseContent", '"修改了应用主页图标"'
            //替换manifest中的变量
            manifestPlaceholders = [
                    appName  : "animal-debug",
                    dbVersion: 2019051201
            ]
        }

        release {
            debuggable true
            zipAlignEnabled true
            shrinkResources true
            minifyEnabled true
            //混淆配置
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-.pro'
            //使用签名
            signingConfig signingConfigs.aodun
            //APK名称
            applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "animal-v${defaultConfig.versionName}-release-${releaseTime()}.apk"
                }
            }
            //定义配置变量,编译后可以在代码中通过BuildConfig类使用
            buildConfigField "String", "releaseDate", '"2019年05月12日"'
            buildConfigField "String", "releaseContent", '"修改了应用主页图标"'
            //替换manifest中的变量
            manifestPlaceholders = [
                    appName  : "animal-debug",
                    dbVersion: 2019051201
            ]
        }
    }

    //多渠道打包,使用不同配置
    productFlavors {
        xiaomi {
            applicationId "com.easing.test.xiaomi"
            versionCode 1
            versionName "1.1.1"
            manifestPlaceholders = [
                    channel: "xiaomi"
            ]
        }

        huawei {
            applicationId "com.easing.test.huawei"
            versionCode 2
            versionName "2.1.1"
            manifestPlaceholders = [
                    channel: "huawei"
            ]
        }
    }

    //禁用Lint代码警告,可以屏蔽一些非必要的代码警告
    lintOptions {
        disable 'NewApi'
    }

    //展开aar资源,用到aar库时需要设置
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

//全局排除冲突库
configurations {
    compile.exclude group: 'com.android.support'
    compile.exclude group: 'com.android.support', module: 'design'
}

//库依赖
dependencies {
    //排除单个引用的部分库
    api project(':android-commons') {
        exclude group: 'com.android.support', module: 'design'
    }
    api files('libs/easy-rtsp-to-rtmp.aar')
    api files('libs/baidumap-overlayutil.jar')
    api 'org.greenrobot:greendao:3.2.2'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}

//定义方法
def releaseTime() {
    return new Date().format("MMdd")
}



猜你喜欢

转载自blog.csdn.net/u013718730/article/details/90112617