1066

我正在尝试使用新的 Android Studio,但似乎无法使其正常工作。

我正在使用Gson库来序列化/反序列化 JSON 对象。但是该库不知何故未包含在构建中。

我创建了一个只有MainActivity的新项目。复制/libs 文件夹中的gson-2.2.3.jar并将其添加为库依赖项(右键单击->添加为库)。这包括 android studio 中的 jar,因此可以从源文件中引用它。

当我尝试运行该项目时,它无法编译,所以我添加了:

compile files('libs/gson-2.2.3.jar')

到 de .gradle 文件中的依赖项。之后它可以正确编译,但是在运行应用程序时我得到一个ClassDefNotFoundException.

有谁知道我做错了什么?

4

35 回答 35

1550

我已经为同样的事情苦苦挣扎了好几个小时,试图让 Gson jar 发挥作用。我终于破解了它——这是我采取的步骤:

  1. 将 Gson jar(在我的情况下为gson-2.2.4.jar)放入libs文件夹
  2. 右键单击它并点击“添加为库”
  3. 确保它compile files('libs/gson-2.2.4.jar')在您的build.gradle文件中(或者compile fileTree(dir: 'libs', include: '*.jar')如果您使用许多 jar 文件)

    编辑:在 Android Studio 3.0+ 中使用implementation files('libs/gson-2.2.4.jar')(或)implementation fileTree(dir: 'libs', include: '*.jar')

  4. 做一个干净的构建(你可能可以在 Android Studio 中很好地做到这一点,但要确保我在终端中导航到我的应用程序的根文件夹并输入gradlew clean。我在 Mac OS X 上,你的系统上的命令可能不同

在我完成上述四个之后,它开始正常工作。我认为“添加为库”步骤是我之前错过的步骤,并且在我清理它之前它也不起作用。

[编辑-添加了build.gradle其他人指出的必要步骤]

于 2013-05-18T20:08:54.180 回答
274

以下是将本地 jar 文件作为库添加到模块的说明:

  1. 在模块目录的顶层创建一个“libs”文件夹(包含“src”目录的同一目录)

  2. build.gradle file添加以下内容,以便您的依赖项闭包具有:

    dependencies {
        // ... other dependencies
        compile files('libs/<your jar's name here>')
    }
    
  3. Android Studio 应该已经设置了一个 gradlew 包装器。从命令行导航到项目的顶层(包含gradlew文件的目录)。

    运行./gradlew assemble。这应该使用库编译项目。您可能需要根据需要修复 build.gradle 文件中的错误。

  4. 为了让 Android Studio 在 IDE 中编码时将本地 jar 文件识别为支持库,您需要采取更多步骤:

    4.1。右键单击左侧面板中的模块并选择Open Library Settings

    4.2. 在对话框的左侧面板上,选择Libraries

    4.3. 单击+面板上方的符号左数第二个 ->Java

    菜单

    4.4. 选择您的本地 jar 并将其添加到项目中。

  5. 您可能需要再次运行上述./gradlew命令

于 2013-08-19T19:50:29.820 回答
111

在项目中右键

-> new -> module
-> import jar/AAR package
-> import select the jar file to import
-> click ok -> done

请按照以下屏幕截图:

1:

步骤1

2:

在此处输入图像描述

3:

在此处输入图像描述

你会看到这个:

在此处输入图像描述

于 2015-08-19T05:50:57.107 回答
47

IIRC,仅使用“添加为库”不足以使其与项目一起编译。

查看Intellij关于将库添加到项目的帮助

您最感兴趣的部分是:

(在File > Project Structure)打开模块设置并选择依赖项选项卡。

在依赖项选项卡上,单击添加并选择库。

在“选择库”对话框中,选择一个或多个库,然后单击“添加所选”。

如果该库未显示在对话框中,请将其添加到“库”设置中,就在“模块”下方。

您应该不再需要添加compile files(),并且应该将库正确添加到您的项目中。

于 2013-05-17T13:13:50.647 回答
47

在 Android Stuido 中,我喜欢使用 Gradle 来管理 Gson 库。

在您的 build.gradle 文件中添加以下依赖项。

repositories {mavenCentral()}

dependencies {compile 'com.google.code.gson:gson:2.2.4'}

一切都好。

你也可以看看这个帖子。 在 Android Studio 中集成第三方库的最佳方式

于 2014-09-15T23:25:02.150 回答
40

所有这些解决方案都已过时。现在在 Android Studio 中真的很容易:

文件 > 新模块...

下一个屏幕看起来很奇怪,就像您正在选择一些小部件或其他东西,但将其保留在第一张图片和下方滚动并找到“导入 JAR 或 .AAR 包”

然后Project Structure从文件菜单中选择。app从打开的窗口中选择,然后选择dependencies,然后按green plus button,选择module dependency然后选择您导入的模块,然后按OK

于 2015-02-21T04:20:15.447 回答
35

在Android Studio中添加外部库的简单步骤

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

在此处输入图像描述

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

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

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

阅读有关Gradle 依赖管理的更多信息

于 2016-08-26T18:48:41.753 回答
34

“编译文件...”曾经为我工作,但不再适用。在经历了很多痛苦之后,我发现使用它可以代替:

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

我不知道为什么这会有所作为,但是,至少该死的东西现在正在起作用。

于 2013-10-11T20:49:36.680 回答
17

我通过添加一行来使它工作build.gradle

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar']) ----> AS creates this
    implementation 'com.google.code.gson:gson:2.3.1'   ----------> I added this one
}

不要忘记点击Sync now右上角的。

我正在使用 Android Studio 1.0.1。

于 2015-01-03T18:51:05.197 回答
17
  1. 从网站下载库文件
  2. 从 windows explore 复制
  3. 从 Project Explorer 粘贴到 lib 文件夹
  4. Ctrl+ Alt+ Shift+S打开项目结构
  5. 选择 Dependencies 选项卡,使用 + 添加文件
  6. 工具栏 使用按钮将项目与 gradle 文件同步

这解决了我的问题。试试看,如果有人想了解更多细节,请告诉我。

于 2014-10-02T09:06:58.707 回答
13

我发现 Android Studio 的 Dependency Manager 非常方便且强大,可以管理 3rd 方依赖项(就像这里提到的 gson)。提供对我有用的分步指南(注意:这些步骤已针对 Windows 平台上的 Android Studio 1.6 及更高版本进行了测试)。

第 1 步: 转到“构建 > 编辑库和依赖项...”,它会打开“项目结构”对话框

在此处输入图像描述

步骤 2: 选择“应用程序”,然后选择“依赖项”选项卡。然后选择“添加 > 1 个库依赖项”

在此处输入图像描述

步骤 3: 将显示“选择库依赖项”对话框,在搜索中指定“gson”并按“搜索按钮”

在此处输入图像描述

步骤4: 所需的依赖项将显示在搜索列表中,选择com.google.code.gson:gson:2.7(这是我写答案时的最新版本),按OK

在此处输入图像描述

在“项目结构”对话框中按确定。Gradle 会相应地更新您的构建脚本。

在此处输入图像描述

希望这会有所帮助:)

