将一个库/ JAR添加到Eclipse Android项目中
这是一个关于在Eclipse中为Android项目添加第三方库(JAR)的两部分问题。
问题的第一部分是,当我尝试添加第三方JAR(库)到我的Android项目时,我首先得到
parsingXML时出错:未绑定的前缀
因为我试图从该JAR中使用一个类(并需要以某种方式定义的前缀)。 这是怎么回事?
其次,(在解决之后 – 答案在下面给出),我的应用程序不能在Android上工作,我通过debugging器(LogCat)发现我试图使用的类不存在。
引起:java.lang.ClassNotFoundException:com.github.droidfu.widgets.WebImageView …
为什么,当我在Eclipse中没有编译或链接器错误时,是否在模拟器上有这个问题?
这两个问题都是口头上的,我将在下面自己回答。 在这个论坛的其他post蔓延到这个问题,其他地方有讨论,但我觉得我可以更明确的帮助下一个人来。
现在是缺课的问题。
我是一名Eclipse Java EE开发人员,并且已经习惯了通过Build Path中的“User Library”机制添加第三方库的多年。 当然,至less有3种方式来添加第三方库,我用这个方法最为优雅。
然而,这对于Android的Dalvik“JVM”无法处理普通的Java编译类而言却行不通,但必须将其转换为特殊格式。 当你以这种方式添加一个库时,不会发生这种情况。
相反,请遵循(广泛使用的)导入第三方库的说明,然后使用Build Path(为了编译目的而使Eclipse知道它)添加它。 这是一步一步的:
- 将库下载到您的主机开发系统。
- 在Eclipse / Android项目中创build一个新文件夹libs 。
- 右键单击库并select导入 – >常规 – >文件系统,然后单击下一步,在文件系统中浏览find库的父目录(即:您下载到的位置)。
- 单击确定,然后单击左窗格中的目录名称(而不是checkbox),然后在右窗格中检查相关的JAR。 这将图书馆放入您的项目(物理)。
- 右键单击您的项目,selectBuild Path – > Configure Build Path,然后单击Libraries选项卡,然后添加JAR …,导航到libs目录中的新JAR并添加它。 (顺便说一句,这是您的新JAR转换为在Android上使用的时刻。)
注意
如果lib已经包含在构buildpath中,则可能不需要第5步。 只要确保它的存在,然后再添加它。
你在这里完成了两件事情:
- 在您的Android项目中包含一个Dalvik转换的JAR。
- 使Java定义可用于Eclipse,以便在开发(即编译)项目的源代码时查找第三方类。
确保你的第三方jar子在你的项目“libs”文件夹中,当你打包你的应用程序时,它们将被放在.apk中。 如果jar中的某些内容不受支持,可能会在设备上看到运行时错误,但除此之外,我已经获得了巨大的成功。
build立一个图书馆项目
一个库项目是一个标准的Android项目,所以你可以像创build一个新的应用程序项目一样创build一个新项目。
在创build库项目时,可以根据需要select任何应用程序名称,包并设置其他字段,如图1所示。
接下来,设置项目的属性来表明它是一个库项目:
在包资源pipe理器中,右键单击该库项目并select属性。 在“属性”窗口中,select左侧的“Android”属性组,然后在右侧find“库”属性。 select“是库”checkbox,然后单击应用。 点击确定closures属性窗口。 新项目现在被标记为一个图书馆项目。 您可以开始移动源代码和资源,如下面的部分所述。
如果您使用的是ADT版本22,则需要在项目构buildpath中的“导出”选项卡中检查android依赖项和android私有库
首先是缺less前缀的问题。
如果你在你的布局文件中使用来自第三方的东西,你可能还需要使用它的前缀,比如在下面的XML结构中的几个地方出现的“droidfu:”。
<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.comhttp://img.dovov.comopensourceprojec.gif" droidfu:progressDrawable="..." />
这个来自JAR,但是你也需要添加新的“xmlns:droidfu”
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:droidfu="http://github.com/droidfu/schema" ...>
或者你得到了未绑定的前缀错误。 对我来说,这是一个复制和粘贴从第三方库的页面提供的所有示例的失败。
parsingXML时出错:未绑定的前缀
资源“/ playteddy / res”不存在。
我得到了上述两个错误,最后我解决了这个问题。
右键单击你的项目 – >属性 – > java构buildpath – > googleadmobadsdk(select并把它放在上面),然后你运行和问题解决。 这是解决我的运行时错误。
将源文件放在yourt工作区外的文件夹中。 在项目浏览器中右键单击,然后select“导入…”
将您的工作空间中的项目导入为Android项目。 尝试构build它,并确保它被标记为一个库项目。 还要确保它是用Google API支持构build的,否则会得到编译错误。
然后,右键单击项目浏览器中的主项目。 select属性,然后select左侧的Android。 在下面的图书馆部分,点击“添加”。
mapview-balloons库现在应该可以添加到您的项目中。
在eclipse中build立path,然后点击命令并导出,然后检查库/ jar,然后点击向上button将其移动到列表顶部,以便首先编译它。