在Eclipse中将非Android库项目添加到Android应用程序

7
我在Eclipse工作区中有三个项目:
1. 一个基于Maven的库项目,生成.jar文件。该项目包含我们的核心代码。 2. 一个基于Maven的Java桌面应用程序。该应用程序依赖于库项目。 3. 我们刚开始构建的Android应用程序。它还没有进行Maven化。
我希望Android应用程序使用库项目作为依赖项。
我已经阅读了一些类似问题的答案,并尝试按照它们的方法操作:
方法1:
项目 -> 属性 -> Java Build Path -> 项目 -> 添加并添加库项目。
现在,我可以使用库项目中的类。编译器不会产生任何警告。但是,当我在模拟器上运行应用程序时,会出现类未定义错误。
方法2:
将生成的.jar文件复制到Android应用程序的“libs”目录中。
这样做是有效的。没有类未定义异常。但是,我无法附加源代码,因此无法逐步执行库代码。此外,每次源更改时,我都必须手动复制.jar文件。
方法3:
转到库项目的属性。您将在左窗格中看到“Android”。选择它并标记“IsLibrary”字段。
然而,在我的情况下,左窗格中没有“Android”属性。我想这个属性只有在真正的Android库项目中才会显示。
我被卡住了。如果有人告诉我如何最好地处理这种情况,我将不胜感激。
以下是我希望实现的内容总结:
1. 同一库项目可用于桌面应用程序和Android应用程序。 2. 在Android应用程序中,源代码调试应该可以工作。 3. 如果库应用程序中有任何源代码更改,则Android应用程序应自动获取新更改(而不是每次尝试将新的.jar文件拖到libs文件夹中)。

你需要实现JNI接口来访问非Android类和函数在你的Android项目中。 - Biraj Zalavadia
@BirajZalavadia:Peter没有提到任何关于本地代码的事情。我的假设是你没有任何本地代码。这正确吗? - gunar
1个回答

3

Method#1似乎是目前可选的选项,但您需要研究为什么会出现ClassNotFoundException——解压APK(因为它是一个存档文件),将其解压缩并查看为什么未包含库类。

从经验上看,如果您正在使用Eclipse,我认为您之所以会收到该异常是因为在将其添加到Android项目时未将库标记为已导出——在将其添加到构建路径后,请执行以下操作:项目属性 -> 构建路径 -> 顺序和导出,在此处确保选择库项目。关于这个ClassNotFoundException存在已知问题/挫败感,解决方法是选择导出选项卡。我相信本文包含更多细节这个SO主题

调试 jar 代码时,你需要在 libs 文件夹中包含一个与你的 jar 文件同名的属性文件(例如,如果库 jar 文件是 mylib.jar,你需要有一个 mylib.jar.properties 文件)。该文件应该有一个指向源代码所在路径的 src 条目(可以是 jar 文件或文件系统)。当你添加这个文件时,Eclipse 有点傻,所以你需要重新启动它。它也可以包含一个指向 javadoc 所在位置的 doc 条目。以下是我的一个示例:
src=../docs/spring-android-rest-template-1.0.1.RELEASE-sources.jar
doc=../docs/spring-android-rest-template-1.0.1.RELEASE-javadoc.jar

1
Gunar。非常感谢您的帮助。正如您所建议的那样,关键是确保在“排序和导出”下也选择了该项目。这解决了我的问题。Peter - Peter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接