Android的一个新功能是能够创建Library Project。
这对于您可能正在开发的许多应用程序中的单元测试和共享通用功能非常有用,但我似乎偶然发现了其实现中的错误。
如果您遇到以下情况:
- LibraryProject
在其构建路径中包含LibraryProject/libs/folder/lib.jar
。
- ReferencingProject
引用LibraryProject
。
从ReferencingProject
开始,您无法访问lib.jar
内的任何内容(例如常量用于与Library Project
中的方法进行通信)。
对此的解决方案是包括" lib.jar"作为引用项目中的外部库,但这种方法开始否定通过创建多个手动添加的资源引用来获得自包含库项目所带来的好处,这些引用可以在库项目开发期间移动/更改(更不用说原因)一些非常令人困惑的错误)。
有没有办法将包含的libs类暴露给引用项目,而不必手动将它们作为外部jar引用?
答案 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”。再一次,警告会很好。