5

Unable to execute dex: method ID not in [0, 0xffff]: 65536エラーが発生した大きな Android プロジェクトがあります。皆さんの中には、以前にこの問題を確実に経験したことがある人もいると思います。アプリで参照されているメソッドが多すぎるため、これはエラーです。

私はオンラインでさまざまな情報源を探しましたが、これが最良の解決策である可能性があることがわかりまし.

そして、私は次のことをしました:

  1. build.gradlemultiDexEnabled = truedefaultConfigブロックに追加されました。
  2. 次の依存関係を追加しました。

    dependencies {
      compile 'com.android.support:multidex:1.0.0'
    }
    
  3. App クラス内の次のコードをオーバーライドしました。

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
    

これでエラーはなくなりましたが、新しい問題が発生しました。アプリを実行すると、コンパイラはアプリのコンパイルと実行に 3 分以上かかり、最終的に次のエラーが表示されます。

UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: Java heap space

メモリ使用量が多いためにこのエラーが発生することは理解していますが、解決方法がわかりません。Android Studio 1.0.2 と Android API 21 を使用しています。

ありがとう!

編集

MonoDevelop で MonoDroid アプリをコンパイルする際に「OutOfMemoryError: java heap space」を修正する方法を既に確認しましたが、これは問題の原因をカバーしていません。また、私は Xamarin Studio を使用していません。

EDIT2

正確な症状は次のとおりです。
コードをコンパイルすると、gradle コンソールに「匿名内部クラスの InnerClasses 属性を無視しています」という何百もの警告が表示されます (他のいくつかのスタックオーバーフローの回答では、深刻な警告ではないことが示唆されています)。カーソルがしばらく点滅し、約1分後にエラーが表示されます。

4

2 に答える 2

12

ファイルにヒープ サイズ調整を追加してみましたbuild.gradleか? たとえば、これにより、dexing の最大ヒープ サイズが 4GB に設定されます。

android {
    ...
    dexOptions {
        javaMaxHeapSize "4g"
    }
}
于 2015-01-19T20:21:52.007 に答える
-1

ビルドグラドルでこれを試してください

android {
compileSdkVersion 21
buildToolsVersion "21.1.1"

defaultConfig {
           minSdkVersion 14 //lower than 14 doesn't support multidex
           targetSdkVersion 21
// Enabling multidex support.
           multiDexEnabled true
    }
 }
dependencies {
   compile 'com.android.support:multidex:1.0.0'
  }
于 2015-01-20T10:37:14.667 に答える