如何将Android库jar链接到常规Java项目?

时间:2011-10-03 22:01:42

标签: java android

首先我知道这可能听起来不是最好的方法,但改变整体设计是我无法控制的,所以请不要以不同的方式发布答案。我有一个普通的Java项目,我链接到我的Android应用程序。我需要在Java项目中使用一些Android内容,所以我只是链接到android.jar文件。这适用于使用Android库,直到我尝试编译抱怨没有default.properties文件。我尝试将default.properties文件添加到项目的根目录但问题仍然存在。对此的任何帮助都会很棒。

由于

3 个答案:

答案 0 :(得分:4)

  

更改整体设计是我无法控制的,所以请不要以不同的方式发布答案。

如果你想要的是不可能的,那么以不同的方式做你能得到的唯一答案。

  

我需要在Java项目中使用一些Android内容

这不是严格可能的,不仅仅是你可以在OS X应用程序中使用一些Windows内容。 Android是一个操作系统,而不仅仅是一些Java文件。

  

所以我只是链接到android.jar文件

此JAR文件包含类和方法存根,而不是真正的类和方法。它用于编译Android项目 - 真正的类将成为Android设备上运行时类路径的一部分。

IOW,JAR对普通的Java项目没有好处。

  

这对于使用Android库工作正常,直到我尝试编译抱怨没有default.properties文件。

您似乎正在尝试使用Android构建过程构建非Android项目(不确定它是否是一个格式错误的Eclipse项目,或者您只是尝试根据您的描述从Android项目复制Ant脚本)

  

对此的任何帮助都会很棒。

如果“某些Android内容”是纯Java,不依赖于Android,请将其移动到JAR或两个项目都可以使用的内容中。

如果“某些Android内容”实际上是指Android类(例如,android.*包),那么它只能在Android设备上使用,并且不能由普通Java项目使用。欢迎您查看Android源代码,看看是否有可以复制到Java项目中的自包含类,但是您需要将这些内容与Android应用程序分开,特别是如果您开始修改那个源代码。

答案 1 :(得分:1)

我做同样的事情 - 我在Eclipse中有一个Java项目,我用它来为我的所有应用程序提供一些通用代码(虽然我正在转向Android库项目)。

您需要使用这些属性的唯一原因是,如果您错误地使用Android前置和后置编译器。

如果你已经创建了一个纯java项目,这应该可以工作,这里是我的定义文件:

的.project

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>Project Name</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
    </natures>
</projectDescription>

和.classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="lib" path="D:/Android/android-sdk-windows/platforms/android-4/android.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

然后,您可以将项目用作其他项目的依赖项,或者将其编译为要导入的jar文件。

我无法想象你实际上在编译普通java项目时遇到了问题(如果它真的是普通的java),因为存根将完美地编译 - 因此Android项目中的问题是链接到Java项目

尝试从头开始创建一个新的Android项目,确保它可以正常工作,然后将它与java项目相关联 - 没有理由它不应该工作。

答案 2 :(得分:0)

为了使项目能够编译,您可能需要在default.properties文件中添加一些内容。我有这一行(Android的哪个版本是目标)

目标=机器人-8

你可能需要更多东西,我不确定 - 我让Eclipse为我创建项目。

但是,您无法让项目运行。一旦你实际调用任何Android构造函数或方法,你就会得到一个Stub!错误。

e.g。见How to execute Java tests on Android code