之前已经介绍了模块化的组建开发,但是其中针对gradle依赖包的版本控制进行处理。因为各个模块都会引用自身的依赖包,可是整合在一起的时候,这些依赖包不能重复出现,会出现冲突,所以就需要我们写一个总的依赖库,让各个模块进行引用。
非常简单的例子:
1)创建一个version.gradle文件(鼠标放在我们的项目名称上,然后右键new,然后选择file,然后命名version.gradle这里说一下,必须是.gradle结尾的文件)
2)然后对比一下,我们每个module中的gradle里面的依赖的dependencies默认为
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
修改之后
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
api deps.constraint
api deps.appcompat
api deps.junit
api deps.runner
api deps.espresso
}
api deps就是一个map,它里面将我们的依赖名称和版本号以[key,value]的形式保存的,在我们新建的version.gradle中
ext.deps = [:]
def versions = [:]
versions.constraint = "1.1.3"
versions.appcompat = '28.0.0'
versions.junit = "4.12"
versions.runner = "1.0.2"
versions.espresso = "3.0.2"
deps.constraint = "com.android.support.constraint:constraint-layout:$versions.constraint"
deps.appcompat = "com.android.support:appcompat-v7:$versions.appcompat"
deps.junit = "junit:junit:$versions.junit"
deps.runner = "com.android.support.test:runner:$versions.runner"
deps.espresso = "com.android.support.test.espresso:espresso-core:$versions.espresso"
ext.deps = deps
然后这里注意一下,还没完,必须要在我们的project中build.gradle里面的buildscript中添加
apply from: 'version.gradle'
具体是这样存在
buildscript {
apply from: 'version.gradle'
ext.kotlin_version = '1.2.71'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
ok,这样我们只需要在这个公共的配置文件中依赖就可以得到所有库的版本喽。