先上两张图:
这是 AS 升级 3.1 后出现的问题,很奇怪明明 lib 已经加载了为什么项目中导入却报错。出现问题了就要解决。
1. 经验告诉我们遇到爆红首先 clean 或 rebuild。结果:失败。
2. 继续清楚缓存,重启 AS。结果:失败。
3. 求助 搜索引擎,有说删除 .gradle 文件,重新加载,我还真试了,花了半天时间证明不行。结果:失败。
4. 绝望之际想想或许从官网能找到答案。还真找到了答案:
从图中一下可以看出来:
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