于 2016-07-23T13:32:25.713 回答
11

1.将 jar(在我的情况下为gson-2.2.4.jar)放入 libs 文件夹。

2.确保编译文件 ( libs/gson-2.2.4.jar) 在您的 build.gradle 文件中。

3.现在单击“与 Gradle 文件同步项目”(左侧到顶部栏上的 AVD 管理器按钮)。

在我完成上述三个之后,它开始正常工作。

于 2014-04-07T09:58:10.797 回答
9

下载并复制.jar文件libs夹中的文件,然后将这些行添加到 build.gradle:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.google.code.gson:gson:2.3.1'
}

不要忘记点击“立即同步”

于 2015-03-23T06:11:12.450 回答
9

您可以使用两个选项来执行此操作。

第一种简单的方法。

将 .jar 文件复制到剪贴板,然后将其添加到 libs 文件夹。要查看项目中的 libs 文件夹,请从文件夹上方的组合框中选择项目。

然后右键单击.jar 文件并单击添加为库然后选择一个模块然后确定。您可以在依赖项块内的 build.gradle 文件中看到 .jar 文件。

 dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:21.0.3'
        implementation project(':okhttp-2.0.0')
        implementation 'com.google.code.gson:gson:2.3.1'
    }

第二种方法是:我们可以通过将此 .jar 文件作为 .jar 模块导入来将 .jar 文件添加到模块中,然后将此模块添加到我们想要的任何模块中。

