Android开发,如何解决依赖冲突Program type already present或者Conflict(s) found for the following module(s)

引入讯飞aiui的jar包时,与之前集成的腾讯x5浏览器内核产生了依赖冲突
报错内容为Program type already present:MTT.ThirdAppInfoNew

后续集成recyclerview的时候也报错,错误内容:Caused by: org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.conflicts.VersionConflictException: Conflict(s) found for the following module(s):
可以打开Android studio的eventlog查看具体的报错信息

Gradle sync failed: Could not resolve all dependencies for configuration ':app:debugRuntimeClasspath'.
			Conflict(s) found for the following module(s):
			- androidx.recyclerview:recyclerview between versions 1.1.0 and 1.0.0
			Run with:
			--scan or
			:app:dependencyInsight --configuration debugRuntimeClasspath --dependency androidx.recyclerview:recyclerview
			to get more insight on how to solve the conflict.
			Consult IDE log for more details (Help | Show Log) (446 ms)

查看依赖

可以通过gradle view插件查看,网上一搜一大堆

定位依赖冲突

在module的gradle中,加入如下代码

android {
	......
    configurations.all() {
        Configuration configuration ->
            //当遇到版本冲突时直接构建失败
            configuration.resolutionStrategy.failOnVersionConflict()
        }
}

这样便会在控制台打印出依赖冲突的具体库

解决冲突

依然是在module的gradle中

configurations.all() {
        Configuration configuration ->
            //当遇到版本冲突时直接构建失败
            configuration.resolutionStrategy.failOnVersionConflict()
			//指定版本,避免冲突
            configuration.resolutionStrategy.force(['androidx.appcompat:appcompat:1.1.0'])
            configuration.resolutionStrategy.force(['androidx.annotation:annotation:1.1.0'])
    }

参考文章Gradle 依赖&解决依赖冲突
Android开发之——依赖冲突Program type already present

你可能感兴趣的:(安卓开发)