如何在Android项目中包含Java项目?

时间:2012-03-10 18:48:31

标签: java android eclipse

我正在使用Eclipse开发Android棋盘游戏。 我在Android项目中开发了UI。

另一方面,我在常规Java项目中开发了AI,因为我希望能够在没有Android模拟器的所有约束的情况下测试它(我没有找到任何其他方法来运行代码我的Windows JVM)。

现在,我希望“加入”两个项目(独立工作正常),即使用UI中的AI Java类。

这就是我的尝试:

在我的Android项目中属性> 项目参考,我勾选了Java项目。 这允许我在没有错误的情况下构建Android项目(实例化AI对象)。

但它在运行时因此错误而失败:

Could not find class 'my.package.AI', referenced from method my.otherpackage.UI.onStart

将AI Java项目纳入我的Android项目的正确方法是什么?

(注意:我仍然希望能够开发和测试AI作为常规Java应用程序,因此我认为使用 jar 或将所有源代码复制到Android项目将不适合我的需要)

修改

我希望新的ADT第17版可以解决问题,但事实并非如此。我几乎尝试了所有可用的选项,在我的Android项目中包含一个项目:

  • 添加或链接源文件夹
  • 添加项目(Java构建路径>项目标签)
  • 添加类文件夹或库(Java构建路径>库选项卡)
  • 将所有先前导入的项目/库标记为已导出

允许编译和无错误运行的唯一方法是将Java项目的JAR添加到Android项目构建路径。

4 个答案:

答案 0 :(得分:10)

项目参考仅将依赖项目源代码(您的AI项目)添加为软(可能是一个更精确的单词)参考,您的AI项目不会添加到您的Android项目构建路径中。所以当Eclipse构建你的app时,实际的ai.jar不会被导出到最终的apk中。

您应该将AI项目添加到Android项目构建路径中:

  1. 右键单击您的android项目,选择Build Path - Configure Build Path,在Projects选项卡中(构建路径上的必需项目),在此处添加您的AI项目。
  2. 然后在“订购和导出”选项卡(构建类路径顺序和导出的条目)中,勾选列表中出现的新添加的AI项目。
  3. 步骤2可能是可选的,这应该在Android项目中添加AI项目作为参考,并在Eclipse构建Android项目时将ai.jar导出到final.apk。

    从ADT 17.0.0更新:

    Android Dev Team刚刚发布了带有ADT 17.0.0的SDK r17,声称现在可以正确处理这些用例:

      

    Eclipse特定的更改

         

    名为“Library Projects”的动态类路径容器已重命名为“Android Dependencies”,因为它现在不仅包含Library Projects。

         

    现在,容器也将填充由Library Projects引用的仅Java项目。如果这些Java项目也引用其他Java项目和/或jar文件,它们将自动添加(也支持通过用户库引用的jar文件)。

         

    重要说明:仅当引用设置为在引用项目中导出时才会发生这种情况。请注意,将项目或jar文件添加到项目构建路径时,这不是默认设置。   始终导出库项目(及其libs / * .jar文件的内容)。此更改仅影响仅Java项目及其自己的jar文件。

         

    同样,检测并删除重复项(包括项目和jar文件)。

    更多this link

答案 1 :(得分:3)

编辑经过多次测试,阅读并找到了我的解决方案。问题是(在撰写本文时)您无法从Android项目引用另一个项目,尽管它适用于普通的Java应用程序项目。

我的解决方法(带有NTFS文件系统的Windows):
在提示符(管理员权限)中,使用指向源项目文件夹的mklink /D命令创建符号文件夹链接,并根据需要在Eclipse中刷新。 显而易见的限制是你不能在源项目和目标项目中使用相同的包名,然后在公共项目中存在libs的问题。

示例:

cd \java\workspace\AndroidProject\src\your\package
mklink /D common c:\java\workspace\CommonProject\src\your\package\common

澄清:可以从Android项目中引用另一个项目进行编译,但是当您运行时,所包含项目中引用的类不会被放入apk classes.dex(使用dex反编译器验证)。

答案 2 :(得分:0)

在Windows 7 64位上使用ADT 21.0.0 64位。我尝试添加项目来构建路径。在订单和出口中打勾,玩了订单。我读了official solution,该解决方案的detailed explanation,导出为JAR,添加到库中。没有工作,而源没有错误。请仔细阅读解决方案并不适合所有人的评论。

厌倦了它并尝试了一个简单但有点混乱的解决方案:将Java项目的源链接到Android项目。这就是诀窍。希望这也能帮助别人。

答案 3 :(得分:-1)

不要将其添加到项目参考区域,而是进入Android窗格(在“项目属性”中),向下滚动到底部,然后将其添加到“库”下。

这有时会起作用,但有时会产生奇怪的Eclipse问题(不确定原因),在这种情况下,将jar直接复制到项目中似乎效果最好。