ChatGPT解决这个技术问题 Extra ChatGPT

Android Studio:将 jar 添加为库?

我正在尝试使用新的 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

有谁知道我做错了什么?

虽然这并不能解决问题,但只想指出“编译”已被弃用,有利于“实现”。

q
quangkid

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

将 Gson jar(在我的情况下为 gson-2.2.4.jar)放入 libs 文件夹右键单击它并点击“添加为库”确保编译文件(“libs/gson-2.2.4.jar”)在您的 build.gradle 文件(或编译 fileTree(dir: 'libs', include: '*.jar') 如果您使用许多 jar 文件)编辑:使用实现文件('libs/gson-2.2.4.jar') (或实现 fileTree(dir: 'libs', include: '*.jar')) 在 Android Studio 3.0+ 中做一个干净的构建(你可以在 Android Studio 中做到这一点,但要确保我在终端中导航到我的应用程序的根文件夹并输入 gradlew clean。我在 Mac OS X 上,您的系统上的命令可能不同

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

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


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

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

在模块目录的顶层创建一个“libs”文件夹(包含“src”目录的同一目录)在 build.gradle 文件中添加以下内容,以便您的依赖项闭包具有:依赖项 { // ... 其他dependencies compile files('libs/') } Android Studio 应该已经设置了一个 gradlew 包装器。从命令行导航到项目的顶层(具有 gradlew 文件的目录)。运行 ./gradlew assemble。这应该使用库编译项目。您可能需要根据需要修复 build.gradle 文件中的错误。为了让 Android Studio 在 IDE 中编码时将本地 jar 文件识别为支持库,您需要采取更多步骤: 4.1.右键单击左侧面板中的模块,然后选择打开库设置。 4.2.在对话框的左侧面板上,选择库。 4.3.单击左侧第二个面板上方的 + 号 -> Java 4.4。选择您的本地 jar 并将其添加到项目中。您可能需要再运行一次上述 ./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) 成功完成。谢谢!
“左侧面板”?你是说项目面板吗?可以在任何地方...使用 Android Studio 2.3.3 我找不到库设置,但将 jar 添加到模块设置中的依赖项似乎是相同的...
对于 mac,如果你还没有 gradle: $ brew install gradle if you get "./gradlew: Permission denied" ,你需要运行 $ chmod 755 gradlew 然后你可以运行 $ ./gradlew assemble
G
Ganesh Pandey

在项目中右键

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

请按照以下屏幕截图:

1:

https://i.stack.imgur.com/t1zzO.png

2:

https://i.stack.imgur.com/bVTKi.png

3:

https://i.stack.imgur.com/VBGEc.png

你会看到这个:

https://i.stack.imgur.com/T5Vna.png


@CamConnor我也这么认为..其他答案已经过时
这就是答案
但它不被识别为图书馆。比如andriod studio editor:尝试在导入的jar中导入一个包,不识别。
找不到以这种方式删除导入模块的方法。
在 Android Studio 4.2 Beta 5 上导入 jar/aab 的选项在哪里?
C
Community

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

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

repositories {mavenCentral()}

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

一切都好。

你也可以看看这个帖子。 The best way to integrate third party library in Android studio


这种方法是最好的,因为它使用的是 maven。
请记住将版本号更新为最新的 :) 目前是 2.3.1,但请检查 link
C
Community

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

检查 Intellij's help 关于将库添加到项目

您最感兴趣的部分是:

(在文件 > 项目结构中)打开模块设置并选择依赖项选项卡。在依赖项选项卡上,单击添加并选择库。在“选择库”对话框中,选择一个或多个库,然后单击“添加所选”。

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

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


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

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

文件 > 新模块...

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

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


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

在 Android Studio 中添加外部库的简单步骤如果您在项目资源管理器中的 Android 视图中,请将其更改为项目视图,如下所示右键单击要添加外部库的所需模块,然后选择新建 > 目录并将其命名为'libs' 现在将 blah_blah.jar 复制到 'libs' 文件夹中 右键单击 blah_blah.jar,然后选择 'Add as Library..'。这将作为编译文件('libs/blah_blah.jar')自动添加并进入 build.gradle 并同步 gradle。完成请注意:如果您使用的是 3rd 方库,那么最好使用 Gradle 脚本在 gradle 脚本运行时自动下载 JAR 和依赖项 JAR 的依赖项。例如:编译 'com.google.android.gms:play-services-ads:9.4.0' 阅读有关 Gradle 依赖管理的更多信息


u
user2084396

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

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

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


这对我有用,但是最近发现有时 AS 在您进行 gradle 同步之前不会拾取新的/更新的 jar。
请记住,“编译”已被弃用,取而代之的是“实现”。
E
Eric Aya

从网站下载库文件 从 windows explore 复制 从 Project Explorer 粘贴到 lib 文件夹 Ctrl+Alt+Shift+S 打开项目结构 选择依赖项选项卡,使用 + 工具栏添加文件 使用按钮将项目与 gradle 文件同步

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


R
Rahul Gaur

我通过在 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 行的作用吗?
A
A.B.

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

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

https://i.stack.imgur.com/AancD.png

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

https://i.stack.imgur.com/gIxHY.png

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

https://i.stack.imgur.com/HPzBT.png

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

https://i.stack.imgur.com/he34z.png

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

https://i.stack.imgur.com/T9tRu.png

希望这会有所帮助:)


