题 Android Studio:将jar添加为库?


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

我正在使用 GSON 用于序列化/反序列化JSON对象的库。但是库不知何故不包含在构建中。

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

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

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

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

有谁知道我做错了什么?


916
2018-05-17 11:41


起源


参考: stackoverflow.com/a/6859020/28557 - Vinayak Bevinakatti
虽然这并没有解决问题,但只是想指出“编译”被弃用而不是“实现”。 - Amir Rezazadeh


答案:


我已经在同样的事情上苦苦挣扎了好几个小时,试图让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文件)

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

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

在我完成上述四个之后,它开始正常工作。我认为'添加为库'步骤是我之前错过的一个步骤,直到我清理它之前它才行。

[编辑 - 补充说 build.gradle 其他人指出的步骤也是必要的]


1469
2018-05-18 20:08



gradlew clean也帮助了我。非常感谢! - František Žiačik
如果您不想为每个jar文件显式添加一行: compile fileTree(dir: 'libs', include: '*.jar') - J c
我建议利用gradle的瞬态依赖管理并从mavenCentral()下载gson(如果要求互联网连接是可接受的。只需添加 repositories { mavenCentral() } 并替换你的 compile files(...) 与...一致 compile 'com.google.code.gson:gson:2.2.4' 和gradle将自动为您下载和管理jar文件。这允许SCM仅跟踪源代码文件而不跟踪库。 - Joe
我没有在步骤2中获得“添加为库”选项。 - Yster
在Android Studio 1.0.2中,不需要步骤2和3,因为此行已经是默认行 build.gradle:compile fileTree(dir:'libs',include:['* .jar']) - Brian Marick


以下是将本地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将本地jar文件识别为在IDE中编码时支持的库,您需要采取更多步骤:

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

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

    4.3。点击 + 从左边第二个面板上方签名 - > Java

    Menu

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

  5. 您可能需要运行上面的内容 ./gradlew 再命令一次


258
2017-08-19 19:50



这对我有用。我在Ubuntu上安装了Android Studio 1.2 Build 141.1890965。为什么这么说“从Android Studio 2.5开始”?它是Windows / Mac上的不同版本吗? (1a)发现这很难。组合框位于项目结构区域的左上角。需要选择“Project”而不是“Android”并展开“app”。 (1b)没有出现“添加”选项,但“粘贴”有效。 (2)我有一行“compile fileTree(dir:'libs',include:['* .jar'])”,但仍然需要添加你的显式单行。 (4,5)不需要一次(3)成功完成。谢谢! - Phil Freihofner
“左手面板”?你的意思是项目小组?可能在任何地方......使用Android Studio 2.3.3我找不到库设置,但在模块设置中将jar添加到依赖项似乎是相同的... - The incredible Jan
对于mac,如果你还没有gradle:$ brew install gradle如果你得到“./gradlew:Permission denied”,你需要运行$ chmod 755 gradlew然后你可以运行$ ./gradlew汇编 - Azkario Rizky


在项目中 右键点击 

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


105
2017-08-19 05:50



@CamConnor我也这么认为..其他答案已经过时了 - Ganesh Pandey
这是答案 - Alessandro
但它不被认为是图书馆。例如,andriod工作室编辑器:尝试在导入的jar中导入一个包,无法识别。 - Dave
找不到以这种方式删除导入模块的方法。 - Dave
为什么我应该使用这种添加外部jar的方法而不是“copy-jar-to-libs”文件夹方法的其他答案? - Eido95


IIRC,仅仅使用“添加为库”还不足以使用该项目进行编译。

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

你最感兴趣的部分是:

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

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

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

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

你不应该添加 compile files() 这个库应该正确地添加到你的项目中。


45
2018-05-17 13:13



添加为库已经以相同的方式添加了jar。所以我认为结果是一样的。我稍后再试。 - Ozzie
添加为库确实成功地做到了 - 我和你的Ozzie在同一条船上 - 完全相同的问题。 - jhirsch
好吧,我认为Add as library只将它添加到库列表中,并没有将其添加到模块依赖项中。 - Jukurrpa
当我尝试这个时,我发现它确实将compile files()行添加到我的build.gradle文件中,但它似乎使用了库的绝对路径(/libs/foo.jar)。我将这些更改为相对路径(libs / foo.jar),这为我解决了问题。 - Matt Holgate


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

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

repositories {mavenCentral()}

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

一切都好。

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


44
2017-09-15 23:25



这是使用中央仓库的正确方法。 - j2emanue
这种方法是最好的,因为它使用的是maven。 - Gary Drocella
只记得将版本号更新到最新:)截至目前为2.3.1,但检查 链接 - Kitalda


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

文件>新模块......

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

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


38
2018-02-21 04:20



我认为使用maven仍然是更好的解决方案,特别是对于大型项目,即由saneryee提供。 - Gary Drocella
即使这似乎已经过时了。只需将.jar文件放在“libs”目录中,它就会自动编译到您的项目中。 Android Studio 1.4中已经有一个默认规则设置,包括来自“libs”目录的所有* .jar文件。 - Daniele Testa


'编译文件......'曾经为我工作,但不再是。经过多次痛苦,我发现使用它可以起作用:

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

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


33
2017-10-11 20:49



这适用于我,但最近发现,有时AS在您进行gradle同步之前不会选择新的/更新的jar。 - scottyab
请记住,“编译”已被弃用,以支持“实现”。 - Amir Rezazadeh


轻松添加外部库的步骤 Android Studio

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

enter image description here

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

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

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

了解更多 Gradle Dependency Mangement


32
2017-08-26 18:48





  1. 从网站下载库文件
  2. 从Windows浏览器复制
  3. 从Project Explorer粘贴到lib文件夹
  4. 按Ctrl+Alt键+转移+小号 打开项目结构
  5. 选择Dependencies选项卡,使用+添加文件
  6. 工具栏使用按钮将项目与gradle文件同步

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


16
2017-10-02 09:06