0

当我学习 Android 开发(通过 Eclipse)时,让我继续感到沮丧的一件事是让引用 Android 库项目的 Android 应用程序项目可靠地工作。有时,应用程序项目由于缺少库中定义的类引用而无法构建,有时它会构建但随后在运行时崩溃,并且引用了库中定义的类,并带有错误链接

java.lang.NoClassDefFoundError: com.dave.customviewtestlib.LibTestClass

由 logcat 显示。

我正在使用 Android 开发者工具构建:v21.0.1-543035

我创建了一个工作区,其中包含最简单的 Android 应用程序项目,并引用了最简单的 Android 库项目。我应该如何在 Eclipse 中将它们绑定在一起?他们都自己建造得很好。然后我编辑 Android 应用程序项目的“Java 构建路径”。令人困惑的是,似乎有很多方法可以引用库项目。有时一种方法有效,然后它停止工作,另一种方法在开始工作之前不起作用。我应该

  1. 在 app 项目的 Java Build Path | 项目,“添加”库项目,或
  2. 在 app 项目的 Java Build Path | 库,“添加 Jar”并指向包含库的类和其他资源的 .jar,或
  3. 在 app 项目的 Java Build Path | 库,“添加类文件夹”并指向包含类的库项目的“bin”文件夹,或
  4. 在 app 项目的 Java Build Path | 源,“添加文件夹”并指向库项目的源文件夹,或
  5. 还有什么?

此外,还有神秘的 Java Build Path | 订单和导出选项卡。这意味着什么?

我还有一个相关的问题:这些所谓的 Android 库是像静态库(您在构建时引用它们并且代码被吸入,而在运行时它只是应用程序二进制文件的一部分),还是像动态库(它们可以单独安装在设备上)?我知道这都是Java,所有类都是由类加载器在运行时加载的,但我认为仍然有一个重要的区别。大多数教程和参考资料都如此愚蠢,获得答案是无望的。

任何帮助都将真正有助于减少我的烦恼:)

4

1 回答 1

2

在包资源管理器视图中:

右键单击库项目 -> 项目属性 -> android 选项卡

检查:是图书馆。

右键单击 Android 项目 -> 项目属性 -> android 选项卡

单击“添加”按钮,然后从列表中选择您的库项目。

为了回答您的“静态问题”,Android 库项目和 jar'd 库之间的区别在于,android 工具会自动修复您的项目(生成的 R 文件等)的资源 (xml) 引用,然后将类打包到.jar 文件并将其添加到项目的 apk 中。所以它是静态包含的。

至于您的构建路径以及顺序和导出选项卡。构建路径是您可以添加的位置:.jar 文件、工作空间中的其他项目以及项目的其他源文件。您可以在此处的 order/export 选项卡中选择哪些库/类文件将静态包含在项目的 jar 文件中(或 Android 项目中的 apk)。

于 2013-01-18T21:01:42.503 回答