Android Studio - 导入外部库/ Jar

dan*_*c05 62 dependencies android intellij-idea gradle android-studio

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

示例1:JAR导入.

  1. 从Google下载Admobs SDK的最新副本.

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

  3. 在项目资源管理器中,右键单击新添加的library.jar,然后单击"Add as Library".

从技术上讲,此时一切正常,导入工作正常,布局编辑器显示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'.
Run Code Online (Sandbox Code Playgroud)

我试过运行gradlew compileDebug --stacktrace,问题似乎是尽管能够在代码和设计编辑器中成功导入类,但在编译时,它无法解析导入.这是日志的相关部分:( 完整的堆栈跟踪)

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
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

值得注意的是,如果不尝试添加库/ JAR,项目编译就可以了.

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

dependencies {
compile files('libs/android-support-v4.jar', 'libs/GoogleAdMobAdsSdk-6.4.1.jar')
}
Run Code Online (Sandbox Code Playgroud)

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

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.ads.AdView" on path: /data/app/com.foo.test-1.apk
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

dan*_*c05 99

所以,

要使用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')` (17认同)
  • 而不是手动编辑build.gradle文件,您只需右键单击项目资源管理器中的jar并选择"Add as Library" (16认同)
  • 这是什么样的工作流程?:) 谢谢! (8认同)

小智 31

您不需要关闭项目并转到命令行来调用grade:clean.转到Build-> Rebuild Project

  • gradlew是位于项目根目录中的可执行文件,您可能不得不编写`./gradlew`而不是简单的`gradlew`. (11认同)

akn*_*nay 16

简单的方法,它适合我.使用Android Studio 0.8.2.

  1. 在libs下拖动jar文件.
  2. 按"与Gradle文件同步项目"按钮.

在此输入图像描述


Oda*_*aym 13

"简单的解决方案在这里"

1. 在app目录下创建一个名为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..

和平!


j2e*_*nue 10

这是我如何专门为admob sdk jar文件:

  1. jar文件拖到libs文件夹中.
  2. 右键单击该jar文件并选择Add Library, 现在jar文件是一个库,我们可以将它添加到编译路径中
  3. 打开build.gradle文件(注意build.gradle至少有两个文件,不要使用根文件使用项目范围中的文件).
  4. 找到依赖项部分(对我来说,我正在尝试使用admob -GoogleAdMobAdsSdk jar文件),例如

    dependencies {
       compile files('libs/android-support-v4.jar','libs/GoogleAdMobAdsSdk-6.3.1.jar')
    }
    
    Run Code Online (Sandbox Code Playgroud)
  5. 最后进入settings.gradle并确保它看起来像这样:

    include ':yourproject', ':yourproject:libs:GoogleAdMobAdsSdk-6.3.1'
    
    Run Code Online (Sandbox Code Playgroud)
  6. 最后,转到Build - > Rebuild Project

  • Android Studio 0.2.5中没有"添加库"菜单项 (3认同)