130

这是关于在 Eclipse 中将第三方库 (JAR) 添加到 Android 项目的两部分问题。

问题的第一部分是,当我尝试将第三方 JAR(库)添加到我的 Android 项目时,我首先遇到的问题是

解析 XML 时出错:未绑定前缀

因为我正在尝试使用该 JAR 中的一个类(并且需要以某种方式定义前缀)。这是怎么回事?

其次,(在修复之后——答案在下面给出),我的应用程序无法在 Android 上运行,我通过调试器 (LogCat) 发现我尝试使用的类不存在。

引起:java.lang.ClassNotFoundException: com.github.droidfu.widgets.WebImageView...

为什么,当我在 Eclipse 中没有编译或链接器错误时,模拟器上是否有这个问题?

这两个问题是修辞性的,因为我将在下面自己回答。这个论坛中的其他帖子逐渐解决了这个问题,其他地方也有讨论,但我觉得我可以更明确地帮助下一个出现的人。

4

8 回答 8

316

现在来解决缺课问题。

我是一名 Eclipse Java EE 开发人员,多年来一直习惯于通过 Build Path 中的“用户库”机制添加第三方库。当然,添加第三方库至少有3种方法,我用的一种是最优雅的,以我的拙见。

然而,这对于 Android 来说是行不通的,它的 Dalvik “JVM” 无法处理普通的 Java 编译类,但必须将其转换为特殊格式。当您以我不会这样做的方式添加库时,不会发生这种情况。

相反,请按照(广泛可用的)说明导入第三方库,然后使用 Build Path 添加它(这使得 Eclipse 知道它以用于编译目的)。这是一步一步:

  1. 将库下载到您的主机开发系统。
  2. 在 Eclipse/Android 项目中创建一个新文件夹libs 。
  3. 右键单击并选择导入 -> 常规 -> 文件系统,然后下一步,在文件系统中浏览以找到库的父目录(即:您将其下载到的位置)。
  4. 单击确定,然后单击左窗格中的目录名称(不是复选框),然后检查右窗格中的相关 JAR。这会将库放入您的项目中(物理上)。
  5. 右键单击您的项目,选择 Build Path -> Configure Build Path,然后单击 Libraries 选项卡,然后单击 Add JARs...,导航到libs目录中的新 JAR 并添加它。(顺便说一句,这是转换新 JAR 以在 Android 上使用的时刻。)

笔记

如果 lib 已包含在您的构建路径中,则可能不需要第 5 步。在添加之前先确保它的存在。

您在这里所做的事情完成了两件事:

  1. 在您的 Android 项目中包含一个由 Dalvik 转换的 JAR。
  2. 使 Java 定义可用于 Eclipse,以便在开发(即编译)项目的源代码时查找第三方类。
于 2010-09-04T16:09:35.897 回答
20

确保您的 3rd 方 jars 位于您的项目“libs”文件夹中,并且在您打包应用程序时它们将被放入 .apk 中。如果不支持 jar 中的某些内容,您可能会在设备上看到运行时错误,但除此之外,我已经取得了巨大的成功。

于 2010-09-04T15:51:25.567 回答
5

建立图书馆项目

库项目是一个标准的 Android 项目,因此您可以像创建新应用程序项目一样创建新项目。

在创建库项目时,可以根据需要选择任意应用名称、包,并设置其他字段,如图1所示。

接下来,设置项目的属性以表明它是一个库项目:

在 Package Explorer 中,右键单击库项目并选择 Properties。在“属性”窗口中,选择左侧的“Android”属性组并找到右侧的库属性。选择“是库”复选框并单击应用。单击“确定”关闭“属性”窗口。新项目现在被标记为库项目。您可以开始将源代码和资源移入其中,如下节所述。

于 2011-06-20T07:21:57.683 回答
4

如果你使用的是 ADT 22 版本,需要在项目构建路径的 order&Export 选项卡中检查 android 依赖项和 android 私有库

于 2013-07-24T13:54:44.347 回答
2

首先,缺少前缀的问题。

如果您在布局文件中使用来自第三方的某些内容,则可能还需要使用其前缀,例如“droidfu:”,它出现在以下 XML 构造中的多个位置:

<com.github.droidfu.widgets.WebImageView android:id="@+id/webimage"
          android:layout_width="75dip"
          android:layout_height="75dip"
          android:background="#CCC"
          droidfu:autoLoad="true"
          droidfu:imageUrl="http://www.android.com/images/opensourceprojec.gif"
          droidfu:progressDrawable="..."
          />

这来自 JAR,但您还需要添加新的“xmlns:droidfu”

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:droidfu="http://github.com/droidfu/schema"
      ...>

或者你得到未绑定的前缀错误。对我来说,这是无法从第三方库的页面复制和粘贴所有提供的示例。

于 2010-09-04T15:53:32.487 回答
1

解析 XML 时出错:未绑定前缀

资源“/playteddy/res”不存在。

我遇到了上述两个错误,最后我解决了。

右键单击您的项目-> 属性-> java 构建路径-> googleadmobadsdk(选择并将其放在顶部),然后运行并解决问题。它解决了我的运行时错误。

于 2012-04-02T12:10:57.000 回答
0

将源代码放在您工作区之外的文件夹中。在项目资源管理器中单击鼠标右键,然后选择“导入...”

将工作区中的项目作为 Android 项目导入。尝试构建它,并确保它被标记为库项目。还要确保它是使用 Google API 支持构建的,否则会出现编译错误。

然后,在项目资源管理器中右键单击您的主项目。选择属性,然后选择左侧的 Android。在下面的库部分中,单击“添加”..

mapview-balloons 库现在应该可以添加到您的项目中了。

于 2012-12-05T16:33:34.523 回答
0

进入eclipse中的build path,然后点击order and export,然后勾选library/jar,然后点击up按钮将其移动到列表顶部先编译。

于 2013-06-25T21:13:58.100 回答