2011-11-01 66 views
20

我有一个一直在为我工作的Android库项目,但现在我有兴趣将它“转换”为外部JAR。如何将Android库项目转换为外部JAR?

我该怎么做?

任何Android库项目都可以转换为外部JAR吗?如果不是,有什么限制或限制?

回答

29

是否可以将任何Android库项目转换为外部JAR?

不是现在。

如果不是,有什么限制或约束?

如果您的库纯粹是Java代码,并且没有资源,那么您可以像创建常规Java那样从.class文件中创建JAR文件。

如果你的库使用的资源,你仍然可以创建一个JAR如上。但是,您将需要通过反射或getIdentifier()来查找R值(例如,R.layout.main),你的资源不会在JAR打包,但必须另行分配。

在未来,构建工具应该支持创建分发的JAR文件出库项目,完成资源。当前的构建工具确实创建了JAR,但它们并非设计为分布式,而是目前内部构建的工件。

+2

谢谢。我是否正确理解从.class文件创建JAR与[jar cf jar-file input-files]一样简单(http://download.oracle.com/javase/tutorial/deployment/jar/build.html )?另外,您能否详细说明通过'getIdentifier()'访问的资源是如何分开分发的? – uTubeFan

+1

@uTubeFan:“我是否正确理解从.class文件创建JAR与jar cf jar-file input-files一样简单?” - 据推测。我自己使用Ant''任务。 “另外,您是否可以详细说明通过getIdentifier()访问的资源是如何分开分发的?” - 嗯,如果它们不在JAR文件中,并且JAR的重用者需要这些文件,则重用者需要以某种方式获取这些文件。我推荐一个包含JAR和'res /'树的ZIP压缩文件。 – CommonsWare

+0

嗨@uTubeFan假设考虑一个项目** MyTranslator **,其中我正在翻译一些文本,因为我已经导入了一个jar文件** xyztranslator.jar **。现在我想将** MyTranslator **项目转换为**。jar **文件,以便我可以使用** MyTranslator **项目中的所有类以及** xyztranslator.jar **中的所有类。只是我的问题是**如何我可以将一个Android应用程序导出到一个已导入jar文件的.jar文件** –

2

http://developer.android.com/guide/developing/projects/index.html#LibraryProjects声称不能将这些导出到外部JAR。具体报价:

同样,你不能将库项目导出到一个自包含 JAR文件,因为你会为一个真正的图书馆做。相反,您必须通过参考 从属应用程序中的库并构建该应用程序来间接编译库。

+0

谢谢。在同一页面中,还有一个条款说:“您需要使用SDK Tools r14或更新版本才能使用新的库项目功能,将每个库项目生成到它自己的JAR文件中。”这是否意味着如果我使用SDK r14(或更新版本),您引用的模仿不再存在? – uTubeFan

+2

说实话,我不确定。这个措词似乎与我从下面引用的部分相矛盾,尽管这可能只是一个糟糕的措词。 – Sinjo

+0

r14 redid他们如何处理库项目的目的是为了能够导出罐子,但我仍然不知道如何做到这一点,同时保持生成的资源。 – schwiz

相关问题