Android Studio:添加 jar 作为库?

Android Studio: Add jar as library?

提问人:Ozzie 提问时间:5/17/2013 最后编辑:MahozadOzzie 更新时间:5/4/2022 访问量:784881

问:

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

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

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

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

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

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

有谁知道我做错了什么?

android gradle android-gradle-plugin build.gradle 依赖项管理

评论

0赞 Vinayak Bevinakatti 8/27/2016
参考 : stackoverflow.com/a/6859020/28557
4赞 amrezzd 6/17/2018
虽然这并不能解决问题,但只想指出“编译”已被弃用,取而代之的是“实现”。

答:

49赞 Jukurrpa 5/17/2013 #1

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

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

您最感兴趣的部分是:

(在 )打开模块设置,然后选择“依赖项”选项卡。File > Project Structure

在“依赖项”选项卡上,单击“添加”,然后选择“库”。

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

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

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

评论

0赞 Ozzie 5/17/2013
Add as library already 以相同的方式添加 jar。所以我认为结果是一样的。我稍后再试。
0赞 Jonah H. 5/18/2013
添加为库确实成功地做到了这一点 - 我和你在同一条船上 Ozzie - 完全相同的问题。
0赞 Jukurrpa 5/18/2013
好吧,我认为添加为库只是将其添加到库列表中,而没有将其添加到模块依赖项中。
0赞 Matt Holgate 10/22/2013
当我尝试这样做时,我发现它确实将编译文件()行添加到我的build.gradle文件中,但它似乎使用了库的绝对路径(/libs/foo.jar)。我将这些更改为相对路径(libs/foo.jar),这为我解决了这个问题。
1557赞 lepoetemaudit 5/19/2013 #2

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

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

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

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

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

[编辑 - 添加了步骤,正如其他人所指出的那样,这也是必要的]build.gradle

评论

175赞 J c 5/28/2013
如果您不想为每个 jar 文件显式添加一行:compile fileTree(dir: 'libs', include: '*.jar')
67赞 Joe 7/18/2013
我建议利用 gradle 的瞬态依赖管理并从 mavenCentral() 下载 gson(如果需要互联网连接是可以接受的)。只需添加并替换您的行,gradle 就会自动为您下载和管理 jar 文件。这允许 SCM 仅跟踪源代码文件,而不跟踪库。repositories { mavenCentral() }compile files(...)compile 'com.google.code.gson:gson:2.2.4'
38赞 Yster 8/10/2014
我在步骤 2 中没有获得“添加为库”选项。
6赞 Brian Marick 1/17/2015
在 Android Studio 1.0.2 中,不需要第 2 步和第 3 步,因为此行已处于默认状态:编译文件树(dir: 'libs', include: ['*.jar'])build.gradle
4赞 justinkoh 2/25/2015
找不到 libs 文件夹,或者在哪里添加 libs 文件夹?检查此链接。为什么会这样......stackoverflow.com/a/27120224/1273024
3赞 user2573236 7/11/2013 #3

在 Mac OS X 上:

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

  2. 添加编译语句build.grade

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

    • brew install gradle
    • gradle -v
    • 如果不是 v1.6,请升级 Homebrew
  4. gradle clean(重建 Android 不起作用)

这让我理清了。

279赞 ZenBalance 8/20/2013 #4

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

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

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

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

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

  4. 为了让 Android Studio 在 IDE 中编码时将本地 jar 文件识别为支持库,您需要执行以下几个步骤:

    4.1. 右键单击左侧面板中的模块,然后选择 。Open Library Settings

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

    4.3. 点击面板上方的标志,左起第二个 ->+Java

    Menu

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

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

评论

0赞 Phil Freihofner 5/2/2015
这对我有用。我在 Ubuntu 上有 Android Studio 版本 1.2 Build 141.1890965。为什么说“从 Android Studio 2.5 开始”?它是 Windows/Mac 上的不同版本吗?(1a) 找到这一点是很困难的。组合框位于项目结构区域的左上角。需要选择“项目”而不是“Android”并展开“应用程序”。(1b) 没有出现“添加”选项,但“粘贴”有效。(2)我有一行“编译文件树(dir:'libs',包括:['*.jar'])”,但仍然必须添加显式的单行。(4、5)一次不需要(3)成功完成。谢谢!
0赞 The incredible Jan 9/19/2017
“左侧面板”?你是说项目面板吗?可能在任何地方...使用 Android Studio 2.3.3 我找不到库设置,但将 jar 添加到模块设置中的依赖项似乎是一样的......
0赞 Azkario Rizky 9/23/2017
对于 mac 来说,如果你还没有 gradle: $ brew install gradle 如果你得到 “./gradlew: Permission denied” ,你需要运行 $ chmod 755 gradlew 然后你可以运行 $ ./gradlew assemble
36赞 user2084396 10/12/2013 #5

