如何在Android项目中使用外部JAR?

问题描述 投票:323回答:12

我创建了一个Android项目,并在我的项目中添加了一个外部JAR(hessian-4.0.1.jar)。然后我将JAR添加到构建路径并在Order和Export中将其检出。

看起来忽略了Order和Export,并且运行时缺少外部JAR中的所有类。

在使用Eclipse插件构建Android应用程序时,是否有从外部JAR正确包含所需类的技巧?我不想使用蚂蚁或Maven。

android eclipse build.gradle class-library
12个回答
440
投票

对于Eclipse

将外部JAR添加到Android项目或任何Java项目的好方法是:

  1. 在项目的根文件夹中创建一个名为libs的文件夹
  2. 将JAR文件复制到libs文件夹
  3. 现在右键单击Jar文件,然后选择Build Path> Add to Build Path,它将在项目中创建一个名为'Referenced Libraries'的文件夹 通过这样做,只要将项目传输到另一台计算机,就不会丢失硬盘驱动器上引用的库。

对于Android Studio

  1. 如果您在项目资源管理器中的Android视图中,请将其更改为项目视图,如下所示

Missing Image

  1. 右键单击要添加外部库的所需模块,然后选择New> Directroy并将其命名为'libs'
  2. 现在将blah_blah.jar复制到'libs'文件夹中
  3. 右键单击blah_blah.jar,然后选择“Add as Library ..”。这将自动在build.gradle中添加和输入为编译文件('libs / blah_blah.jar')并同步gradle。你完成了

请注意:如果您使用的是第三方库,那么最好使用传递依赖项,Gradle脚本会在gradle脚本运行时自动下载JAR和依赖项JAR。

例如:编译'com.google.android.gms:play-services-ads:9.4.0'

了解更多关于Gradle Dependency Mangement的信息


1
投票

如果您使用的是gradle构建系统,请按照下列步骤操作:

  1. jar文件放在你的Android应用程序的相应libs文件夹中。您通常会在Project> app> libs找到它。如果缺少libs文件夹,请创建一个。
  2. 将此添加到您的build.gradle文件您的app。 (不是你的Projectbuild.gradledependencies { compile fileTree(dir: 'libs', include: '*.jar') // other dependencies } 这将包括jar文件夹中提供的所有libs文件。

如果不想包含所有jar文件,则可以单独添加。

compile fileTree(dir: 'libs', include: 'file.jar')


0
投票

在项目中创建一个文件夹(如lib),将jar复制到该文件夹​​。现在从右键单击项目开始配置构建路径,在构建路径选择中

'添加jar'浏览到你创建的文件夹并选择jar。


0
投票

无法始终将.jar文件复制到Android项目的文件夹中。 特别是如果它是您工作区中另一个项目的输出,并且它会不断更新。

要解决此问题,您必须将jar作为链接文件添加到项目中,而不是导入它(将在本地复制它)。

在UI中选择:

项目 - >导入 - >文件系统 - > yourjar.jar - >(选项区域)高级 - >在工作区中创建链接。

该链接保存在.project文件中:

<linkedResources>
    <link>
        <name>yourjar.jar</name>
        <type>1</type>
        <locationURI>PARENT-5-PROJECT_LOC/bin/android_ndk10d_armeabi-v7a/yourjar.jar</locationURI>
    </link>
</linkedResources>

PARENT-5-PROJECT_LOC表示相对于项目文件,5个目录(../../../../../)。

然后将其添加到库中: 项目 - >属性 - > Java构建路径 - >库 - >添加Jar - > yourjar.jar

在同一窗口中选择Order and Export选项卡并标记您的jar,以便将其添加到apk。


127
投票

是的,你可以使用它。方法如下:

  1. 您的项目 - >右键单击 - >导入 - >文件系统 - > yourjar.jar
  2. 您的项目 - >右键单击 - >属性 - > Java构建路径 - >库 - >添加Jar - > yourjar.jar

如果您遇到一些问题,这个video可能会有用。


5
投票

我目前正在使用SDK 20.0.3,之前的解决方案都不适用于我。

hessdroid在hess失败的情况下工作的原因是因为两个jar文件包含为不同虚拟机编译的java。 Java编译器创建的字节代码无法保证在Dalvik虚拟机上运行。 Android编译器创建的字节代码无法保证在Java虚拟机上运行。

在我的情况下,我有权访问源代码,并能够使用我在这里描述的方法为它创建一个Android jar文件:https://stackoverflow.com/a/13144382/545064


5
投票

我知道OP在参考Eclipse插件时结束了他的问题,但是我带着一个没有指定Eclipse的搜索来到这里。 Android Studio就是这样的:

  1. jar文件添加到libs目录(例如复制/粘贴)
  2. 右键单击jar文件并选择“Add as Library ...”
  3. 如果您选择,请在下一个对话框中单击“确定”或重命名。

而已!


4
投票

原来我的堆栈跟踪看起来不够好,问题不在于外部JAR没有包含在内。

问题是Android平台缺少javax.naming。*以及外部JAR也具有依赖性的许多其他软件包。

添加外部JAR文件,并在Eclipse中设置Order和Export与Android项目一样正常工作。


3
投票

转到当前项目

RightClick-> Properties-> Java Build Path->将Jar文件添加到库中 - >单击OK

然后将它添加到当前项目的Referenced Libraries文件中。


1
投票

Android的Java API不支持javax.naming。*和许多其他javax。*的东西。您需要将依赖项包含在单独的jar中。


1
投票

如果使用Android Studio,请执行以下操作(我复制并修改了@Vinayak Bs的答案):

  1. 在项目侧视图中选择项目视图(而不是包或Android)
  2. 在项目的根文件夹中创建一个名为libs的文件夹
  3. 将JAR文件复制到libs文件夹
  4. 侧视图将更新,JAR文件将显示在您的项目中
  5. 现在右键单击要导入的每个JAR文件,然后选择“Add as Library ...”,它将在项目中包含它
  6. 之后,您需要做的就是在代码中引用新类,例如。 import javax.mail.*

1
投票

在android studio中如果使用gradle

将此添加到build.gradle

compile fileTree(dir: 'libs', include: ['*.jar'])

并将jar文件添加到libs文件夹中

© www.soinside.com 2019 - 2024. All rights reserved.