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

本文讨论了在Android Studio项目中遇到的Gradle版本不一致导致的运行错误和管理困难。当模块间的support库版本冲突时,可能会出现ClassNotFound异常。解决方案包括检查依赖树并移除不需要的高版本依赖,或者使用强制版本指定统一的低版本。此外,通过在根目录定义版本参数,可以方便地在整个项目中统一管理Gradle版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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'
}

其他的日后补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值