导入模块 ---> 选择您的 .jar 文件 --> 而不是作为 .jar 导入 -- 在此处输入图像描述

然后 CTRL+ALT+SHIFT+S --> 项目结构 --> 选择要添加 jar 的模块 --> Dependencendies --> 模块依赖。模块的 build.gradle 会自动更新。 在此处输入图像描述

于 2015-01-20T12:51:12.073 回答
7

与 Eclipse 不同,我们不需要下载 jar 并将其放在 /libs 文件夹中。Gradle 处理这些事情我们只需要添加 Gradle 依赖项,Gradle 将其下载并放入 gradle 缓存中。

我们需要添加依赖项:

依赖{实施'com.google.code.gson:gson:2.2.4'}

就是这样但是我们也可以下载 jar 并将其添加为库,但最佳实践是添加 Gradle 依赖项。

于 2015-06-23T06:36:16.523 回答
7

使用 Android Studio 3+:

您应该能够简单地将 jar 文件复制到 app 文件夹下的 libs 文件夹中。

... myproject\app\libs\myfile.jar

然后从 Projects 窗口的下拉列表中选择 Project Files,右键单击该项目,选择 Synchronize 以在 Project Files 中查看该文件。它将自动在 gradle 文件 (Module:app) 中添加依赖项。

dependencies {
...
    implementation files('libs/myfile.jar')

这是另一个解决方案:

转到项目文件视图(从下拉列表中选择项目文件)。

在此处输入图像描述

选择 New... Directory,在 app 下创建一个名为 libs 的文件夹。

在此处输入图像描述

打开文件资源管理器,将您的 jar 文件复制并粘贴到 libs 文件夹中。

在 Android Studio 中,右键单击 jar 文件,然后从弹出菜单中选择 Add as a Library...。

在此处输入图像描述

您应该会在 gradle 文件的依赖项列表中看到该文件:

dependencies {
...
    implementation files('libs/myfile.jar')
}

打开您的 java 文件,并在其中添加 import 语句:

import com.xxx.xxx;
于 2017-12-23T18:43:00.800 回答
7

.jar文件放在libsAndroid 项目的文件夹中。

然后在应用程序的 gradle 文件中添加这行代码:

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

对于 Android gradle plugin 3.0 及更高版本,最好改用这个:

    implementation fileTree(dir: 'libs', include: ['*.jar'])
于 2015-07-23T05:31:36.943 回答
7

我已经完成了以上3 个步骤及其对我的工作魅力。

(我使用的是 Android Studio 2.1.2)

在此处输入图像描述

步骤1

  • 将您的jar 包名称(作为示例)添加到build.gradle(Module:app)compile 'com.squareup.okhttp3:okhttp:3.3.1'下的 gradle 构建脚本中。

在此处输入图像描述

第2步: 右键单击应用程序文件夹->新建->模块

在此处输入图像描述

第 3 步:单击Import JAR/.AAR Package然后浏览您的包。例如:OkHttp.jar

在此处输入图像描述

于 2016-06-19T09:22:16.850 回答
5
menu File -> project struct -> module select "app" -> dependencies tab -> + button 
-> File dependency -> PATH/myfile.jar
于 2015-01-30T08:51:26.493 回答
5

第 1 步:现在app folder您应该看到libs,如果您没有看到,则创建它

第2步:Drag & Drop the .jar file here你可能会得到一个提示"This file does not belong to the project",只需点击OK按钮。

第3步:现在你应该看到libs文件夹下的jar文件,右键单击jar文件并选择"Add as library", Click OK for prompt "Create Library"

第4步:现在这个罐子已经被添加了。

在此处输入图像描述

于 2015-12-02T09:10:36.880 回答
4

在您的项目名称/应用文件夹中,找到 libs 文件夹。如果没有 libs 文件夹,则创建一个。添加您的 .jar 文件。右键单击它,您会发现添加 .jar 作为依赖项。您可以找到添加到 build.gradle 文件中的依赖项。

于 2014-12-30T13:41:05.673 回答
4

我已经阅读了这里的所有答案,它们似乎都涵盖了旧版本的 Android Studio!

对于使用 Android Studio 2.2.3 创建的项目,我只需要在libs下面创建一个目录app并将我的 jar 放在那里。我用我的文件管理器做到了这一点,无需在 Android Studio 中单击或编辑任何内容。

为什么它有效?打开Build / Edit Libraries and Dependencies,你会看到:

{include=[*.jar], dir=libs}
于 2017-01-15T18:50:18.260 回答
4

1) 在 Project/app/src 文件夹中创建一个“your_libs”文件夹。

