阅读 180

小白之Android Gradle Dependence的问题记录

小白之Android Gradle Dependence的问题记录

Cannot find a version of 'group:module:version' that satisfies the version constraints:

1. 情形一:项目中conpileOnly的库【A】的版本,比实际依赖的某个三方库中依赖的【A】的版本要高。

例如

Cannot find a version of 'com.google.android.material:material' that satisfies the version constraints:            Dependency path 'com.huami.flutter.feedback:flutter_feedback:1.0-SNAPSHOT' --> 'com.google.android.material:material:1.4.0'            Constraint path 'com.huami.flutter.feedback:flutter_feedback:1.0-SNAPSHOT' --> 'com.google.android.material:material:{strictly 1.0.0}' because of the following reason: releaseRuntimeClasspath uses version 1.0.0 复制代码

feedback插件module中compileOnly了1.4.0的material库。但是引入的三方库中使用的是1.0.0版本。会出现这样的错误。

可能原因(根据自己的分析,不一定正确): compileOnly的版本实际是在编译阶段生效的版本。如果比实际依赖的版本高。如果编译通过的话,代码中可能会存在低版本库中没有定义或实现的API或者资源。导致运行时的崩溃问题。所以在编译阶段,就不允许这样的情况发生。所以在编译前期就报错。

解决方案:
使用implementation依赖高版本的库。因为你使用高版本的原因,应该是在实际编码中需要用到的。比如上面的代码段。如果使用低版本的material库,就会出现资源链接找不到。因为在工程中使用了shapeAppearance属性。

2.情形二:通过直接或者间接的方式依赖了两个库,group和moudle名相同,但是version是非正常版本命名。

例如:
库A:com.company.base.util:1.0.0.projectA
库B:com.company.base.util:1.0.0.projectB

可能原因(根据自己的分析,不一定正确): 我们知道gradle会选取高版本的库,来统一替换低版本的库。但是这种非语义化的版本方式,gradle不知道如何比较两个版本的高低,所以也无法确定到底是选择依赖哪个版本,导致的报错。

解决方案:
明确项目中实际使用的是哪个版本。明确使用该版本。如果有不同的版本在三方库中引入,可以使用exclude排除。


作者:张羊柱
链接:https://juejin.cn/post/7037683880781938724

 伪原创工具 SEO网站优化  https://www.237it.com/ 


文章分类
ANDROID
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