“编译文件...”曾经为我工作,但现在不再工作了。在经历了很多痛苦之后,我发现用它来代替是有效的:

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

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

评论

1赞 scottyab 7/9/2014
这对我有用,但是最近发现有时 AS 不会拾取新的/更新的 jar,直到您进行 gradle 同步。
0赞 amrezzd 6/17/2018
请记住,“编译”已被弃用,取而代之的是“实现”。
13赞 Sandeep 4/7/2014 #6

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

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

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

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

49赞 saneryee 9/16/2014 #7

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

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

repositories {mavenCentral()}

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

一切都还好。

你也可以看看这篇文章。 在 Android Studio 中集成第三方库的最佳方式

评论

0赞 Gary Drocella 5/4/2015
这种方法是最好的,因为它使用的是 maven。
1赞 Kitalda 6/16/2015
只需记住将版本号更新到最新的:)截至目前,这是 2.3.1,但请检查链接
3赞 diegosasw 9/25/2014 #8

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

  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'
    }
    

    这将允许支持两种不同的添加依赖项的方法。(如@Binod所述)告诉编译器在文件夹 libs 下查找 ANY jar。最好创建一个文件夹“libs”,其中包含我们的应用程序需要使用的 jar 包。compile fileTree(dir: 'libs', include: ['*.jar'])

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

PS:我两者都用

19赞 sansalk 10/2/2014 #9
  1. 从网站下载图书馆文件
  2. 从窗口浏览复制
  3. 从 Project Explorer 粘贴到 lib 文件夹
  4. Ctrl+Alt+Shift+S打开项目结构
  5. 选择“依赖项”选项卡,使用 + 添加文件
  6. 工具栏 使用按钮将项目与 gradle 文件同步

这解决了我的问题。尝试,如果有人想要更多详细信息,请告诉我。

3赞 Christina 12/28/2014 #10

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

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

添加到您的 build.gradle 文件中。

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

4赞 Gowtham Chandrasekaran 12/30/2014 #11

在 project-name/app 文件夹中,找到 libs 文件夹。如果没有 libs 文件夹,请创建一个。添加 .jar 文件。右键单击它,您将找到添加 .jar 作为依赖项。您可以找到添加到 build.gradle 文件中的依赖项。

19赞 Fergara 1/4/2015 #12

我通过添加一行来使它工作: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。

评论

0赞 Thufir 7/9/2017
您能详细说明一下这条线是做什么的吗?fileTree
11赞 huseyin 1/20/2015 #13

您可以通过两个选项来执行此操作。

第一个简单的方法。

将 .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文件添加到模块中。

import module --->选择您的.jar文件 --> 而不是作为.jar导入 --enter image description here

然后 CTRL+ALT+SHIFT+S --> project sturure -->选择要添加 jar 的模块 -->Dependencendies --> Module Dependency。build.gradle 将自动更新。enter image description here

评论

0赞 Aviv Ben Shabat 1/26/2015
好。一次编辑 - 现在是“新模块”(Android Studio 1.0.1)。“导入模块”将您发送到其他向导。
6赞 vuhung3990 1/30/2015 #14
menu File -> project struct -> module select "app" -> dependencies tab -> + button 
-> File dependency -> PATH/myfile.jar
3赞 user2779311 2/1/2015 #15

对于较新的 Android 1.0.2,build.gradle 文件中已存在以下内容

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

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

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

这为我做到了。没有更多需要的了。我已经为 Android aquery 展示了这个,这是另一个适用于 Android 的第三方库。

42赞 Post Impatica 2/21/2015 #16

所有这些解决方案都已经过时了。现在在 Android Studio 中非常简单:

文件>新模块...

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

然后从“文件”菜单中获取。从打开的窗口中选择,然后选择,然后按 ,选择然后选择您导入的模块,然后按Project Structureappdependenciesgreen plus buttonmodule dependencyOK

评论

0赞 Gary Drocella 5/4/2015
我认为使用 maven 仍然是更好的解决方案,尤其是对于大型项目,即由 saneryee 提供。
2赞 Daniele Testa 10/11/2015
即使这似乎已经过时了。只需将 .jar 文件放在“libs”目录中,它就会自动神奇地编译到您的项目中。Android Studio 1.4 中已经有一个默认规则设置,用于包含“libs”目录中的所有 *.jar 文件。
11赞 NarenderNishad 3/23/2015 #17

下载并复制您的文件到文件夹中,然后将以下行添加到build.gradle:.jarlibs

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

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

3赞 parasrish 6/8/2015 #18
  1. 添加了 级别的文件夹。libsapp
  2. 添加了此项目中的所有内容。jars
  3. 接下来,选择文件夹中的所有罐子,libs
  4. 右键单击所选项目,然后说add library
  5. 然后,您将在项目资源管理器本身中找到 Jars 扩展选项。