2)将你的jar文件复制到这个'your_libs'文件夹中

3) 在 Android Studio 中,转到 File -> Project Structure -> Dependencies -> Add -> File Dependency 并导航到您的 jar 文件,该文件应位于“src/your_libs”下

3)选择你的jar文件并点击“确定”

然后你可以在你的 build.gradle 上看到这样的: compile files('src/your_libs/your.jar')

于 2015-07-13T06:43:34.507 回答
4

在安卓工作室 1.1.0 中。我通过以下步骤解决了这个问题:

1:将jar文件放入libs目录。(在查找器中)

2:打开模块设置,进入依赖,左下角有一个加号按钮。单击加号按钮,然后选择“文件依赖关系”。在这里你可以看到你的 jar 文件。选择它并解决。

于 2015-07-13T11:33:02.530 回答
3

在 Mac OS X 上:

  1. 将 jar 添加为库(将 jar 拖到库中,右键单击添加为库)

  2. 将编译语句添加到build.grade

  3. 安装gradle v1.6(使用自制软件)

    • 冲泡安装gradle
    • 毕业 -v
    • 如果不是 v1.6,请升级 homebrew
  4. gradle clean(重建 android 不起作用)

这解决了我。

于 2013-07-11T15:12:37.510 回答
3

像许多人之前指出的那样,您应该添加

compile files('libs/gson-2.2.3.jar') 

到您的 build.gradle 文件。

但是我在 Android Studio 中有一个从 Eclipse 迁移的项目,在这种情况下,“libs”文件夹被命名为“lib”,所以对我来说删除“s”解决了这个问题。

于 2014-12-27T19:22:16.803 回答
3

对于较新的 Android 1.0.2,您的 build.gradle 文件中已包含以下内容

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

将库jar添加到您的libs文件夹->右键单击库->单击添加为库->它要求您添加项目->选择您的项目->单击确定以下行自动添加到构建.gradle

implementation files('libs/android-query.jar')

那是为我做的。什么都不需要了。我已经为 android aquery 展示了这个用于 android 的另一个第三方库。

于 2015-02-01T15:54:03.593 回答
3

我的答案基本上是收集上面提供的一些正确但不完整的答案。

  1. 打开 build.gradle
  2. 添加以下内容:

    dependencies {
    compile 'com.android.support:appcompat-v7:19.+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.code.gson:gson:2.3'
    }
    

    这将允许支持两种不同的添加依赖项的方式。(compile fileTree(dir: 'libs', include: ['*.jar'])正如@Binod 提到的)告诉编译器在文件夹 libs 下查找任何 jar。创建这样一个文件夹“libs”是一个很好的做法,它将包含我们的应用程序需要使用的 jar 包。

但这也将允许支持 Maven 依赖项。编译'com.google.code.gson:gson:2.3'(如@saneryee 所述)是另一种推荐的添加依赖项的方法,这些依赖项位于中央远程存储库中,而不是我们的 /libs “本地存储库”中。它基本上是告诉 gradle 寻找那个版本的包,它告诉编译器在编译项目时考虑它(将它放在类路径中)

PS:我两个都用

