将"Android Library Project"包含的 jar 公开给引用它们的项目



Android的新功能之一是能够创建库项目。

这对于在您可能正在开发的许多应用程序之间进行单元测试和共享通用功能非常有用,但我似乎偶然发现了它们实现中的一个错误。

当您遇到以下情况时:

- LibraryProject在其构建路径中包含LibraryProject/libs/folder/lib.jar

- ReferencingProject 参考资料 LibraryProject .

ReferencingProject,您无法访问lib.jar中的任何内容(例如用于与Library Project中的方法进行通信的常量)。

对此的解决方案是将"lib.jar"作为外部库包含在引用项目中,但这种方法开始否定您从拥有自包含库项目中获得的好处,方法是创建多个手动添加的资源引用,这些资源可能会在库项目的开发过程中移动/更改(更不用说导致一些非常令人困惑的错误)。

有没有办法将包含的库类公开给引用项目,而不必手动将它们作为外部 jar 引用?

正如@Selvin所说,

在库项目中,您可以使用以下命令指定要在打开的窗口中标记为"已导出"的库:Project properties => Java Build Path => Order and Export 。在此示例中,您将检查libs/folder/lib.jar

清理并构建库项目,"导出"的库现在包含在生成的 jar 中。

编辑

这是升级到 ADT 17 的症状 - (Android 团队:当更新破坏现有架构时,可能会在您的发行说明上添加一些警告?

http://tools.android.com/recent/dealingwithdependenciesinandroidprojects

如果您不想将库添加到"Order and Export"那么将本地 jar 放在/libs/基本文件夹中会自动将其添加到"Android 依赖项"中,这些依赖项导出到从共享库创建的 jar 中。

编辑2

最近的 ADT 升级还会让您在 Java 构建路径中手动选择"Android 依赖项"作为"导出"。同样,警告会很好。

最新更新