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的主要内容,如果未能解决你的问题,请参考以下文章