我发现这种方法存在一些问题,一直在开发使用 commons-io-2.5 的应用程序。将应用程序上传到 Google Developer Console 时,它显示 0 个设备支持已签名的 apk。经过详尽的调查,我发现我必须将 jar 文件放在 app/libs/commons-io-2.5.jar 下,并像这样 'compile files('libs/commons-io-2.5.jar') 更新 gralde 中的依赖项',不确定我在这里做错了什么以及为什么文档没有涵盖这一点。
这就是它的工作方式。所有其他答案均无效。 Android Studio 2.3.3
b
bofredo

1. 将 jar(在我的情况下为 gson-2.2.4.jar)放入 libs 文件夹。 2. 确保编译文件 (libs/gson-2.2.4.jar) 在您的 build.gradle 文件中。 3. 现在单击“与 Gradle 文件同步项目”(左侧到顶部栏上的 AVD 管理器按钮)。

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


A
Abhinav Gupta

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

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

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


A
Abhinav Gupta

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

第一种简单的方法。

将 .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 文件添加到模块中,然后将此模块添加到我们想要的任何模块中。

https://i.stack.imgur.com/Qvjze.png

https://i.stack.imgur.com/TpY4q.png


好的。一次编辑 - 现在是“新模块”(Android Studio 1.0.1)。 “导入模块”将您带到不同的向导..
E
Elshan

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

(我使用的是 Android Studio 2.1.2)

https://i.stack.imgur.com/fgJag.png

步骤1

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

https://i.stack.imgur.com/F3ybS.png

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

https://i.stack.imgur.com/ardzA.png

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

https://i.stack.imgur.com/SalI1.png


l
live-love

使用 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')

这是另一个解决方案:

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

https://i.stack.imgur.com/3Bmk2.png

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

https://i.stack.imgur.com/US0wB.png

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

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

https://i.stack.imgur.com/M7Oz9.png

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

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

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

import com.xxx.xxx;

S
Stephen C

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

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

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

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

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

A
Abhinav Gupta

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

我们需要添加依赖项:

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

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


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

I
IntelliJ Amiya

第 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步:现在这个罐子已经被添加了。

https://i.stack.imgur.com/Clh8O.png


i
idris yıldız

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


m
mbo

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

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

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


0
0xF

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

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

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

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

a
avs

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


R
Rajeev Bera

在 Mac OS X 上:

将jar添加为库(将jar拖到libs,右键单击add as lib)在build.grade中添加编译语句安装gradle v1.6(使用homebrew)brew install gradle gradle -v如果不是v1.6,升级homebrew gradle clean(重建安卓没用)

这解决了我。


d
diegosasw

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

打开 build.gradle 添加以下内容: 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 依赖项。 compile 'com.google.code.gson:gson:2.3'(正如@saneryee 所提到的)是另一种推荐的添加依赖项的方法,这些依赖项位于中央远程存储库中,而不是在我们的 /libs “本地存储库”中。它基本上是告诉 gradle 寻找那个版本的包,它告诉编译器在编译项目时考虑它(将它放在类路径中)

PS:我两个都用


C
Christina

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

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

到您的 build.gradle 文件。

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


A
Agilanbu

在 app 级别添加了 libs 文件夹。在这个项目中添加了所有的 jars。接下来,选择所有 jars,在 libs 文件夹中,右键单击所选项目,然后说添加库,然后您将在项目资源管理器中找到 jars 扩展选项。

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


A
Abhinav Gupta

在 Android Studio 2.1 我遵循这种方式,

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

https://i.stack.imgur.com/fvOiT.png

在你的 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 目录?
@ErdeniErdyneev 我提供了另一种存储 jar 文件的方法。为什么我不使用资产?我的方法有什么问题吗?如果我错了,我准备改正错误
@Ranjithkumar 我认为 Jar 文件将包含在 APK 中并使其不必要地变大。
A
Abhinav Gupta

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

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

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

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

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