特定の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 Buildツールの最新バージョンにアップグレードされているにもかかわらず、この問題は発生しないのです。19.0.0.
ビルドツールを18.1.1 1< / sup>にダウングレードする必要はありません。この問題はビルドツール19.0.1で修正されています。。
何らかの理由で19.0.1を使用できない場合は、次のようにします。
AndroidManifest.xml の android:targetSdkVersion
の値が、 project.properties の target = android-< value>
と一致することを確認してください。 これら2つの値が同じでない場合、ビルドツールバージョン19.0.0での構築はBufferOverflowExceptionで終了します。 ソース< / sup>
この投稿のコメントから、少なくとも19(android-19)をターゲットにする必要があるという指摘もあります。 ターゲットが<の場合にもこのソリューションが機能する場合は、コメントを残してください。 19。
これが修正の外観です私のプロジェクト。 [関連するAOSPの問題は#61710です。][4]。
1本当にダウングレードする必要がある場合は、ビルドツール19.0.0をアンインストールする必要はありません。18.1.1をインストールして、 sdk.buildtools = 18.1.1
を local.properties
ファイルに追加します。< / sup>。
[4]:https://code.google.com/p/android/issues/detail?id = 61710。
新しいSDKのインストール後、プロジェクトファイルの下に新しいフォルダー「Android Dependencies」があります。 右クリックしてビルドパスから削除すると、プロジェクトを再構築できます。
私もRevision 19にアップデートした後、同じ問題が発生しました。ただ、ADT、https://dl-ssl.google.com/android/eclipse/ のアップデートを忘れないでください。この後、最新リビジョンでプロジェクトを構築することができました。
java.nio.BufferOverflowException from dex error 。 つまり、そのレベルのサポートAPI がないため、ビルドが失敗します。これを修正する方法はいくつかあります。
マニフェストファイルのuses-sdk android:minSdkVersion = "4"およびandroid:targetSdkVersion = "14"を確認してください。
以下のいずれかが問題を修正します:-。
-必要なAPI レベルをダウンロードして(時間がかかる場合があります)、アプリケーションを再度実行します。 -クイックダーティフィックスは、 project.properties でプロジェクトターゲットを変更します。 新しいターゲットターゲット= Android-4 に。 -すばやくクリーンフィックスし、マニフェストの SdkVersion とクリーンを変更します。 変更をプロジェクトに追加するプロジェクト。プロパティ(私のお気に入り)。