174

特定の Android プロジェクトをコンパイルすると、私の Windows マシンでのみ、java.nio.BufferOverflowExceptiondex から during が発生します。この問題は、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 にアップグレードされています。

4

19 に答える 19

57

ここでも同じ問題。ビルド ツール 18.1.1 に戻し、Eclipse を再起動して修正しました。

于 2013-11-01T14:46:10.203 に答える
50

次の行を追加することで、問題のプロジェクトをビルドすることができました。

sdk.build.tools=18.1.1

...プロジェクトフォルダーのルートにある私のproject.propertiesファイルに。他のすべてのアプローチは私には失敗したようです。

于 2013-11-18T14:01:25.617 に答える
7

新しい SDK をインストールすると、プロジェクト ファイルの下に新しいフォルダー "Android Dependencies" が作成されます。右クリックしてビルド パスから削除すると、再びプロジェクトをビルドできるようになります。

于 2013-11-12T07:38:09.720 に答える
7

プロジェクトを右クリック>>プロパティ>> Android >> APIレベル18が機能しました。しかし、それを行う前に、プロジェクト >> Android Tools >> Add Support Libraryを右クリックし、 Eclipseを再起動しました。選択したAPIレベルをいじる必要があるかもしれません。

于 2013-11-10T13:57:08.733 に答える
4

リビジョン 19 に更新した後も同じ問題が発生しました。ADT を更新することを忘れないでください https://dl-ssl.google.com/android/eclipse/。この後、最新リビジョンでプロジェクトをビルドすることができました。

于 2013-11-04T12:15:36.793 に答える
3

Android Studio 0.4.0 と Gradle 1.9 にアップグレードした後、ここにある他のソリューションはどれもうまくいきませんでした。

Build Tools 19.0.1 をダウンロードし、build.gradle ファイルの次の行を更新することで問題を解決しました。

buildToolsVersion '19.0.0'

buildToolsVersion '19.0.1'
于 2013-12-20T19:32:21.510 に答える
3

サポート ライブラリをダウンロードしたり、ビルド ツールを 18.1.1 に戻したりせずに、この問題を修正しました。 API レベルを 16+ に変更しただけで、問題は解消されました。それが役立つことを願っています。

于 2013-12-06T08:31:47.807 に答える
2

ターゲット バージョンと Ant の両方で同じ問題が発生しました19project.propertiesAndroidManifest.xml

次の方法で修正しました。

  • アンインストール済みAndroid SDK Build-Tools 19.0.1
  • インストール済みAndroid SDK Build-Tools 19.0.2

@Al-Kathiri-Khalid は的を射ていると思います。この問題は、ビルド ツールで API レベルがサポートされていないことが原因です。

于 2014-03-02T17:10:19.877 に答える
1

この問題を解決しました。プロジェクト プロパティ ファイルで次の変更を行うだけです。

target=android-18
sdk.build.tools=18.1.1

そしてマニフェストファイルで:

uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="18"
于 2013-12-24T08:54:38.030 に答える
1

私のプロジェクトはサポート ライブラリを使用していませんでしたが、同じ問題がありました。libs/android-support-v4.jar をプロジェクトに追加すると、ビルド ツールを v19 から戻す必要なく、問題を回避できました。

于 2013-11-04T20:01:12.453 に答える
0

プロジェクトにライブラリファイルを追加します..プロジェクト->右クリック->プロパティ->android->ライブラリ->追加をクリックしてライブラリプロジェクトを選択し、適用してOK..次に、プロジェクトを消去して再度実行します..日食を再開したい..

また、Android SDK ビルド ツールを更新する必要がある場合もあります。

于 2013-11-13T11:29:05.877 に答える
0

以前の Android SDK とEclipseを削除しました。ADTバンドルをインストールしましたが、動作します...

これにより、 API 19を取得した後に発生した Dex での BufferOverflow の問題が修正されました。以前は、アドオン パッケージとしてインストールされた Android SDK で Eclipse を使用していました。

于 2013-11-06T10:32:21.397 に答える