于 2014-09-25T04:00:14.077 回答
3
  1. libs在 . 级别添加了文件夹app
  2. jars在这个项目中添加了所有内容。
  3. 接下来,选择libs文件夹中的所有罐子,
  4. 右键单击所选项目,然后说add library
  5. 然后你会在项目资源管理器中找到 jars 扩展选项。

我观察到CTRL+ ALT+ SHIFT+ S--> 项目结构 --> app-module --> Dependencies" 最初已经有一个条目,如下所示。(dir: 'libs', include: '*.jar')按照compile-option上述步骤添加 jar 后,build.gradle得到了新添加的条目罐子本身。

于 2015-06-08T10:38:02.667 回答
3

Android Studio 2.1我遵循这种方式,

转到应用程序-> src-> 主->资产文件夹(如果不可用,创建它)-> 放置您的 JAR 文件

在此处输入图像描述

在你的 build.gradle 添加这样的依赖,

implementation files('src/main/assets/jsoup.jar')
implementation files('src/main/assets/org-apache-xmlrpc.jar')
implementation files('src/main/assets/org.apache.commons.httpclient.jar')
implementation files('src/main/assets/ws-commons-util-1.0.2.jar')

立即同步。现在您的 JAR 文件可以使用了。

于 2016-05-11T11:54:40.860 回答
1

compile fileTree(dir: 'libs', include: '*.jar')工作正常,但尚未compile files(...)使用 Studio Beta 0.8.1 进行测试

于 2014-07-08T11:16:45.673 回答
0

我不知道为什么,但是当我尝试使用 Gradle 实现这些解决方案时,我的 Android Studio 0.8.14 变得疯狂。我承认我对这个出色的构建工具知之甚少,但 Studio 破坏我的项目是为了什么?我设法让它以这种方式工作:将 android-support-v13.jar 放入“libs”目录,然后在我的项目上按 F4 并在我指向 android-support-v13.jar 的位置添加文件依赖项。

于 2014-12-03T16:07:19.223 回答
0

做这个 :

在应用程序文件夹下创建 libs 文件夹。将 .jar 文件添加到 libs 文件夹。然后将 .jar 文件添加到应用程序的 build.gradle 依赖项中。最后将项目与 Gradle 文件同步。

于 2014-05-29T07:57:45.313 回答
0

在我的情况下,添加的库缺少一些依赖项,但不幸的是 Android Studio (0.8.14) 将其保密。

无需手动配置任何东西!我刚刚添加了缺少的库并在应用程序 build.gradle文件中使用了默认的依赖配置,就像这样

dependencies {
    compile 'com.google.code.gson:gson:2.+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
于 2014-11-03T00:51:25.020 回答
0

以下是在 Kotlin DSL (build.gradle.kts) 中执行此操作的各种方法。
我们假设库文件位于project/app/libs/目录中。

  • 方法一

    implementation(
        files(
            "libs/library-1.jar",
            "libs/library-2.jar",
            "$rootDir/foo/my-common-library.jar"
        )
    )
    
  • 方法二

    implementation(
        fileTree("libs/") {
            // You can add as many include or exclude calls as you want
            include("*.jar")
            include("another-library.aar") // aar is similar to jar
            exclude("bad-library.jar")
        }
    )
    
  • 方法三

    implementation(
        fileTree(
            // Here, instead of repeating include or exclude, assign a list
            "dir" to "libs/",
            "include" to "*.jar",
            "exclude" to listOf("bad-library-1.jar", "bad-library-2.jar")
        )
    )
    
  • 方法四

    repositories {
        flatDir {
            dirs("libs/", "lib/")
        }
    }
    
    dependencies {
        // Could also write implementation(":jsoup:1.4.13")
        implementation("org.jsoup:jsoup:1.4.13")
        // NOTE: Add @aar suffix for AAR files
        implementation("ir.mahozad.android:pie-chart:0.7.0@aar")
    }
    

您可以在和调用中使用Ant 模式,如上所示。includeexclude

有关这方面的更多信息,请参阅Gradle 文档

感谢这篇文章这篇文章提供了有用的答案。

于 2022-01-25T13:30:01.980 回答