美文网首页
【Gradle】关于jar包冲突

【Gradle】关于jar包冲突

作者: 械勒的时间 | 来源:发表于2018-07-12 20:02 被阅读0次

前阵子看到一篇文章,大致意思是说年底之前,不支持权限管理的应用会无法安装,出现各种各样的问题云云
所以趁最近不忙,升级targetSdkVersion到25,添加权限策略。
早干嘛去了?公司就一个安卓,忙不过来(其实是懒)。


如果编译出现 transformDexArchiveWithExternalLibsDexMergerForDebug 字样,不要怀疑,这是包冲突。
我是引入PermissionsDispatcher的时候,报出的异常,因为它自身也引用了
com.android.support:support-compat:27.1.1
com.android.support:support-v13:25.3.1
两个包。

出现问题,首先是排查手段。

确定冲突的包

1,通过android studio自带的gradle工具

androidDependencies

从编译器右侧找到这个Gradle,依次打开目录,找到androidDependencies双击,几秒钟之后,会有一个长长的依赖库的列表展示在下方,如果你的依赖比较少的话,到这里就可以开始排查了,但是如果依赖很多的话,嗯,要瞎。
(ノ`ー´)ノ~~┻━┻

2,通过gradlew指令

打开terminal,此时的路径应该为项目根目录,直接输入
gradlew -q app:dependencies
其中app换成你想要看依赖的module的名称,我只有一个名为app的module,就直接复制上去了。
回车之后稍等几秒,terminal界面会为我们显示一个依赖包的树结构,

这个跟上头那个差不多,但是好歹有树结构,细细看两眼,大概就能确定冲突的位置了。

3,插件查看

有这个一个插件,叫做gradle view,是专门用来查看依赖树结构的。
我们照例打开File->settings,然后按图搜索并安装插件。
我的已经安装了,所以不显示安装按钮。

搜索1.png 搜索2.png

之后重启Android Studio
不重启不显示。

使用.png

在View->Tool Windows菜单里找到刚刚安装的gradle view,点击打开,稍等一会。
我们会看到类似于下图的一个可打开的菜单。

树结构.png

我比较推荐这个方法,因为没有记忆负担,而且不至于一屏太多东西,看的眼花。

解决包冲突

确定问题之后,解决问题就很简单了,可以使用exclude指令,简单高效,写法类似于下面代码。


    implementation('com.github.hotchemi:permissionsdispatcher:2.4.0') {
        exclude group: 'com.android.support'
        // 或者
        //  exclude module: "support-v13"
    }

最后,没有升级targetSdkVersion的朋友们赶快升级,另推荐一篇博文可以看一下。
《Android targetSdkVersion 从22提到25 你需要知道的一切》


个人理解,难免有错误纰漏,欢迎指正。转载请注明出处。

相关文章

  • 【Gradle】关于jar包冲突

    前阵子看到一篇文章,大致意思是说年底之前,不支持权限管理的应用会无法安装,出现各种各样的问题云云所以趁最近不忙,升...

  • Android:gradle编译系统

    如何查看jar包依赖? 为何会下载两个相同的gradle?? 如下图 关于gradle-wrapper.jar,可...

  • Es的jar以及环境安装以及错误

    1:jar包冲突 jar包冲突:jruby-complete 与 joda-time jar 包冲突。两者中都有o...

  • Android Studio多个jar包冲突问题

    如果遇到多个jar包中的某个文件冲突,可以在对应module下的build.gradle文件的android标签下...

  • 大数据小问题

    1 Hadoop Mapreduce 提交YARN jar包冲突问题 最近开发遇到一个jar包冲突的问题, 我们的...

  • AndroidStudio打包时包依赖冲突

    在build.gradle中依赖了很多第三方的项目,在出现jar包的冲突时,如下图: 如果我们无法用眼睛排除那些包...

  • Maven中依赖冲突解决方案

    在使用Maven中我们导入jar包坐标时会产生依赖传递,而依赖传递难免会发生jar包间的依赖冲突,解决jar包冲突...

  • android studio 实用技巧

    打jar包android studio 默认提供的是aar包,如果要打成jar包的话,就要自己写gradle ta...

  • jar包冲突

    当使用maven导入依赖时,可能会出现不同的依赖包含了同一个jar,在编译期间不会报错。可一旦run app的时候...

  • gradle片段

    gradle 常用配置 多模块项目 setting.gradle gradle 发布jar包到本地仓库 gradl...

网友评论

      本文标题:【Gradle】关于jar包冲突

      本文链接:https://www.haomeiwen.com/subject/vzwrpftx.html