您的位置:首页 > 移动开发 > Android开发

在AndroidStudio中使用gradle构建出现的一些问题

2017-06-11 23:35 239 查看

1.版本不一致导致运行出错

在做公司项目跟进的时候,发现项目集成了很多moudle,这就导致最后编译出来的工程关于support.的一系列资源的版本不一致,因为有些support.会根据高版本的升级,例如我现在使用的是recyclerView23.4.0的依赖,其中需要使用support-v4的一些工具,可是某个moudle把v4定在的22.2.0,这就导致我使用过程中会 ClassNotFound 的异常,moudle由于某些原因不能升级,故而只能把recyclerView降价,可是即使我把依赖的版本降低编译出来的依然是23.4.0,这可能就是因为别的moudle使用的高版本导致的。

1.

这时候一种是像网上是查依赖树,看哪个moudle包含了这个高版本之后用命令去除(直接用的就是系统生成的例子,具体使用的时候直接模仿好了)

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})


2.

另一种就是采用强制版本,我就是使用这个方法,把recyclerView强行降到22.20,在moudle的buidle中最外层加上

configurations.all{
resolutionStrategy{
force'com.android.support:recyclerview-v7:22.2.0'
}
}


2.版本不一致导致不方便管理

这种情况的话直接用编程思想,把版本号定义为一个固定的参数,之后在其他的gradle中直接使用这个参数,最后需要更改的时候直接改一个参数就行了,牵一发而动全身,就是这个道理,编程本就该这样。

在根目录中最外层定义

ext{
BUILD_TOOL_VERSION = '25.0.0'

}


之后直接在其他子目录的gradle中使用这个参数就行了

android {
compileSdkVersion 22
buildToolsVersion BUILD_TOOL_VERSION

.
.
.
}


其实对本地的project也是可以进行exclude,只是需要在project 外面再包一层

compile(project(':react-native-custom-module')) {
exclude group: 'com.facebook.react', module: 'react-native'
}


其他的日后补充
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gradle