0

我一整天都在尝试解决这个问题,这可能只是一些荒谬的事情。我正在运行 Android Studio 0.2.5。我需要一个库来处理我的应用程序(GrepCode 内部的东西),所以我去下载了 jar 文件和它所依赖的 jar 文件。我按照其他 SO 答案中关于如何将这些依赖项包含到我的项目中的说明进行操作,现在出现错误。

1)我首先将罐子添加到我在模块中创建的“libs”文件夹中

2)我右键单击并点击添加到库...,命名为库,尝试在不同级别添加它,但仍然出现此错误。

3)我进入设置的模块部分并确保在依赖项选项卡下选择了库。

4)我在项目目录中运行 gradlew clean 。

现在,如果我不在这里执行第 5 步,我只会收到一条错误消息,说我尝试导入的包不存在,即使在输入导入语句时 IDE 没有显示错误或库中的类。因此,我尝试了第 5 步。根据所有指南,到目前为止我所做的应该是有效的。

5) 在我的 build.gradle 中,依赖项没有显示出来,所以我输入了它们,现在这就是我的依赖项部分的样子。如果我不输入这些,我只会收到一个错误,说当我尝试导入它们时这些包不存在。

dependencies {
compile 'com.android.support:support-v4:13.0.0'
compile files('libs/openjdk-6-b14.jar')
compile files('libs/junit-3.8.1.jar')
compile files('libs/logkit-1.0.1.jar')
compile files('libs/servlet-api-2.3.jar')
compile files('libs/httpcore-4.0.1.jar')
compile files('libs/commons-codec-1.3.jar')
compile files('libs/commons-logging.jar')
compile files('libs/httpclient-4.0.1.jar')
compile files('libs/json-20080701.jar')
compile files('libs/opengl-api-gl1.1-android-2.1_r1.jar')
compile files('libs/xpp3-1.1.4c.jar')
compile files('libs/android-4.2.2_r1.jar')
}

在此之后,我在消息框中收到错误消息“Gradle:任务':SendPicTest:dexDebug'的执行失败。”

在idea.log中我发现了这个错误:“java.lang.OutOfMemoryError: GC overhead limit exceeded”

所以,我认为第 5 步是不必要的,但我不确定。我尝试了许多不同的方法来导入这些库,但没有任何效果......我完全迷路了......有人有什么想法吗?谢谢!

4

1 回答 1

0

编辑

查看您的依赖项列表后,问题似乎很明显。我建议你尝试:

1)了解您为什么选择包含这些库中的每一个。

2)了解android架构和构建过程。(也许读这个

这里有几点说明:

  • 必须删除openjdk-6-b14.jar 。您正在开发一个 Android 应用程序,因此它将针对 Android SDK 运行。Android SDK 已经定义了 openjdk 的大部分类(所以在对这个 jar进行dexing时会发生冲突)。此外,这个 jar 中的许多类根本无法进行 dexable(如 javax.swing.*),因为它们使用了不受支持的功能并且在 Android 上没有意义。

  • android-4.2.2_r1.jar是一个stub jar(看代码:所有方法都抛出异常)。该工件仅可用于使用标准javac 编译器构建您的 android 代码(并因此生成 *.class 文件)。之后,你所有的 *.class 将被android compiler dexed(即转换成 *.dex 文件)。在运行时,将使用真正的 android-api 实现(而不是这个工件)。

  • servlet-api:在 android-app 中需要这个是非常少见的。它只定义了一个 API(没有实现)。该实现通常由标准 J2EE 开发中的应用服务器(tomcat、jboss、...)提供。Android-sdk 不提供此 API 的实现。

  • junit:通常是具有范围测试的依赖项。

  • httpcore(可能还有 httpclient):android 上的一个常见错误。该库的旧实现包含在 android-sdk 中。如果你保留它,你将在构建你的应用程序时遇到一个顶级异常(这个异常意味着你试图从 android-sdk 覆盖一个类:这是不可能的)

  • opengl-api-gl1.1-android-2.1_r1.jar:我不知道它到底包含什么,但我想我写的关于 android-4.2.2_r1.jar 的评论同样适用于这里。

结束编辑

所以,我认为第 5 步是不必要的

不需要第 5 步!这build.gradle是定义依赖项的地方...所以如果 AndroidStudio 不为您更新此文件:手动执行。

之后,您可能需要从 gradle 文件重新导入项目(在窗口右侧边缘的gradle 视图顶部找到重新导入按钮)

关于日志文件中的错误:

您可以从此文件中增加 AndroidStudio 内存设置:

<ANDROID_STUDIO_INSTALL_DIR>/bin/studio.exe.vmoptions

或者

<ANDROID_STUDIO_INSTALL_DIR>/bin/studio64.exe.vmoptions

如果您运行 64 位版本。

我建议您尝试更改设置以避免“java.lang.OutOfMemoryError:GC 开销限制超出”

这个错误意味着 GC 运行时间很长(98% 的时间)并且只有不到 2% 的堆被释放。所以你可以尝试增加堆(并重启AndroidStudio):

-Xmx1024m

另一种选择是通过在 *.vmoptions 文件中添加以下行来禁用此检查:

-XX:-UseGCOverheadLimit

(注意,因为它不是标准的 JVM 参数:你的 JVM 可能不支持它)无论如何我不推荐这个选项,因为 GC 会运行一段时间,结果很差,你的 IDE 会非常非常无响应.

我还建议您今天阅读有关 AndroidStudio 使用情况的文章。

于 2013-08-28T14:58:26.750 回答