版权声明:本博客主要记录学习笔记和遇到的一些问题解决方案,转载请注明出处! 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
}