gradle查看解决依赖问题-记录Butterknife8.5.1
来源:互联网 发布:淘宝上下架规则2017 编辑:程序博客网 时间:2024/06/08 13:46
相信每个人都遇到过重复引用库、冲突的问题。如support-v4、appcompat-v7、NineOldAndroids很容易被多次引用。
前同事在临上线前打包遇到merg出错(内心飘过一万头草泥马)
How fix?
一个一个module检查过去没有,这时候就有可能是第三方库引用了,可是第三方库那么多,How do?头疼,先换个姿势找到哪两个jar导致重复。通过打开文件发现DisplayManagerCompat类属于哪两个jar包
可以确定出问题的jar为support-compat-25.1.0和support-v4-22.2.0,我们自己有依赖compat、v4 22.2.0,现在要找出冲突的compat25.1是哪个库添加的(前戏太长,我们要直奔主题)。使用maven时可以查看依赖关系,没理由要取代maven的gradle不支持。
- gradle projects
先查看有哪些项目
- gradle dependencies
从图中可以看到是butterknife8.5.1依赖了compat25.1.0。
- 添加exclude
修改compile添加exclude后解决
compile ("com.jakewharton:butterknife:8.5.1") {
exclude group : 'com.android.support'
}
扩展
- 强制指定低版本force
同一个grop的库多个引用时,会自动取最版本最高的,即我们通过gradle dependencies查看后的标(*)或者 -> 后的版本。
但是我们有时候需要覆盖使用为低版本,应用场景,使用React Native时想指定‘com.android.support:appcompat-v7:23.0.1’可以修改为
compile ("com.android.support:appcompat-v7:23.0.1") { force = true }
- 查看pom依赖关系
可以通过gradle命令查看依赖关系,那么我们写在build.gradle里面的依赖关系一定也有地方指定。每个工程里面指定gradle,gradle查找依赖库。根据这个逻辑,查看项目文件夹下的.idea->libraries->butterknife_8_5_1.xml、support_compat_25_1_0.xml、support_v4_22_2_0.xml,其中butterknife_8_5_1.xml内容如下:
<component name="libraryTable"> <library name="butterknife-8.5.1"> <CLASSES> <root url="file://$PROJECT_DIR$/regClientDoc/build/intermediates/exploded-aar/com.jakewharton/butterknife/8.5.1/res" /> <root url="jar://$PROJECT_DIR$/regClientDoc/build/intermediates/exploded-aar/com.jakewharton/butterknife/8.5.1/jars/classes.jar!/" /> </CLASSES> <JAVADOC /> <SOURCES> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/8.5.1/16724f486072e3ab970fc47ccff6f9013061fa6/butterknife-8.5.1-sources.jar!/" /> </SOURCES> </library></component>
根据source文件上级目录进入,找到butterknife-8.5.1.pom文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>com.jakewharton</groupId> <artifactId>butterknife</artifactId> <version>8.5.1</version> <packaging>aar</packaging> <name>Butterknife</name> <description>Field and method binding for Android views.</description> <url>https://github.com/JakeWharton/butterknife/</url> <licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <developers> <developer> <id>jakewharton</id> <name>Jake Wharton</name> </developer> </developers> <scm> <connection>scm:git:git://github.com/JakeWharton/butterknife.git</connection> <developerConnection>scm:git:ssh://git@github.com/JakeWharton/butterknife.git</developerConnection> <url>https://github.com/JakeWharton/butterknife/</url> </scm> <dependencies> <dependency> <groupId>com.jakewharton</groupId> <artifactId>butterknife-annotations</artifactId> <version>8.5.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.android.support</groupId> <artifactId>support-annotations</artifactId> <version>25.1.0</version> <scope>compile</scope> </dependency> <!-- 罪魁祸首 --> <dependency> <groupId>com.android.support</groupId> <artifactId>support-compat</artifactId> <version>25.1.0</version> <scope>compile</scope> </dependency> </dependencies></project>
可以看到其中有依赖support-compat25.1.0
- exclude的其它用法
关注我的公众号
参考:
Add Build Dependencies
Dependency Management
Gradle Task
- gradle查看解决依赖问题-记录Butterknife8.5.1
- gradle 解决依赖冲突问题
- AS gradle问题 解决记录
- gradle 3解决包依赖问题笔记
- Gradle解决依赖冲突
- gradle 查看项目依赖项
- Android Studio(Gradle)解决库依赖冲突问题
- Android Studio(Gradle)解决库依赖冲突问题
- Android Studio(Gradle)解决库依赖冲突问题
- Android Studio(Gradle)解决库依赖冲突问题
- Android Studio(Gradle)解决库依赖冲突问题
- Android Studio(Gradle) 解决库依赖 冲突问题
- Android Studio(Gradle)解决库依赖冲突问题
- 解决gradle的本地工程依赖和通过maven依赖之间的冲突问题
- gradle学习笔记--查看task依赖
- 使用Gradle查看Android依赖树图
- android studio 插件 gradle view 查看gradle依赖树
- android studio 插件 gradle view 查看gradle依赖树
- 关于Jfinal中用户登录的问题
- SQLyog连接MySQL
- Android 倒计时功能的实现(CountDownTimer)
- 基于ROS的Most Stars开源代码汇总(自动驾驶汽车+RGBDSLAMv2+ROS2+人识别与跟踪等)
- activiti动态创建流程
- gradle查看解决依赖问题-记录Butterknife8.5.1
- webpack入门--快速上手
- mybatis配置对象包含对象以及List
- redis3.0配置文件详解
- gulp安装详解、及less
- Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- 【Unity&继承】关于继承的一些问题
- NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象
- iOS-关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)