Android Studio - 导入外部库/Jar

Posted

技术标签:

【中文标题】Android Studio - 导入外部库/Jar【英文标题】:Android Studio - Importing external Library/Jar 【发布时间】:2013-05-22 17:03:19 【问题描述】:

我最近下载了 android Studio 来开发 Android 应用程序(我来自 Eclipse),但在我自己的项目中使用外部库和/或外部 JAR 文件时遇到了问题。 注意:以下测试是在 Android Studio 中从头开始创建的应用程序项目上进行的。

示例 1:JAR 导入。

    从 Google 下载 Admobs SDK 的新副本。

    将库 jar GoogleAdMobAdsSdk-6.4.1.jar 复制到项目的 /libs/ 文件夹中。

    在项目资源管理器中,右键单击新添加的 library.jar,然后单击“添加为库”。

目前一切正常,导入工作正常,布局编辑器显示AdView 小部件的预览以及所有这些。 唯一的问题是编译不成功。

从控制台登录:

Gradle: 
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':APITests:compilePaidDebug'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

Could not execute build using Gradle distribution 'http://services.gradle.org/distributions/gradle-1.6-bin.zip'.

我尝试运行gradlew compileDebug --stacktrace,问题似乎是尽管能够在代码和设计编辑器中成功导入类,但在编译时,它无法解析导入。以下是日志的相关部分:(full stacktrace here)

java:6: error: package com.google.ads does not exist
import com.google.ads.AdRequest;    
java:7: error: package com.google.ads does not exist
import com.google.ads.AdView;
java:11: error: cannot find symbol
AdView mAdView;
symbol:   class AdView
location: class MainActivity
java:22: error: cannot find symbol
mAdView = (AdView)this.findViewById(R.id.adView);
symbol:   class AdView
location: class MainActivity
java:23: error: cannot find symbol
mAdView.loadAd(new AdRequest());
symbol:   class AdRequest
location: class MainActivity
5 errors
:Test:compileDebug FAILED

但同样,导入在编辑器中运行良好,并且依赖项存在:

还值得注意的是,不尝试添加库/JAR,项目编译得很好。

然后我尝试编辑 build.gradle 文件以包含新的库,如下所示:

dependencies 
compile files('libs/android-support-v4.jar', 'libs/GoogleAdMobAdsSdk-6.4.1.jar')

这一次,它确实编译成功了,但是应用程序现在强制关闭,显然,它无法从应用程序包中的 lib 中找到特定的类。

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.ads.AdView" on path: /data/app/com.foo.test-1.apk

有什么想法吗?

【问题讨论】:

您是否尝试过从命令行使用 Gradle 进行编译(请参阅this 答案)? 检查更新的问题 我对 Gson 库也有类似的问题,这个:***.com/questions/16608135/… 解决我的问题,更重要的是 clean 步骤 【参考方案1】:

在 Android Studio(我的是 2.3.1)中转到文件 - 项目结构:

【讨论】:

【参考方案2】:

“简单的解决方案就在这里”

1 .在应用程序目录下创建一个名为libs的文件夹,以便在项目中的任何目录下..

2 .复制粘贴你的库到libs文件夹

3.You simply copy the JAR to your libs/ directory and then from inside Android Studio, right click the Jar that shows up under libs/ > Add As Library..

和平!

【讨论】:

这对我有用 :) 迄今为止最简单的方法。 这是一个很棒的解决方案 :) 在intellij idea中作为项目依赖自动添加【参考方案3】:

检查库版本要求。该库可能正在尝试从更高的 Android 版本调用方法。尝试添加应用程序兼容性库。

当所有其他方法都失败时,请尝试从 Gradle 构建切换到 Eclipse 构建。

删除文件夹并将其重组为 eclipse 样式,并删除除代码之外的所有内容。然后用你的库重新加载项目。

一旦运行,如果你愿意,可以返回 Gradle。

【讨论】:

【参考方案4】:

我目前使用的是 Android Studio 1.4。

对于导入和添加库,我使用了以下流程 ->

1. Press **Alt+Ctr+Shift+S** or Go to **File --> Project** Structure to open up the Project Structure Dialog Box.

2. Click on **Modules** to which you want to link the JAR to and Go to the Dependency Tab.

3. Click on "**+**" Button to pop up Choose Library Dependency.

4. Search/Select the dependency and rebuild the project.

我使用上述方法导入支持 v4 和 v13 库。

我希望这会有所帮助并清理流程。

【讨论】:

【参考方案5】:

我遇到了无法在 Android Studio 的 libs 文件夹中加载 jar 文件的问题。 如果您在 libs 文件夹中添加了 JAR 文件,则只需打开 build.gradle 文件并保存它,无需编辑任何其他内容。如果你添加了这一行

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

