项目中module很多的时候,各module中build.gradle文件中的compileSdkVersion、buildToolsVersion及依赖库版本(如appcompat-v7)可能存在版本不一致的问题。
针对该问题,解决方案是:统一管理版本号。
- config.gradle文件创建
- 版本号引用
1.config.gradle
在项目根目录下创建config.gradle文件,具体内容自定义:
ext{
androidBuildToolsVersion = "26.0.2"
androidMinSdkVersion = 16
androidTargetSdkVersion = 26
androidCompileSdkVersion = 26
supportLibraryVersion = '26.+'
// 设置是否使用混淆
MINIFY_ENABLED = true
MINIFY_DISABLED = false
// Version of "com.android.support:appcompat-v7", refer it as folow:
// compile "com.android.support:appcompat-v7:${APPCOMPAT_VERSION}"
APPCOMPAT_VERSION = '26.+'
version = '1.5'
android = [
recyclerView: "com.android.support:recyclerview-v7:${supportLibraryVersion}",
appcompat_v7: "com.android.support:appcompat-v7:${supportLibraryVersion}",
support_v4 : "com.android.support:support-v4:${supportLibraryVersion}",
]
view = [
aaaaaa: "com.xxxxxx:aaaaaa:${version}",
]
}
当然,你也可以将config.gradle的内容直接写在项目根目录下的build.gradle文件中。
2.版本号引用
首先需要在根目录下的build.gradle文件中,添加对config.gradle文件的引用
apply from: 'config.gradle'
如果config.gradle的内容直接写在了build.gradle文件中,上面的引用步骤可以忽略。
添加引用后,就可以在module的build.gradle文件中引用设置的版本号。
关键代码:
rootProject.ext.***
$rootProject.APPCOMPAT_VERSION
android {
compileSdkVersion rootProject.ext.androidCompileSdkVersion
buildToolsVersion rootProject.ext.androidBuildToolsVersion
defaultConfig {
applicationId "com.***.myvideodemo"
minSdkVersion rootProject.ext.androidMinSdkVersion
targetSdkVersion rootProject.ext.androidTargetSdkVersion
versionCode 1
versionName "1.0"
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
...
compile "com.android.support:appcompat-v7:$rootProject.APPCOMPAT_VERSION"
}
说明一个坑:
compile "com.android.support:appcompat-v7:$rootProject.APPCOMPAT_VERSION"
compile后面必须使用双引号,如果使用单引号,编译报错
网友评论