美文网首页我爱编程
android studio 升级3.1版本导包爆红问题

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

作者: 爱吃鱼的外星人 | 来源:发表于2018-04-17 10:46 被阅读1613次

    先上两张图:

    [导包爆红.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 studio 升级3.1版本导包爆红问题

        本文链接:https://www.haomeiwen.com/subject/gqlukftx.html