Android Studio:将jar添加为库?


1026

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

我正在使用Gson库对JSON对象进行序列化/反序列化。但是该库不包含在构建中。

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

当我尝试运行项目时,它无法编译,因此我添加了:

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

.gradle文件中的依赖项。之后,它可以正确编译,但是在运行应用程序时出现错误消息ClassDefNotFoundException

有人知道我在做什么错吗?



1
尽管这不能解决问题,但只想指出不赞成使用“编译”,而建议使用“实现”。
阿米尔·雷扎扎德

Answers:


1534

我已经为同一件事苦苦挣扎了很多小时,试图让Gson罐子正常工作。我终于破解了–这是我采取的步骤:

  1. 将Gson罐子(以我为例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其他人指出的必要步骤]


6
gradlew clean也帮助了我。非常感谢!
弗朗Žiačik

171
如果您不想为每个jar文件显式添加一行: compile fileTree(dir: 'libs', include: '*.jar')
J c

65
我建议您利用gradle的临时依赖项管理,并从mavenCentral()下载gson(如果可以接受互联网连接。只需添加repositories { mavenCentral() }和替换您的compile files(...)行,compile 'com.google.code.gson:gson:2.2.4'gradle就会自动为您下载和管理jar文件。这使SCM可以只跟踪源代码文件而不跟踪库

38
我不明白的添加库选择在第2步
Yster

6
在Android Studio 1.0.2中,不需要步骤2和3,因为该行已位于默认设置中build.gradle:compile fileTree(dir:'libs',include:['* .jar'])
Brian Marick

268

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

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

  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命令


这对我有用。我在Ubuntu上具有Android Studio版本1.2 Build 141.1890965。为什么说“自Android Studio 2.5起”?Windows / Mac上的版本是否不同?(1a)很难找到这个。组合框位于项目结构区域的左上方。需要选择“项目”而不是“ Android”,然后展开“应用”。(1b)没有出现“添加”选项,但是“粘贴”有效。(2)我有一行“ compile fileTree(dir:'libs',include:['* .jar']))”,但仍然必须添加您的显式单行。(4,5)一次(3)成功完成不需要。谢谢!
Phil Freihofner,2015年

“左侧面板”?您是说项目面板吗?可能在任何地方...使用Android Studio 2.3.3,我找不到库设置,但是将jar添加到“模块设置”中的“依赖项”似乎是相同的……
令人难以置信的

对于Mac,如果没有gradle:$ brew install gradle如果得到“ ./gradlew:权限被拒绝”,则需要运行$ chmod 755 gradlew然后可以运行$ ./gradlew assemble
Azkario Rizky

110

在项目中右键单击

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

请遵循以下屏幕截图:

1:

步骤1

2:

在此处输入图片说明

3:

在此处输入图片说明

您将看到:

在此处输入图片说明


@CamConnor我也这样认为。.其他答案已经过时了
Ganesh Pandey

这就是答案
亚历山德罗

4
但这不是公认的天秤座。例如,andriod studio编辑器:尝试将包导入到导入的jar中,无法识别。
戴夫

无法找到以这种方式删除导入的模块的方法。
戴夫

为什么我应该使用这种添加外部jar的方法,而不是“ copy-jar-to-libs”文件夹方法的其他答案?
Eido95

48

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

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

repositories {mavenCentral()}

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

一切都好。

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


这种方法是最好的,因为它正在使用Maven。
加里·德罗切拉

1
只需记住将版本号更新为最新版本即可:)到现在
为止

47

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

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

最让您感兴趣的部分是:

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

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

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

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

您无需再添加任何内容compile files(),并且该库也应正确添加到您的项目中。


添加为库已经以相同的方式添加了jar。所以我认为结果是一样的。我稍后再试。
Ozzie

添加为库可成功完成此操作-我和您Ozzie在同一条船上-完全一样的问题。
Jonah H.

好的,我认为“添加为库”仅将其添加到库列表中,而没有将其添加到模块依赖项中。
Jukurrpa

当我尝试此操作时,我发现它确实将compile files()行添加到了build.gradle文件中,但是它似乎使用了到库(/libs/foo.jar)的绝对路径。我将它们更改为相对路径(libs / foo.jar),这为我解决了问题。
Matt Holgate 2013年

40

所有这些解决方案都是过时的。现在在Android Studio中非常容易:

文件>新模块...

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

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


我认为使用maven仍然是更好的解决方案,特别是对于saneryee提供的大型项目。
加里·德罗切拉

2
即使这似乎已经过时了。只需将您的.jar文件放在“ libs”目录中,它将自动神奇地编译到您的项目中。Android Studio 1.4中已经存在默认规则设置,可以包含“ libs”目录中的所有* .jar文件。
Daniele Testa

35

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

  1. 如果您在项目浏览器中的Android视图中,则将其更改为项目视图,如下所示

在此处输入图片说明

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

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

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

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


34

“编译文件...”曾经为我工作,但现在不再有用。经过一番痛苦之后,我发现使用它可以代替:

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

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


1
这对我有用,但是最近发现有时AS不会拾取新/更新的jar,直到您执行gradle同步。
scottyab

请记住,不赞成使用“编译”,而赞成使用“实现”。
阿米尔·雷扎扎德

17
  1. 从网站下载库文件
  2. 从Windows复制探索
  3. 从Project Explorer粘贴到lib文件夹
  4. Ctrl+ Alt+ Shift+ S打开项目结构
  5. 选择“依赖项”选项卡,使用+添加文件
  6. 工具栏通过按钮将项目与Gradle文件同步

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


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。


您会详细说明这fileTree条线的作用吗?
Thufir