我观察到 + + + --> 项目结构 --> app-module -->Dependencies“ 最初已经有一个条目如下。按照上述步骤添加 jar 后,获取了新添加的 jar 本身的条目。CTRLALTSHIFTS(dir: 'libs', include: '*.jar')compile-optionbuild.gradle

8赞 Pankaj kumar 6/23/2015 #19

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

我们需要将依赖项添加为:

依赖项 {implementation 'com.google.code.gson:gson:2.2.4'}

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

4赞 idris yıldız 7/13/2015 #20

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上看到这样的内容:编译 文件('src/your_libs/ur.jar')

4赞 mbo 7/13/2015 #21

在android Studio 1.1.0中。 我通过以下步骤解决了这个问题:

1:将jar文件放到libs目录下。(在 Finder 中)

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

8赞 Vettiyanakan 7/23/2015 #22

将文件放在 Android 项目的文件夹中。.jarlibs

然后在应用的 gradle 文件中添加以下代码行:

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

对于 Android gradle 插件 3.0 及更高版本,最好改用它:

    implementation fileTree(dir: 'libs', include: ['*.jar'])
113赞 Ganesh Pandey 8/19/2015 #23

在项目中单击鼠标右键

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

请按照下面的屏幕截图操作:

1:

Step 1

2:

enter image description here

3:

enter image description here

您将看到以下内容:

enter image description here

评论

0赞 Ganesh Pandey 9/20/2016
@CamConnor我也这么认为......其他答案已过时
0赞 Alessandro 11/23/2016
这就是答案
4赞 Dave 12/18/2016
但它不被认为是天秤座。例如,andriod studio editor:尝试在导入的 jar 中导入一个包,无法识别。
1赞 Dave 12/18/2016
找不到以这种方式删除导入模块的方法。
1赞 android developer 3/4/2021
在 Android Studio 4.2 Beta 5 上导入 jar/aab 的选项在哪里?
5赞 IntelliJ Amiya 12/2/2015 #24

第 1 步:现在在您的应用程序文件夹下您应该看到 libs,如果您没有看到它,请创建它

步骤2:将.jar文件拖放到此处,您可能会收到提示“此文件不属于该项目”,只需单击“确定”按钮即可。

步骤3:现在您应该在libs文件夹下看到jar文件,右键单击jar文件并选择“添加为库”,单击“确定”提示“创建库”

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

enter image description here

3赞 Ranjithkumar 5/11/2016 #25

Android Studio 2.1 中,我遵循以下方式:

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

enter image description here

在你的 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 文件已准备就绪。

评论

0赞 Deni Erdyneev 5/12/2016
为什么不使用 libs 目录?
0赞 Ranjithkumar 5/12/2016
@ErdeniErdyneev 我给出了另一种存储 jar 文件的方法。为什么我不使用资产?我的方法有什么问题吗?如果我错了,我准备纠正错误
1赞 Mahozad 1/25/2022
@Ranjithkumar我认为 Jar 文件将包含在 APK 中并使其不必要地变大。
8赞 Elshan 6/19/2016 #26

我完成了上面的 3 个步骤,它对我的工作魅力。

(我正在使用 Android Studio 2.1.2)

enter image description here

第 1 步

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

enter image description here

步骤2:右键单击应用程序文件夹 -> New -> Module

enter image description here

步骤3:单击导入 JAR/。AAR 包 然后浏览您的包。例如:OkHttp.jar

enter image description here

15赞 A.B. 7/23/2016 #27

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

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

enter image description here

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

enter image description here

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

enter image description here

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

enter image description here

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

enter image description here

希望这能:)

评论

0赞 A.B. 8/23/2016
我发现这种方法存在一些问题,一直在使用commons-io-2.5的应用程序上工作。将应用上传到 Google Developer Console 时,会显示已签名的 apk 支持的 0 台设备。经过详尽的调查,我发现我必须将 jar 文件放在 app/libs/commons-io-2.5.jar 下并更新 gralde 中的依赖项,例如“编译文件('libs/commons-io-2.5.jar')”,不确定我在这里做错了什么以及为什么文档没有涵盖这一点。
0赞 Mr. Unnormalized Posterior 8/10/2017
这就是它的工作方式。所有其他答案都不起作用。Android Studio 2.3.3
37赞 Vinayak Bevinakatti 8/27/2016 #28

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

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

enter image description here

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

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

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

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

4赞 0xF 1/16/2017 #29

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

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

为什么有效?打开“构建/编辑库和依赖项”,您将看到:

{include=[*.jar], dir=libs}
8赞 live-love 12/24/2017 #30

使用 Android Studio 3+:

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

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

然后从“项目”窗口的下拉列表中选择“项目文件”,右键单击项目,选择“同步”以在“项目文件中查看文件”。它会自动在 gradle 文件 (Module:app) 中添加依赖项。

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

这是另一种解决方案:

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

enter image description here

选择新建...目录,在 app 下创建一个名为 libs 的文件夹。

enter image description here

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

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

enter image description here

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

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

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

import com.xxx.xxx;