android studio 升级3.1版本导包爆红问题

先上两张图:

[导包爆红.png]

external libraries中已加载.png

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

1. 经验告诉我们遇到爆红首先 clean 或 rebuild。结果:失败。
image.png
2. 继续清楚缓存,重启 AS。结果:失败。
image.png
3. 求助 搜索引擎,有说删除 .gradle 文件,重新加载,我还真试了,花了半天时间证明不行。结果:失败。
4. 绝望之际想想或许从官网能找到答案。还真找到了答案:
image.png

从图中一下可以看出来:

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

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

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

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

参考:https://stackoverflow.com/questions/44493378/whats-the-difference-between-implementation-and-compile-in-gradle
https://developer.android.google.cn/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,843评论 25 709
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,985评论 6 342
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,725评论 1 180
  • 黄昏渐渐过去 最后一道余晖消失在大片的黑暗中 灯起了 暗黄的颜色照着武湖 泛起了微微的波浪 这黑夜漫无边际 我在寻...
    司命者已超神阅读 480评论 0 0
  • 《妞妞—一个父亲的札记》 我之前第一次听说这本书,是在“开讲啦”这个节目上,周国平的“幸福的哲学”,已经忘记他讲了...
    静竟阅读 235评论 0 1