5

我正在尝试在 Eclipse 中设置一个具有 Android 库项目依赖关系的 Android 应用程序。我建立了一个名为 AnTest 的项目和一个名为 AnLib 的库项目。我在 AnTest 的项目属性中提供了对 AnLib 的引用。现在我正在尝试从 AnTest 引用一些库代码(静态公共方法)。Eclipse 抛出“com.anlib.Hello 无法解析为类型”。

并不是引用悬而未决 - 我可以看到资源正确合并。但是在 AnTest 中,com.anlib 包中的唯一类是“R”。

请问,我做错了什么?必须缺少一些非常基本的步骤...

编辑:我已将 AnLib 添加到 AnTest 项目属性中的 Java 构建路径/项目中。现在它可以编译,但运行会引发 NoClassDefFoundError 异常......

4

2 回答 2

5

在仔细查看示例项目 (TicTacToe) 之后,我注意到类路径下的一些东西。它是库资源的链接文件夹。应用程序的项目属性,Java 构建路径,在“Source”下单击“Link source”,提供 library\src 的路径。

毕竟没有魔法。

编辑:默认情况下也不会选择 NDK(基于 JNI,本机)库。必须为库项目中的各个库建立一个名为“libs”的链接文件夹。

EDIT2:本机库的行为似乎取决于 ADT 和/或 Eclipse 的版本。资产也没有合并,但后一点实际上已记录在案。

EDIT3:在最新的 Android 工具下,库不再作为链接源实现。请忽略这个答案;这在当时是真实的和相关的,但现在不是。

于 2010-06-21T15:14:33.183 回答
0

我有这个设置,但在“图书馆”项目中没有资源。我的主要项目是一个 Android 项目,但“库”只是一个标准的 Java 项目。这似乎运作良好。

在主 Android 项目的构建路径(“项目”选项卡)下,我添加了库项目。

库项目的 .project 文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>DataExchange</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.wst.common.project.facet.core.builder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.wst.validation.validationbuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
        <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
    </natures>
</projectDescription>

Android 项目的 .project 文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>Project</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>com.android.ide.eclipse.adt.ApkBuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
        <nature>org.eclipse.jdt.core.javanature</nature>
    </natures>
</projectDescription>

我不记得在设置它时做过任何特别的事情。

于 2010-06-19T02:37:45.853 回答