将“Android库项目”的jar包括在引用它们的项目中

时间:2012-04-11 14:41:42

标签: android library-project

Android的一个新功能是能够创建Library Project

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

如果您遇到以下情况:

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

- ReferencingProject引用LibraryProject

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

对此的解决方案是包括" lib.jar"作为引用项目中的外部库,但这种方法开始否定通过创建多个手动添加的资源引用来获得自包含库项目所带来的好处,这些引用可以在库项目开发期间移动/更改(更不用说原因)一些非常令人困惑的错误)。

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

1 个答案:

答案 0 :(得分:5)

正如@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中导出的共享库。

<强> EDIT2

最近的ADT升级还可以在Java Build Path中手动选择“Android Dependencies”作为“Exported”。再一次,警告会很好。