【问题标题】:How can I use external JARs in an Android project?如何在 Android 项目中使用外部 JAR?
【发布时间】:2010-11-23 00:24:58
【问题描述】:

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

Order 和 Export 似乎被忽略了,并且外部 JAR 中的所有类在运行时都丢失了。

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

【问题讨论】:

标签: android eclipse build.gradle class-library


【解决方案1】:

对于 Eclipse

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

  1. 在项目的根文件夹中创建一个名为 libs 的文件夹
  2. 将您的JAR 文件复制到libs 文件夹
  3. 现在右键单击 Jar 文件,然后选择 Build Path > Add to Build 路径,它将在您的文件夹中创建一个名为“Referenced Libraries”的文件夹 项目

    这样做,你不会 丢失您的库 每当您将项目转移到另一台计算机时都可以使用硬盘驱动器。

适用于 Android Studio

  1. 如果你在 Android 项目资源管理器中查看,将其更改为 Project 视图如下

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

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

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

阅读更多关于Gradle Dependency Mangement的信息

【讨论】:

  • 请注意,当使用最新的 Eclipse/ADT 版本时,外部 jar 必须位于名为 libs 的文件夹中(而不是 lib
  • @THelper - 谢谢!你是对的,文件夹必须命名为“libs”而不是“lib”。我正在努力解决这个问题。
  • 在最新版本的 SDK 中,不需要第 3 步(手动将 JAR 添加到构建路径)。但是,如果您有一个 IDE,例如在您将文件放入时打开的 Eclipse,您将不得不进行项目刷新(F5 和/或 Package Explorer 中的上下文菜单刷新)。
  • 如何从命令行完成?我必须编辑什么配置文件,如何编辑?
  • 这种方法在 2012 年初就已经过时了。只需将 JAR 添加到 libs/。不要手动修改构建路径。
【解决方案2】:

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

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

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

【讨论】:

  • 这种方法从 2012 年初就已经过时了。只需将 JAR 添加到 libs/。不要手动修改构建路径。
  • 我尝试了各种添加构建路径的方法。只有这样我才能在将一个项目迁移到另一台 PC 后修复 Class not found 异常
  • 第一个解决方案已过时,无法正常工作。
【解决方案3】:

我目前使用的是 SDK 20.0.3,以前的解决方案都不适合我。

hessdroid 在 hess 失败的地方工作的原因是因为这两个 jar 文件包含为不同的虚拟机编译的 java。 Java 编译器创建的字节码不能保证在 Dalvik 虚拟机上运行。 Android编译器生成的字节码不保证能在Java虚拟机上运行。

就我而言,我可以访问源代码,并且能够使用我在此处描述的方法为其创建一个 Android jar 文件:https://stackoverflow.com/a/13144382/545064

【讨论】:

    【解决方案4】:

    我知道 OP 参考 Eclipse 插件结束了他的问题,但我到达这里时搜索并没有指定 Eclipse。所以这里适用于 Android Studio:

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

    就是这样!

    【讨论】:

      【解决方案5】:

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

      问题是 Android 平台缺少 javax.naming.* 和许多其他外部 JAR 也有依赖项的包。

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

      【讨论】:

        【解决方案6】:

        转到当前项目

        右键->属性->Java构建路径->将Jar文件添加到库中->点击确定

        然后将其添加到当前项目中的引用库文件中。

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

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

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

            【讨论】:

              【解决方案9】:

              如果使用 gradle 在 android studio 中

              将此添加到 build.gradle

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

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

              【讨论】:

                【解决方案10】:

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

                1. jar 文件放入您的 Android 应用程序的相应 libs 文件夹中。您通常会在Project > app > libs 找到它。如果libs 文件夹丢失,请创建一个。

                2. 将此添加到您的build.gradle 文件您的app。 (不是你的Projectbuild.gradle

                  dependencies {
                      compile fileTree(dir: 'libs', include: '*.jar')
                      // other dependencies
                  }
                  

                  这将包括您在libs 文件夹中可用的所有jar 文件。

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

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

                【讨论】:

                  【解决方案11】:

                  在您的项目中创建一个文件夹(如 lib),将您的 jar 复制到该文件夹​​。 现在通过右键单击项目转到 configure build path,在 build path 中选择

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

                  【讨论】:

                    【解决方案12】:

                    将 .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。

                    【讨论】:

                      猜你喜欢
                      • 2011-01-04
                      • 2013-05-14
                      • 2015-05-22
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-04-24
                      • 2018-01-05
                      相关资源
                      最近更新 更多