解决AAR包引用第三方依赖无效

解决AAR包引用第三方依赖无效

遇到一个之前都没有注意到的问题,在拆分公共组件的时候,将一些公用模块打成aar,然后放到公司的私服maven上,出现这样一个问题,有的aar中引用了类似RxJava,Okhttp等第三方库,发现在主项目中仍需要添加相应依赖才能使用,按理来说,正常使用module的时候,主项目应该也是可以直接使用module中的依赖才对,不清楚为什么会出现这种原因,然后就各种查资料,查看公司maven中的pom文件等等方式,出现了分歧。

A 方案

作为一个反面例子。我第一反应是去查aar包中是否能使用compile这种方式的依赖,查到的都是一些垃圾,完全没有用的东西,然后又人说需要本地jar是可用的,远程依赖不行,之后又把aar文件打开看了看,确实没有远程依赖的jar,之后的思路就是想办法把当前项目依赖的远程库的jar移动到本地项目目录中,这样不aar打包的时候不就把第三方的带过去了嘛。当然这是反面例子。

B 方案

作为一个成功例子。公司老司机。第一反应是Gradle应该是支持这种多层依赖方式的,老司机先google了相关资料,然后去了解maven的加载机制,之后就去看了gradle的源码,并没有从网络上查各种二手的解决方式,然后经过大概两个小时之后,老司机告诉我解决了,当时我还在冥思苦想怎么从获取当前项目所依赖的jar包。

解决方案

源码中的注释:

* apply plugin: 'java' //so that I can declare 'compile' dependencies
 *
 * dependencies {
 *   compile('org.hibernate:hibernate:3.1') {
 *     //in case of versions conflict '3.1' version of hibernate wins:
 *     force = true
 *
 *     //excluding a particular transitive dependency:
 *     exclude module: 'cglib' //by artifact name
 *     exclude group: 'org.jmock' //by group
 *     exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group
 *
 *     //disabling all transitive dependencies of this dependency
 *     transitive = false
 *   }
 * }

如果本地有gradle的源码,点击compile是可以跳转过去的,然后从最上面往下看,就会发现这段代码,其中最后一个标识:transitive ,表示当前依赖是否可以传递,默认是false,然后当使用aar的时候直接在主项目中加上这句话就可以了。具体的还有一些其他的使用有兴趣的可以自行去了解。

总结

不是说我大天朝不好,也不是说国内的技术环境差,这个事情给我最大的感觉就是,百度真是不行,你看到的和你想要知道根本就是刘亦菲和如花的区别,根本没有用,而且抄袭的气氛太严重,全是一样的内容,搬来搬去的,有什么意思?还有就是自我的总结,解决问题能力不行,习惯了吃二手的资料,不劳而获,会越来越降低解决问题的能力。同样的事情,我用了两个小时,收获甚微,而且没有解决,老司机也是两个小时,看了五六篇源码,了解其运行机制,并成功解决。这差距。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,714评论 25 709
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,975评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 在每个星光璀璨的夜晚, 一遍一遍的静数我的寂寞, 在寂寞的日子里, 享受一个人孤独的狂欢。 在每盏昏黄暗淡...
    静夜禅寺的小和尚阅读 366评论 0 0
  • 潇湘听语阅读 283评论 0 3