13

我发现Android Studio的Dependency Manager非常方便并且功能强大,可以管理第三方的依赖关系(如此处提到的gson)。提供适用于我的逐步指南(注意:这些步骤已针对Android Studio 1.6和Windows平台及更高版本进行了测试)。

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

在此处输入图片说明

步骤2: 选择“应用”,然后选择“依赖关系”标签。然后选择“添加> 1库依赖关系”

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

希望这会有所帮助:)


我发现这种方法存在一些问题,一直在研究使用commons-io-2.5的应用程序。将应用程序上载到Google Developer Console后,它会显示0个已签名的APK支持的设备。经过详尽的调查,我发现我必须将jar文件放在app / libs / commons-io-2.5.jar下,并在gralde中更新依赖项,例如“编译文件('libs / commons-io-2.5.jar”) ',不确定我在这里做错了什么,以及为什么文档未涵盖此内容。
AB

这就是它的工作方式。所有其他答案均无效。 Android Studio 2.3.3
imsrgadich

11

1.将罐子(以我gson-2.2.4.jar为例)放入libs文件夹。

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

3.现在,单击“使用Gradle文件同步项目”(留在顶部栏上的AVD管理器按钮中)。

完成以上三个步骤后,它开始正常运行。


9

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

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

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


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的模块-> Dependencyndies-> Module Dependency。模块的build.gradle将自动更新。 在此处输入图片说明


真好 一次编辑-现在是“新模块”(Android Studio 1.0.1)。“导入模块”送你到不同的精灵..
特拉维夫奔Shabat

7

我已经完成了上述3个步骤,对我来说,它的工作魅力很明显。

(我正在使用Android Studio 2.1.2)

在此处输入图片说明

步骤1

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

在此处输入图片说明

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

在此处输入图片说明

步骤3:单击Import JAR / .AAR软件包,然后浏览您的软件包。例如:OkHttp.jar

在此处输入图片说明


7

使用Android Studio 3+:

您应该只需将jar文件复制到app文件夹下的libs文件夹即可。

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

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

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

这是另一种解决方案:

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

在此处输入图片说明

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

在此处输入图片说明

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

在Android Studio中,右键单击jar文件,然后从弹出菜单中选择“添加为库...”。

在此处输入图片说明

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

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

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

import com.xxx.xxx;

7

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

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

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

对于Android gradle插件3.0及更高版本,最好改用以下代码:

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

7

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

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

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

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


5
menu File -> project struct -> module select "app" -> dependencies tab -> + button 
-> File dependency -> PATH/myfile.jar

5

步骤1:现在,在您的下方,您app folder应该看到libs,如果看不到,请创建它

步骤2:Drag & Drop the .jar file here您可能会得到提示"This file does not belong to the project",只需单击OKButton。

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

步骤4:现在已添加此jar

在此处输入图片说明


4

创建一个文件夹库。添加您的.jar文件。右键单击它,您会发现添加jar作为依赖项。点击它。这是您需要做的所有事情。您可以找到添加到build.gradle文件中的依赖项。


4

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

2)将您的jar文件复制到此“ your_libs”文件夹中

3)在Android Studio中,转到“文件”->“项目结构”->“依赖关系”->“添加”->“文件依赖关系”,然后导航到您的jar文件,该文件应位于“ src / your_libs”下

3)选择您的jar文件,然后单击“确定”

然后您可以在build.gradle上看到这样的内容:编译文件('src / your_libs / your.jar')


4

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

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

2:打开模块设置,转到Dependencies,在左下角有一个加号按钮。单击加号,然后选择“文件相关性”。在这里您可以看到jar文件。选择它并解决。


4

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

对于使用Android Studio 2.2.3创建的项目,我只需要在其libs下创建目录app并将jar放在此处。我是使用文件管理器完成此操作的,无需在Android Studio中单击或编辑任何内容。

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

{include=[*.jar], dir=libs}

3

在Mac OS X上:

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

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

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

    • 酿造安装gradle
    • gradle -v
    • 如果不是v1.6,请升级自制软件
  4. gradle clean(重建android无效)

这使我失望。


3

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

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

到您的build.gradle文件。

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


3
  1. libs在级别添加了文件夹app
  2. jars在此项目中添加了所有内容。
  3. 接下来,选择libs文件夹中的所有罐子,
  4. 右键单击所选项目,然后说 add library
  5. 然后您将在项目浏览器本身中找到jars扩展选项。

我观察到CTRL+ ALT+ SHIFT+ S- >项目结构- >应用程序模块- >相关性”已经有了一个条目(dir: 'libs', include: '*.jar')compile-option,最初并添加后的jar是按照上述的步骤中,。build.gradle有添加新条目罐子本身。


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文件可以使用了。


为什么不使用libs目录?
Deni Erdyneev '16

@ErdeniErdyneev我提供了另一种存储jar文件的方法。为什么我不使用资产?我的方法有什么问题吗?如果我错了,我准备纠正错误
Ranjith Kumar

3

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

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

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

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

对我来说就做到了。不再需要。我已经为Android显示了此查询,并为Android提供了另一个第三方库。


2

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

  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提到的)告诉编译器下的文件夹库的任何JAR看。创建此类文件夹“ libs”是一个好习惯,该文件夹将包含应用程序需要使用的jar包。

但这也将支持Maven依赖关系。推荐使用编译'com.google.code.gson:gson:2.3'(如@saneryee所述)添加中央远程存储库中而不是/ libs“本地存储库”中的依赖项。它基本上是在告诉gradle寻找该软件包的该版本,并告诉编译器在编译项目时考虑它(将其放在类路径中)

PS:我都用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.