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

Pet*_*ter 7 java eclipse android

我的Eclipse工作区中有三个项目:

  1. 基于maven的库项目,生成.jar文件.该项目包含我们的核心代码.
  2. 基于maven的Java桌面应用程序.此应用程序取决于库项目.
  3. 我们刚刚开始构建的Android应用程序.它尚未成熟.

我希望Android应用程序使用库项目作为依赖项.

我已经阅读了一些关于向Android应用程序添加库文件依赖关系的类似问题的回复,我试图遵循它们:

方法#1:

项目 - >属性 - > Java构建路径 - >项目 - >添加和添加库项目.

现在,我可以使用库项目中的类.编译器不会产生任何警告.但是,当我在模拟器上运行应用程序时,我得到一个类未定义的错误.

方法#2:

将生成的.jar文件复制到Android应用程序的"libs"目录中.

这有效.没有类未定义的异常.但是,我无法附加源代码,因此无法单步执行库代码.另外,每次源更改时,我都必须手动复制.jar文件.

方法#3:

转到库项目的"属性".您将在左侧窗格中看到"Android".选择它并标记"IsLibrary"字段.

但是,在我的情况下,左窗格中没有"Android"属性.我猜这个属性只有在它是一个真正的Android库项目时才会显示.

我被卡住了.如果有人能告诉我如何最好地处理这种情况,我将不胜感激.

以下是我希望实现的目标摘要:

  1. 用于桌面应用程序以及Android应用程序的相同库项目.
  2. 在Android应用程序上,源代码调试应该有效.
  3. 如果库应用程序中有任何源代码更改,Android应用程序应自动获取新的更改(而不是每次尝试将新的.jar文件拖到libs文件夹中).

gun*_*nar 3

到目前为止,方法#1 似乎是一个可行的选择,但您需要研究为什么会出现 ClassNotFoundException - 解压 APK(因为它是一个存档),对其进行索引并查看为什么不包含库类。

根据经验,如果您正在使用 Eclipse,我相信您会遇到该异常,因为您在将其添加到 Android 项目时没有检查导出的库 - 将其添加到构建路径后,执行以下操作如下:Project Props -> Build Path -> Order and Export,这里确保选择了您的库项目。关于此 ClassNotFoundException 有一个已知问题/令人沮丧的问题,解决方法是选择导出选项卡。我相信这篇文章包含更多细节这个 SO 主题

当涉及到调试 jar 代码时,您需要在 libs 文件夹中包含一个与您的 jar 文件具有相同命名的属性文件(例如,如果库 jar 文件是mylib.jar,您需要在那里有一个mylib.jar.properties文件)。该文件应该有一个src条目指向源代码所在的路径(作为 jar 文件或文件系统)。当您添加此文件时,Eclipse 有点愚蠢,因此您需要重新启动它。它还可以包含一个doc指向 javadoc 所在位置的条目。这是我自己的一个例子:

src=../docs/spring-android-rest-template-1.0.1.RELEASE-sources.jar
doc=../docs/spring-android-rest-template-1.0.1.RELEASE-javadoc.jar
Run Code Online (Sandbox Code Playgroud)