我正在一个有3个模块的项目中工作,如下所示:

Project

|

|-- Common

|

|-- SDK

|

|-- App

Common是一个Android库模块,所有其他模块都依赖它,但我不必在任何地方发布,因为它只包含其他模块的公共代码.另一方面,SDK是另一个Android库项目,必须在我们的内部工件上发布.

App是SDK的示例项目.我能够毫无问题地发布SDK工件,但是当我在客户端应用程序中导入它时,编译失败,因为没有找到Common模块中的类.

对于SDK模块依赖的第三方依赖项,我使用实现(例如,实现’com.squareup.okhttp3:okhttp:3.11.0’并且所有这些依赖项已成功添加到SDK POM文件中)以及对Common的依赖性模块我使用实现项目(路径:’:Common’).

在导入SDK库的客户端应用程序中,编译器显示以下错误

Error: cannot access Foo

class file for com.acme.Foo not found

(Foo是Common模块中的一个类)

为什么当我导入SDK时,找不到Common模块中的任何类?我期望编译器将两个模块合并为一个模块.有谁知道如何解决这个问题?

(我知道一个解决方案是在工件上发布Common,但我不想这样做,因为这只是内部公共代码).

解决方法:

通过api项目补充实现项目(路径:’:Common’)(路径:’:Common’)

关于api和实现之间的区别,你可以查看this article.

标签:android,gradle,android-library,dependencies,android-gradle

来源: https://codeday.me/bug/20190701/1346179.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