Gradle_配置公共global.gradle文件

版权声明:本博客主要记录学习笔记和遇到的一些问题解决方案,转载请注明出处! https://blog.csdn.net/u010982507/article/details/82990653

Android Studio开发Android工程时,可能一个工程要依赖多个Module,而每个Module里又有各自单独的bulid.gradle文件,每个bulid.gradle都有自己的版本号或者配置规则,如果每个Module的bulid.gradle文件都要配置,那么工作就会变得繁琐,所以本章讲解如何通过一个公共的global.gradle文件,来配置整个项目的bulid.gradle

创建global.gradle文件

// 用来存放应用中的所有配置变量,统一管理,而不再是每个moudle里都自己写一份,修改起来更加的方便
ext {
    // 支持库版本号
    supportLibraryVersion = '25.3.1'
    // Android API 信息
    android = [apkName             :'package', // 配置打包后的apk的名称
               compileSdkVersion   : 26,   //编译的SDK版本
               buildToolsVersion   : '26.0.2',  //
               applicationId       : 'cn.com.agree.sdk.runtime.dev',  //应用Id
               minSdkVersion       : 19,    //兼容的最低SDK版本
               targetSdkVersion    : 22,    //用于提高指定版本的设备上程序运行体验
               versionCode         : 1,     //版本号
               versionName         : '1.0.0',  //版本名
               multiDexEnabled     : true]     //添加多dex分包支持
    
    // 签名配置
    signConfigs = ['storeFile'    : '../keystore/release.keystore',   //签名文件uri
                   'storePassword': '123456',                         //密匙库口令
                   'keyAlias'     : 'release-key',              //签名别名
                   'keyPassword'  : '123456']                         //签名口令
    
    // 依赖包管理
    dependencies = ['libSupportV7'         : 'com.android.support:appcompat-v7:' + supportLibraryVersion,
                  'libSupportV4'           : 'com.android.support:appcompat-v4:' + supportLibraryVersion,
                  'libSupportMultidex'     : 'com.android.support:multidex:1.0.1',
                  'support_design'         : 'com.android.support:design:' + supportLibraryVersion,
                  'support_annotations'    : 'com.android.support:support-annotations:' + supportLibraryVersion,
                  'libRecyclerview'        : 'com.android.support:recyclerview-v7:' + supportLibraryVersion]
}

工程根目录下的bulid.gradle文件配置

// 引入'global.gradle文件
apply from: this.file('global.gradle')
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

app目录下的bulid.gradle文件配置

apply plugin: 'com.android.application'
android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion // 配置编译SDK版本
    buildToolsVersion rootProject.ext.android.buildToolsVersion // 配置编辑工具版本

    defaultConfig {
        applicationId rootProject.ext.android.applicationId // 配置包名
        minSdkVersion rootProject.ext.android.minSdkVersion // 配置最低SDK版本
        targetSdkVersion rootProject.ext.android.targetSdkVersion //配置目标版本
        versionCode rootProject.ext.android.versionCode // 配置版本号
        versionName rootProject.ext.android.versionName //配置版本名称
        multiDexEnabled true
    }

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

    signingConfigs {
        debug { //配置debug模式的证书信息
            keyAlias rootProject.ext.signConfigs.keyAlias
            keyPassword rootProject.ext.signConfigs.keyPassword
            storeFile file(rootProject.ext.signConfigs.storeFile)
            storePassword rootProject.ext.signConfigs.storePassword
        }
        release {  //配置release模式的证书信息
            keyAlias rootProject.ext.signConfigs.keyAlias
            keyPassword rootProject.ext.signConfigs.keyPassword
            storeFile file(rootProject.ext.signConfigs.storeFile)
            storePassword rootProject.ext.signConfigs.storePassword
        }
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

    lintOptions {
        abortOnError false
    }
}

repositories {
    flatDir {
        dirs 'libs'
    }
}
// 自定义APK安装包名
android.applicationVariants.all {
    variant ->
        variant.outputs.all {
            output ->
                def outputFile = output.outputFile
                if (outputFile.name.contains("debug")) {
                    outputFileName = new File("${rootProject.ext.android.apkName}-debug-${rootProject.ext.android.versionName}.apk")
                } else if (outputFile.name.contains("release")) {
                    outputFileName = new File("${rootProject.ext.android.apkName}-release-${rootProject.ext.android.versionName}.apk")
                }
        }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile rootProject.ext.dependencies.libSupportV7
    compile rootProject.ext.dependencies.support_design
    compile rootProject.ext.dependencies.support_multidex
}

猜你喜欢

转载自blog.csdn.net/u010982507/article/details/82990653