【问题标题】:What is the recommended way to reference an Android library project in Eclipse在 Eclipse 中引用 Android 库项目的推荐方法是什么
【发布时间】:2013-01-18 20:57:48
【问题描述】:

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

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

由 logcat 显示。

我使用的是 Android 开发者工具版本:v21.0.1-543035

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

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

还有神秘的Java Build Path |订单和导出选项卡。这是什么意思?

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

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

【问题讨论】:

  • 另见developer.android.com/tools/projects/…“这些所谓的Android库是否像静态库一样”——是的,尽管它们也在资源中编译(布局、drawables等)“大多数教程和参考都是如此愚蠢,得到答案是无望的”——这在文档、书籍和 StackOverflow 上的许多答案中都有介绍。哎呀,谷歌搜索 adding an android library project 会在结果的第一页找到答案。
  • 是的,部分问题是 Eclipse 似乎使项目处于不一致/错误的状态。我以错误的方式引用了 Android 库(通过“Java 构建路径”|“库”|“添加类文件夹”。我在运行时收到 ClassDefNotFoundError。所以我更改了引用以使用“Android”选项卡按照此处和您提供的链接上的说明。猜猜怎么着?我仍然遇到 ClassDefNotFoundError。我不得不删除应用程序项目的 /bin 文件夹来修复它。我应该神奇地知道这样做吗?
  • (是的,我尝试了清理和刷新,但我仍然收到错误,直到我从文件系统中删除 /bin 文件夹并重建。我已经使用 Visual Studio 和其他 IDE 15- 20 年,当你做出改变然后重建时,他们总是能接受改变并正常工作,没有你必须猜测的额外神秘步骤)

标签: android eclipse


【解决方案1】:

在包资源管理器视图中:

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

检查:是图书馆。

右键点击Android项目->项目属性->android标签

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

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

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

【讨论】:

  • 谢谢,有帮助。我发誓我已经尝试了很多次,但是当我创建一个新的工作区和新的应用程序和库项目时,按照你的步骤工作。我的部分困惑是 Eclipse 似乎陷入了糟糕的状态。例如,我有一个应用程序通过“Java 构建路径”引用的 Android 库 | “图书馆” | “添加类文件夹”。然后我从那里将其删除并添加了对 Android 选项卡的引用,如您上面所说。在清理、刷新和重建/安装后,我得到了可怕的 ClassDefNoFoundError。我不得不删除 /bin 文件夹来修复它。
猜你喜欢
  • 2019-05-23
  • 2020-08-05
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 2019-01-26
  • 2013-05-07
  • 2021-09-21
  • 2012-10-12
相关资源
最近更新 更多