Android使用Gradle统一配置依赖版本
在Android开发中我们常常的会运用到模块化、组件化的开发方式,同时我们可以能会用到多个的Lib,但是有可能我们每个人使用的版本不一致,导致编译时间过长,我们现在开发中都是使用Gradle来依赖管理,那我们是否可以统一我们的版本,提高效率呢?
在我们以前直接的引用 appcompat-v7
implementation 'com.android.support:appcompat-v7:26.1.0'
如果v7升级,同时我们的几个module都使用到这个包的话,我们这个module都需要去修改,这个是不是太麻烦了,而且还容易遗漏,不想偷懒的程序员不是好的程序员。
统一管理实现
-
1.在主项目的根目录下创建config.gradle文件
- 2.在config.gradle文件中添加配置信息
ext { android = [ compileSdkVersion: 26, buildToolsVersion: "26.1.0", minSdkVersion : 19, targetSdkVersion : 26, versionCode : 1, versionName : "1.0.0" ] version = [ androidSupportSdkVersion: "26.1.0", retrofitSdkVersion : "2.4.0", dagger2SdkVersion : "2.15", butterknifeSdkVersion : "8.8.1", runner:"1.0.1", junit:"4.12", espressoSdkVersion : "3.0.1", canarySdkVersion : "1.5.4" ] dependencies = [ appcompatV7 : "com.android.support:appcompat-v7:${version["androidSupportSdkVersion"]}", design : "com.android.support:design:${version["androidSupportSdkVersion"]}", junit : "junit:junit:${version["junit"]}", runner : "com.android.support.test:runner:${version["runner"]}", espresso : "com.android.support.test.espresso:espresso-core:${version["espressoSdkVersion"]}", ] }
- 3.在主项目根目录下的build.gradle文件中加入
apply from: "config.gradle"
- 4.在使用的module 中添加引用
apply plugin: 'com.android.library'
def config = rootProject.ext.android
def librarys = rootProject.ext.dependencies
android {
compileSdkVersion config["compileSdkVersion"]
defaultConfig {
minSdkVersion config["minSdkVersion"]
targetSdkVersion config["targetSdkVersion"]
versionCode config["versionCode"]
versionName config["versionName"]
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation librarys.appcompatV7
testImplementation librarys.junit
androidTestImplementation librarys.runner
androidTestImplementation librarys.espresso
}
这样就是OK的了,所以的配置版本的信息都在config.gradle 进行统一管理是不是方便多了;