18

由于最新的 android sdk 我无法再从 eclipse 运行我的 android 应用程序,因为他们无法找到我在其他 eclipse 项目中拥有的类,这些类是通过“正常”构建路径引用的。

这以前肯定有效。并且eclipse中没有编译错误。

可能是这样吗,现在您必须将这些项目标记为 android 库项目,以防它们被 android 项目引用。

编辑:似乎这就是它被破坏的原因: http ://tools.android.com/recent/dealingwithdependenciesinandroidprojects

但我仍然必须弄清楚我现在应该如何将我的“普通”java 项目引用到 android 应用程序项目。

4

5 回答 5

18

在提供的链接@clamp 中有以下句子:

该容器现在也将填充库项目引用的纯 Java 项目。

这意味着,我们可以使用一个空的库项目作为 android 项目和常规 eclipse 项目之间的“胶水”项目。只需像这样设置它:

android --> "glue" 项目 --> 常规项目

--> 表示取决于

胶水项目必须导出常规项目并且必须标记为库。在 android 项目中,只需要引用库项目。

现在,使用“胶水”项目的最小开销对我来说再次使用常规的 Eclipse 项目。

于 2012-04-19T11:51:40.883 回答
12

由于 Eclipse 构建工具的最新更新,您还必须在“Java Build Path”的“Order and Export”选项卡中勾选引用的项目。这为我解决了同样的问题。希望有帮助!

于 2012-03-27T14:55:54.640 回答
3

如前所述,Android 不会直接编译和使用您的 Java 项目文件。相反,它只需要预编译的类文件。

这是我的解决方法,我更喜欢它,因为我不需要仅用于 Android 库的“胶水”项目。主要思想是为 Android 提供一个预构建的 JAR,同时在 Eclipse 中工作时仍然使用库的源代码:

  1. 首先确保库项目是使用 Java 6 编译的。Java 7 将不起作用,Android 将默默地忽略这些库。因此,请检查工作区设置(在Preferences-> Java->中Compiler)和各个项目设置。选择 1.6 作为编译器合规级别。
  2. 右键单击您的 Android 项目 -> Properties-> Java Build Path-> Projects。添加要在 Android 项目中使用的所有 Java 项目。
  3. 现在,Eclipse知道这些类(但还不是最终的 Android 构建),因此构建错误得到解决,并且跳转到一个类直接导致您的 Java 项目的原始源文件。
  4. 在您的 Android 项目目录中添加一个 ant buildscript。此构建脚本将创建一个包含项目的所有 .class 文件的 JAR 到libs子目录中(这是让Android知道您的 .class 文件的步骤!)请参阅下面的代码。
  5. 现在,并且总是在 Java 项目发生更改时,通过执行 buildscript 来重建 JAR 文件。这也可以自动化,例如“希望 eclipse java 项目自动运行 ant 构建文件

这是代码:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_jar" name="Create Jar with classes from Java projects">
<target name="create_jar">
    <jar destfile="libs/java-projects.jar">
        <!-- "bin" is the class output folder -->
        <fileset dir="path/to/first/java/project/bin"/> 
        <fileset dir="path/to/second/java/project/bin"/>

        <fileset dir="path/to/last/java/project/bin"/>
    </jar>
</target>

于 2013-03-10T14:43:45.513 回答
1

我添加了一个 ant 项目构建器,它从依赖项目中复制类文件。ant 文件位于 android 项目中,并从引用的项目中复制类文件。这是蚂蚁:

<?xml version="1.0" encoding="UTF-8"?>
<project name="CommonsCopy" default="copy" basedir=".">
    <target name="copy">
        <copy todir="bin/classes">
            <fileset dir="../Commons/bin" includes="**/*.class">
            </fileset>
        </copy>
    </target>
</project>

2 件事要记住:

  1. 找到一种方法来复制引用的 java 项目使用的 jar 文件,或者直接将它们放入 Android libs 文件夹中。
  2. 引用的项目必须在 1.6 合规级别编译。
于 2013-10-19T21:14:56.400 回答
0

您可以定义两个项目(一个 Android,一个 vanilla Java)并让一个引用另一个项目的源文件,在 Windows 中使用 mklink 命令创建目录连接或文件硬链接。我不知道 linux 等价物,但必须有一个。如果您从一个项目编辑源文件,则另一个项目将不同步,您只需刷新它。这样您就不必弄乱 jars 或 Eclipse 构建过程。

于 2014-02-09T19:25:08.523 回答