在编译特定的Android项目时,只在我的Windows机器上,我java.nio.BufferOverflowException从dex 获得了一个.使用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
Run Code Online (Sandbox Code Playgroud)
使用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.
Run Code Online (Sandbox Code Playgroud)
就像我说的,我的MacBook上没有这个问题,即使它们都升级到最新版本的Android Build工具:19.0.0.
Flo*_*low 230
无需将构建工具降级回18.1.1 1,此问题已通过构建工具19.0.1修复.
如果由于某种原因你不能使用19.0.1:
确保AndroidManifest.xml中的值在project.propertiesandroid:targetSdkVersion中匹配.如果这两个值不相同,则使用构建工具版本19.0.0构建将在BufferOverflowException中结束.资源target=android-<value>
这篇文章的评论也有一些迹象表明你需要至少达到19(android-19).如果您的目标<19,此解决方案也可以发表评论.
这是修复程序查找我的项目的方式.相关的AOSP问题是#61710.
1如果确实需要降级,则无需卸载构建工具19.0.0,只需安装18.1.1并添加sdk.buildtools=18.1.1到该local.properties文件即可.
mrr*_*rrk 50
通过添加额外的行,我能够构建我的问题项目:
sdk.build.tools=18.1.1
Run Code Online (Sandbox Code Playgroud)
...到我的project.properties文件,它存在于项目文件夹的根目录中.所有其他方法似乎都失败了.
| 归档时间: |
|
| 查看次数: |
105803 次 |
| 最近记录: |