AS 解决依赖冲突

AS 解决依赖冲突,第1张

例如:工程 A 添加了 rxandroid:2.0.1 和adapter-rxjava两个libs.

而adapter-rxjava中使用了rxandroid:1.1.5

这样在工程中就会出现两个不同的类库。

引用的部分libs:

compile ‘io.reactivex.rxjava2:rxandroid:2.0.1’

compile ‘io.reactivex.rxjava2:rxjava:2.0.1’

compile ‘com.google.code.gson:gson:2.7’

compile ‘com.squareup.retrofit2:retrofit:2.1.0’

compile ‘com.squareup.retrofit2:converter-gson:2.1.0’

compile (‘com.squareup.retrofit2:adapter-rxjava:2.1.0’)

编译之后 如下图:

二、问题分析:

1、 rxandroid:1.1.5 在 dependencies 并没有添加1.1.5版本(注意工程中添加的是rxandroid:2.0.1),此lib从何而来?

答案是肯定的,显然在dependencies添加的其他libs中有使用到rxandroid:1.1.5版本的。

1

2、多余的rxandroid:1.1.5 是被那个lib使用到的呢?如何知道呢?

在文件目录下或 Android Studio的 Terminal下敲 gradlew -q app:dependencies 便有各个libs引用关系的输出:

通过各个libs引用的关系图,就可以清楚的看出:adapter-rxjava:2.1.0 中使用的是 io.reactivex:rxjava:1.1.5

三、问题解决:

1、知道是那个libs中和rxandroid:1.1.5 ,问题就好解决了,直接

exclude 问题解决!

compile (‘com.squareup.retrofit2:adapter-rxjava:2.1.0’){

exclude module: ‘rxjava’

}

第一步 :生成aar文件 我的方法是通过maven-android-plugin来生成的,如果你使用过actionbarsherlock以前的版本的话,这个工具应该不陌生,如果你连maven 都不知道的话,建议好好学习一下maven,虽然现在gradle很火 ,但是我还是最喜欢maven。 关于具体生成步骤不久不详细说了,文章最后贴出几个网址供大家学习使用,放心我按顺序给你们,只要一步一步的来绝对能成功 1 把你的maven版本提升到3pany \-DartifactId=my-android-application如果不能够编译我们可能要修改一下pom  <?xml version="1.0" encoding="UTF-8"?><modelVersion>4.0.0</modelVersion><groupId>com.lee.study.android</groupId><artifactId>NiMa</artifactId><version>0.0.1</version><packaging>aar</packaging><name>NiMa</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><platform.version>4.1.1.4</platform.version><android.plugin.version>3.8.0</android.plugin.version></properties><dependencies><dependency><groupId>com.google.android</groupId><artifactId>android</artifactId><version>${platform.version}</version><scope>provided</scope></dependency></dependencies><build><finalName>${project.artifactId}</finalName><pluginManagement><plugins><plugin><groupId>com.jayway.maven.plugins.android.generation2</groupId><artifactId>android-maven-plugin</artifactId><version>${android.plugin.version}</version><extensions>true</extensions></plugin></plugins></pluginManagement><plugins><plugin><groupId>com.jayway.maven.plugins.android.generation2</groupId><artifactId>android-maven-plugin</artifactId><configuration><sdk><platform>16</platform><path>E:\android_work\sdk\</path></sdk></configuration></plugin></plugins></build></project>上面都是我的pom,修改了打包类型和插件版本以及添加了sdk位置。然后执行打包命令,就可以生成aar文件了,如果你是已经有写好的类库的话,可以尝试这修改成maven形式的。第二步 导入到android studio中 创建libs文件夹,放入想要导入的文件1 修改build.gradle ,依然是给出我的大家可以按照自己的项目对比修改  buildscript {repositories {mavenCentral()}dependencies {classpath 'com.android.tools.build:gradle:0.6.+'}}apply plugin: 'android'repositories {mavenLocal()mavenCentral()flatDir {dirs 'libs'}}android {compileSdkVersion 18buildToolsVersion "18.1.1"defaultConfig {minSdkVersion 7targetSdkVersion 18}}dependencies {// compile fileTree(dir: 'libs', include: '*.aar') compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'compile 'com.jayway.maven.plugins.android.generation2.samples.libraryprojects:aar-lib1:1.0.0@aar'//compile 'com.lee.study.android:NiMa:0.0.1@aar' compile 'com.android.support:support-v4:18.0.+'}android {compileOptions.encoding = "UTF-8"}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11658499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存