Android 的一项新功能是能够创建 Library Project .
这非常适合在您可能正在开发的许多应用程序之间进行单元测试和共享通用功能,但我似乎在它们的实现中偶然发现了一个错误。
当您遇到以下情况时:
-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 中。
EDIT2
最近的 ADT 升级还要求您在 Java 构建路径中手动选择“Android Dependencies”作为“Exported”。同样,警告会很好。
关于android - 将 "Android Library Project"包含的 jar 暴露给引用它们的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108252/