Android Studio:添加jar作为库?

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

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

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

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

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

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

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

774667 次浏览

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

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

你最感兴趣的部分是:

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

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

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

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

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

我一直在为同样的事情挣扎了好几个小时,试图让Gson罐子正常工作。我终于破解了它-以下是我采取的步骤:

  1. 将Gson jar(在我的情况下,gson-2.2.4.jar)放入libs文件夹
  2. 右键单击它并点击“添加为库”
  3. 确保compile files('libs/gson-2.2.4.jar')在您的build.gradle文件中(如果您使用许多jar文件,则为compile 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中做得很好,但要确保我在终端中导航到我的应用程序的根文件夹并键入gradlew clean。我在Mac OS X上,命令可能与您的系统不同

在我做了上述四个之后,它开始工作得很好。我认为添加为库的步骤是我之前错过的步骤,直到我清理它才起作用。

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

在Mac OS X上:

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

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

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

    • brew install gradle
    • gradle-v
    • 如果不是v1.6,请升级自制
  4. Gradle清洁(重建Android不起作用)

这把我弄清楚了。

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

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

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

    dependencies {// ... other dependenciescompile files('libs/<your jar's name here>')}
  3. Android Studio should have already setup a gradlew wrapper. From the command line, navigate to the top level of your project (the directory that has a gradlew file).

    Run ./gradlew assemble. This should compile the project with the library. You may need to fix errors in your build.gradle file as necessary.

  4. In order to have Android Studio recognize the local jar files as libraries for support while coding in the IDE, you need to take a few more steps:

    4.1. Right click on the module in the left hand panel and choose Open Library Settings.

    4.2. On the left panel of the dialog, choose Libraries.

    4.3. Click the + sign above the panel second from the left -> Java

    Menu

    4.4. Select your local jar and add it to the project.

  5. You may need to run the above ./gradlew command one more time

'编译文件…'曾经为我工作,但现在不是了。经过很多痛苦,我发现使用这个反而有效:

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

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

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

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

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

在我做了上面三个之后,它开始工作得很好。

这样做:

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

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

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

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

repositories {mavenCentral()}
dependencies {compile 'com.google.code.gson:gson:2.2.4'}

一切都OK。

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

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

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

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

PS:我两个都用

  1. 从网站下载图书馆文件
  2. 从Windows探索复制
  3. 从Project Explorer粘贴到lib文件夹
  4. Ctrl+Alt+Shift+S开放式项目结构
  5. 选择依赖项选项卡,使用+添加文件
  6. 工具栏使用按钮将项目与gradle文件同步

这解决了我的问题。尝试,如果有人想要更多的细节让我知道。

在我的情况下添加的库遗漏了一些依赖项,但不幸的是Android Studio(0.8.14)将其作为一个秘密。

不需要手动配置任何东西!我只是添加了缺失的库并使用了应用程序build.gradle文件中的默认依赖项配置,如下所示

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

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

就像许多人之前指出的那样,你应该补充

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

你的build.gradle档案。

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

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

我只需要在build.gradle中添加一行就可以了:

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

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

我使用的是Android Studio 1.0.1。

您可以通过两种选择来做到这一点。

第一个简单的方法。

将. 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导入--在此处输入图片描述

然后CTRL+ALT+SHIFT+S-->project sturure-->选择您想要添加jar的模块-->Dependencendie-->模块依赖。模块的build.gradle将自动更新。在此处输入图片描述

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

对于较新的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的另一个第三方库。

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

文件>新模块…

下一个屏幕看起来很奇怪,就像你选择了一些小部件或东西,但保留它滚动并找到“导入JAR或. AAR包”

从打开的窗口中选择app,然后选择dependencies,然后按green plus button,选择module dependency,然后选择您导入的模块,然后按OK

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

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

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

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

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

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

我们需要添加依赖项为:

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

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

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

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

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

3)选择您的jar文件并单击“OK”

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

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

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

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

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

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

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

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

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

在项目右键单击

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

按照下面的屏幕截图:

1:

步骤1

2:

在此处输入图片描述

3:

在此处输入图片描述

你会看到这个:

在此处输入图片描述

步骤1:现在在你的#0下面,你应该看到#1,如果你没有看到它,然后创建它

步骤2:#0,你可能会得到一个提示#1,只需点击#2按钮。

第3步:现在您应该看到libs文件夹下的jar文件,右键单击jar文件并选择#0

第4步:现在添加了这个jar

在此处输入图片描述

Android Studio 2.1我遵循这条路,

转到应用程序->src->main->资产文件夹(如果不可用,请创建它)->放置您的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文件可以使用了。

我已经完成了上面的3步和它的工作魅力。

(我使用的是Android Studio 2.1.2)

在此处输入图片描述

步骤1

  • jar包名称(作为示例compile 'com.squareup.okhttp3:okhttp:3.3.1')添加到build.gradle(模块:应用程序)下的gradle构建脚本中。

在此处输入图片描述

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

在此处输入图片描述

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

在此处输入图片描述

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

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

希望这能有所帮助:)

androidStudio中添加外部库的简单步骤

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

在此处输入图片描述

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

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

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

阅读更多关于Gradle依赖管理

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

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

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

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

使用Android Studio 3+:

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

… myproject\app\libs\myfile.jar

然后从项目窗口的下拉列表中选择项目文件,右键单击项目,选择同步以在项目文件中查看文件。它会自动将依赖项添加到gradle文件(模块:应用程序)中。

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

这里有另一个解决方案:

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

在此处输入图片描述

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

在此处输入图片描述

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

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

在此处输入图片描述

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

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

打开您的java文件,并在那里添加导入语句:

import com.xxx.xxx;

以下是在静态编程语言DSL(build.gradle.kts)中执行此操作的各种方法。
我们假设库文件位于应用库目录中。

  • 方法1

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

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

    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")))
  • 方法4

    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 filesimplementation("ir.mahozad.android:pie-chart:0.7.0@aar")}

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

有关此信息的更多信息,请参阅Gradle文档

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