android项目正常运行但包爆红,android studio 升级3.1版本导包爆红问题

本文讲述了作者在Android Studio升级后遭遇的库导入错误,通过深入理解dependency管理,发现implemention依赖仅限于模块内部,导致app无法访问library加载的第三方库。最终解决方案是将library中的implemention改为api依赖。关键教训是阅读官方文档的重要性。

先上两张图:

96e2db068fa9

[导包爆红.png]

96e2db068fa9

external libraries中已加载.png

这是 AS 升级 3.1 后出现的问题,很奇怪明明 lib 已经加载了为什么项目中导入却报错。出现问题了就要解决。

1. 经验告诉我们遇到爆红首先 clean 或 rebuild。结果:失败。

96e2db068fa9

image.png

2. 继续清楚缓存,重启 AS。结果:失败。

96e2db068fa9

image.png

3. 求助 搜索引擎,有说删除 .gradle 文件,重新加载,我还真试了,花了半天时间证明不行。结果:失败。

4. 绝望之际想想或许从官网能找到答案。还真找到了答案:

96e2db068fa9

image.png

从图中一下可以看出来:

implemention 依赖项在编译时对模块可用,并且仅在运行时对模块的消费者可用。

api 依赖项在编译时对模块可用,并且在编译时和运行时还对模块的消费者可用。

问题找到了,我们项目 app 中引入本地 library,而 library 中用 implemention 方式引用了很多第三方库,如官方描述那样,其实 implemention 只对改模块可用,所以我们的 app 导入不了 library 加载的第三方库。那么只要把 library 中的 implemention 依赖方式改成 api 依赖方式即可。

后来从 万能的 stackoverflow 中也找到了答案,第二个回答详细说明了 implemention 与 api 两种依赖方式的不同。

5. 总结,本来一个很小的问题却花费了我差不多一天的时间,究其原因还是没有认真阅读官方文档。太凭感觉干活,这个要不得,以后切记先阅读官方文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值