Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android dex在构建时提供BufferOverflowException_Android_Dex - Fatal编程技术网

Android dex在构建时提供BufferOverflowException

Android dex在构建时提供BufferOverflowException,android,dex,Android,Dex,当编译一个特定的Android项目时,并且仅在我的Windows机器上,我从dex中得到一个java.nio.BufferOverflowException。在使用Eclipse和Ant时都会出现问题 使用Ant时的输出为: ... [dex] Pre-Dexing C:\MyProject\libs\android-support-v4.jar -> android-support-v4-5f5341d3c1b10a79d7d93f9c1e64421e.jar [dex] Con

当编译一个特定的Android项目时,并且仅在我的Windows机器上,我从dex中得到一个
java.nio.BufferOverflowException
。在使用Eclipse和Ant时都会出现问题

使用Ant时的输出为:

...
  [dex] Pre-Dexing C:\MyProject\libs\android-support-v4.jar -> android-support-v4-5f5341d3c1b10a79d7d93f9c1e64421e.jar
  [dex] Converting compiled files and external libraries into C:\MyProject\bin\classes.dex...
   [dx]
   [dx] UNEXPECTED TOP-LEVEL EXCEPTION:
   [dx] java.nio.BufferOverflowException
   [dx]     at java.nio.Buffer.nextPutIndex(Buffer.java:499)
   [dx]     at java.nio.HeapByteBuffer.putShort(HeapByteBuffer.java:296)
   [dx]     at com.android.dex.Dex$Section.writeShort(Dex.java:818)
   [dx]     at com.android.dex.Dex$Section.writeTypeList(Dex.java:870)
   [dx]     at com.android.dx.merge.DexMerger$3.write(DexMerger.java:437)
   [dx]     at com.android.dx.merge.DexMerger$3.write(DexMerger.java:423)
   [dx]     at com.android.dx.merge.DexMerger$IdMerger.mergeUnsorted(DexMerger.java:317)
   [dx]     at com.android.dx.merge.DexMerger.mergeTypeLists(DexMerger.java:423)
   [dx]     at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:163)
   [dx]     at com.android.dx.merge.DexMerger.merge(DexMerger.java:187)
   [dx]     at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
   [dx]     at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
   [dx]     at com.android.dx.command.dexer.Main.run(Main.java:230)
   [dx]     at com.android.dx.command.dexer.Main.main(Main.java:199)
   [dx]     at com.android.dx.command.Main.main(Main.java:103)

BUILD FAILED
C:\Users\Jaap\android-sdks\tools\ant\build.xml:892: The following error occurred while executing this line:
C:\Users\Jaap\android-sdks\tools\ant\build.xml:894: The following error occurred while executing this line:
C:\Users\Jaap\android-sdks\tools\ant\build.xml:906: The following error occurred while executing this line:
C:\Users\Jaap\android-sdks\tools\ant\build.xml:284: null returned: 2
使用Eclipse时,消息较短但类似:

[2013-11-01 14:29:44] APK file is not created for Project: 
[2013-11-01 14:29:46 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
[2013-11-01 14:29:46 - MyProject] Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.

正如我所说,我的MacBook没有这个问题,尽管它们都升级到了最新版本的Android构建工具19.0.0。

这里也有同样的问题。恢复到build tools 18.1.1,重新启动Eclipse并修复了它。

更新到修订版19后,我也遇到了同样的问题。只是别忘了更新ADT。在此之后,我能够使用最新版本构建项目。

我也遇到了同样的问题,尽管我的项目没有使用支持库。将libs/android-support-v4.jar添加到项目中解决了这个问题,而无需将构建工具从v19还原回来。

试试下面所说的:

右键单击您的
项目
→ <代码>android工具→ <代码>android支持库


希望这有帮助:)

我删除了以前的Android SDK和。我安装了包,它的工作


这修复了在我得到19后开始的Dex上的缓冲区溢出问题。我以前使用Eclipse,并将Android SDK作为附加包安装。

右键单击project>>Properties>>Android>>API Level 18适合我。但在此之前,我右键单击project>>Android工具>>添加支持库并重新启动。您可能需要使用所选级别。

安装新SDK后,在您的项目文件下有一个新文件夹“Android Dependencies”。如果右键单击并将其从生成路径中删除,则可以再次生成项目。

在project中添加库文件。。 项目->右键单击->属性->android->库->单击添加并选择库项目,然后给出应用和确定。。 然后,清理项目并再次运行。。如果要重新启动eclipse


而且,有时还需要更新Android SDK构建工具。

无需将构建工具降级回18.1.11,这个问题是。

如果出于某种原因无法使用19.0.1,则:

确保AndroidManifest.xml中的
android:targetSdkVersion
的值与project.properties中的
target=android-
匹配。如果这两个值不相同,则使用构建工具版本19.0.0构建将以BufferOverflowException结束

从这篇文章的评论中也可以看出,你至少需要瞄准19个(android-19)。如果您的目标是<19,请留下评论,如果此解决方案也有效

为了我的项目


1如果确实需要降级,则无需卸载build tools 19.0.0,只需安装18.1.1并将
sdk.buildtools=18.1.1
添加到
local.properties
文件。

我可以通过添加这一额外行来生成我的问题项目:

sdk.build.tools=18.1.1

…到我的project.properties文件,该文件位于项目文件夹的根目录中。所有其他方法对我来说似乎都失败了。

Update

右键单击您的项目>android工具>android支持库


清理您的项目并尝试构建。

我修复了此问题,无需下载支持库或将构建工具还原到18.1.1。
我只是将API级别更改为16+,问题就消失了。希望能有所帮助。

对我有效的是:
我从项目的根目录打开了project.properties文件,并将
target=android-8
更改为
target=android-17
对于那些面临IntelliJ IDEA 13问题的人,卸载构建工具19。

java.nio.BufferOverflowException在from-dex错误期间 这意味着您没有该级别的支持API,因此构建失败,有多种方法可以解决此问题

检查清单文件是否使用sdk android:minSdkVersion=“4”和android:targetSdkVersion=“14”

以下任何一项都可以解决此问题:-

  • 下载所需的API级别(这可能需要时间),然后再次运行应用程序
  • 快速修复在Project.properties中更改项目目标 到您的新目标target=android-4
  • 快速清理修复,更改清单中的SdkVersion,然后清理 要将更改添加到project.properties(我的最爱)中的项目

升级到Android Studio 0.4.0和Gradle 1.9后,这里的其他解决方案都不适合我

我通过下载Build Tools 19.0.1并更新Build.gradle文件中的以下行来解决此问题:

buildToolsVersion '19.0.0'


我解决了这个问题。只需在项目属性文件中进行以下更改:

target=android-18
sdk.build.tools=18.1.1
在清单文件中:

uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="18"

Ant的
project.properties
AndroidManifest.xml
的目标版本
19
存在相同的问题

修正方法:

  • 已卸载的Android SDK构建工具19.0.1
  • 已安装的Android SDK构建工具19.0.2

我认为@Al-Kathiri Khalid是正确的。出现此问题的唯一原因是构建工具中缺少对API级别的支持。

右键单击Project>>Properties>>Android并选择API级别大于15


右键单击project并选择project>>Properties>>Android>>Add

是否使用库,将google-play-services_lib添加到您的项目中?检查他们的setup@SherifelKhatib,只有支持库和Google Analytics v2因为似乎还没有人对此提出过问题,我已经在上提出了一个问题:尝试删除所有android sdk、eclipse和code.s
uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="18"