2015-01-19 9 views
5

Mam duży projekt Android, w którym dostałem Nie można wykonać dex: ID metody nie w [0, 0xffff]: 65536 błąd; Wierzę, że niektórzy z was zdecydowanie przeszli przez ten problem wcześniej. Jest to błąd spowodowany zbyt wieloma metodami wymienionymi w aplikacji.Wdrażanie MultiDex powoduje kompilację na tak długi, a na końcu błąd sterty przestrzeni.

Szukałem różnych źródeł w Internecie i znalazłem this może być najlepszym rozwiązaniem.

i zrobiłem, co następuje:

  1. Dodany multiDexEnabled = true w bloku defaultConfig z build.gradle.
  2. Dodano następującą zależność:

    dependencies { 
        compile 'com.android.support:multidex:1.0.0' 
    } 
    
  3. Overrided następujący kod w mojej klasie App.

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

Teraz, błąd zniknął, ale mam nowy problem. Kiedy uruchomić aplikację, kompilator trwa dłużej niż 3 minuty do kompilacji i uruchamiania aplikacji, w końcu daje mi ten błąd:

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

Rozumiem ten błąd występuje ze względu na duże zużycie pamięci, ale nie wiem jak to rozwiązać. Używam Androida Studio 1.0.2 i Androida API 21.

Dzięki!

EDIT:

już sprawdzone How to fix “OutOfMemoryError: java heap space” while compiling MonoDroid App in MonoDevelop, ale ta nie obejmuje przyczynę problemu, a co więcej, nie używam Xamarin Studio.

EDIT2:

Dokładna objawem jest tak:
Kiedy skompilować kod, konsola Gradle pokazuje mi setki ostrzeżenia mówiąc „Ignorowanie InnerClasses atrybut anonimowej klasy wewnętrznej” (co innego Odpowiedzi na stackoverflow sugerują, że nie są to poważne ostrzeżenia), a następnie pokazują przez chwilę tylko migający kursor, a po około minucie daje mi to błąd.

+0

Nie pójdziesz .. Twoje pytanie jest ponownie .. –

+0

Dzięki .. Każdy pomysł o pytanie? – technophyle

+0

prawdopodobnie wykonaj następujące kroki, aby zwiększyć rozmiar sterty, http://stackoverflow.com/q/18723755/603744 i daj mi znać, jeśli to działa. –

Odpowiedz

9

Czy próbowałeś dodać dostosowanie rozmiaru sterty do pliku build.gradle? Na przykład ustawi to maksymalny rozmiar sterty dla dekompresji do 4 GB.

android { 
    ... 
    dexOptions { 
     javaMaxHeapSize "4g" 
    } 
} 
+0

Gdzie mam to umieścić? – technophyle

+0

W module Android build.gradle, a nie w projekcie build.gradle. Jest to częściowo udokumentowane: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-dex-options –

+0

To wygląda jak rozwiązanie. Mam pytanie. Czy ta długa kompilacja ma coś wspólnego z wydajnością pracy apk? – technophyle

-1

Spróbuj to w kompilacji Gradle

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' 
    } 
+0

Co to oznacza? –

Powiązane problemy