保存并清理项目。在下一次构建时,Android Studio 将加载 JAR 文件。

希望这会有所帮助。

【讨论】:

【参考方案6】:

我使用 android studio 0.8.6 并在项目中导入外部库,将该库粘贴到 libs 文件夹中并在 build.gradle 中写入该库的路径,就像这样 编译文件('libs/google-play-services.jar')

【讨论】:

【参考方案7】:

简单的方法,它对我有用。使用 Android Studio 0.8.2。

    将 jar 文件拖到 libs 下。 按“与 Gradle 文件同步项目”按钮。

【讨论】:

【参考方案8】:

我使用的是 Android Studio 0.5.2。因此,如果您的版本低于我的版本,我的答案可能不适合您。

向项目添加新 Jar 的 3 种方法:

    文件-->项目结构下的菜单 只需按“F4” 在项目导航下,右键单击任何 java 库并显示上下文菜单,然后单击“打开库设置

将弹出一个项目结构窗口。

在左侧列中单击“库”,然后查看右侧窗格中的加号“+”并单击它,然后输入新库的路径。

确保新库位于 'project\libs\' 文件夹下,否则在保存项目源代码时可能会收到损坏的链接。

【讨论】:

【参考方案9】:

这是我专门针对 admob sdk jar 文件的方法:

    将您的 jar 文件拖到 libs 文件夹中。 右键单击jar 文件并选择添加库 现在 jar 文件是一个库,让我们将它添加到编译路径中 打开build.gradle 文件(注意至少有两个build.gradle 文件,不要使用根目录,使用项目范围内的那个)。

    找到依赖项部分(对我来说,我正在尝试使用 admob -GoogleAdMobAdsSdk jar 文件) 例如

    dependencies 
       compile files('libs/android-support-v4.jar','libs/GoogleAdMobAdsSdk-6.3.1.jar')
    
    

    最后进入settings.gradle 并确保它看起来像这样:

    include ':yourproject', ':yourproject:libs:GoogleAdMobAdsSdk-6.3.1'
    
    最后,转到 Build -> Rebuild Project

【讨论】:

Android Studio 0.2.5 中没有添加库菜单项 这里为什么需要settings.gradle?我认为不需要在 settings.gradle 中指定 jars!【参考方案10】:

您无需关闭项目并转到命令行调用grade:clean。 转到构建-> 重建项目

【讨论】:

我知道 eh.. 我在 mac 上的命令行甚至无法识别 gradlew,并且发出 brew install gradle 让我等了一个小时才能安装它.. 向你大个子致敬 gradlew 是位于项目根目录中的可执行文件,您可能不得不编写 ./gradlew 而不是简单的 gradlew【参考方案11】:

所以,

使用 Android Studio 0.1.1 将 JAR 成功导入项目的步骤:

下载 library.jar 文件并将其复制到应用程序项目内的 /libs/ 文件夹中。 打开 build.gradle 文件并编辑您的依赖项以包含新的 .jar 文件:

compile files('libs/android-support-v4.jar', 'libs/GoogleAdMobAdsSdk-6.4.1.jar')

文件 -> 关闭项目 在项目的根位置打开命令提示符,即'C:\Users\Username\AndroidStudioProjects\MyApplicationProject\' 在命令提示符下,输入gradlew clean,等待完成。 在 Android Studio 中重新打开您的应用程序项目。 测试运行您的应用程序,它应该可以成功运行。

【讨论】:

仅供参考,fileTree 可用于导入目录中的所有 JAR。例如:compile fileTree(dir: 'libs', include: '*.jar') 无需手动编辑 build.gradle 文件,您只需在项目资源管理器中右键单击 jar 并选择“添加为库” 关于关闭AS,从命令行清理和重新打开AS的建议解决了我所有的编译问题! 关闭 AS 并运行 gradlew clean 为我做到了。你会认为项目内部的同步 gradle 会有。【参考方案12】:

你从 Eclipse 导出项目,然后从 Android Studio 导入项目,这应该可以解决你的问题,打开一个 Eclipse 项目而不从 Android Studio 导入它可能会导致问题,看看: (请原谅我的语言,我说西班牙语。) http://developer.android.com/intl/es/sdk/installing/migrate.html

【讨论】:

我正在测试的两个项目不是从 Eclipse 导出的,它们都是使用 Android Studio 从头开始​​创建的。

以上是关于Android Studio - 导入外部库/Jar的主要内容,如果未能解决你的问题,请参考以下文章

在哪里可以找到android studio的库依赖项

Android Studio 导入外部lib文件

android studio怎样导入第三方库 步骤

android studio怎么导入maven库

如何在 android studio 中编辑依赖项/外部库? [复制]

使用错误 Java 源的 Android Studio 外部库