DexException: 65536 yeni indeksi jumbo olmayan bir talimatla birleştirilemez


84

Bilinmeyen bir nedenden dolayı uygulamam aniden Android Studio'dan oluşturulmayacak.

Almaya devam ediyorum

> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /home/martynas/android-sdk/build-tools/19.1.0/dx --dex --num-threads=4 --output
...
...
...
Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Cannot merge new index 65536 into a non-jumbo instruction!

Aynı uygulama komut satırından başarıyla oluşturulurken. Yöntem referanslarının sayısını kontrol ettim ve korkunç 64k'nin çok altında.

Şu anda AS 0.8.11 kullanıyorum.

Yanıtlar:


57

Bu satırı projenize eklemeye çalışın. Özellikler

dex.force.jumbo = true

Bir dex dosyalarındaki dizeler için sınırı artıran. Ve projeniz muhtemelen derlenecek.

Not: Ayrıca jumbo setle, yalnızca tek bir dex'teki yöntemler için başka bir 64K sınırı vardır. Gelecekte bu sınırı alırsanız, bazı bağımlılıkları kaldırmanız gerekecektir.

Güncelleme - Google Play Hizmetleri 6.5 (12-08-14)

6.5 sürümüyle Google nihayet Google Play Hizmetlerini ayrıştırdı. Bundan böyle, API'leri seçilerek yürütülebilir dosyanıza derlemeniz mümkün olacak.

Misal :

compile 'com.google.android.gms:play-services-maps:6.5.+'
compile 'com.google.android.gms:play-services-ads:6.5.+'

Diğer tüm ayrı Google Play Hizmetleri API'leri için d.android.com adresindeki bu sayfayı kontrol edin .

Güncelleme (21-04-2015): https://developer.android.com/tools/building/multidex.html


11
project.properties
— Öğesine

1
Her iki çözümü de yaptım: dex.force.jumbo özelliği ve dexOptions ekledim ama yine de aynı hatayı alıyorum. Başka seçenek?
— Juan Saravia


Teşekkürler @HareshChhelana. Nedense çalışmaya başladı .. ama gerçekten özel bir şey yapmadım. Projeyi bu seçenekler olmadan derleyen bazı iş arkadaşlarım var, ama şimdi benim için çalışıyor. Teşekkürler!
— Juan Saravia

1
Google Play Hizmetlerinin tamamını derlemek yerine, 65K dex sınırının altında kalmak için 'temel' paketi kullanmanın yararlı olduğunu buldum:compile 'com.google.android.gms:play-services-base:7.3.0'
— kip2

245

Build.gradle içinde jumboMode özelliğini ayarlayın:

android {
    ...
    dexOptions {
        jumboMode true
    }

}

Bunu da yararlı buldum: Pakete göre dex yöntemi sayısını gösterme .


12
Teşekkürler! Benim için de çalışıyor. Peki bu "jumboMode" ne anlama geliyor?
— yital9

3
@ Burada jumbo modu hakkında daha fazla bilgi edinebilirsiniz yital9: stackoverflow.com/a/30517283/4034572
— Albert Vila Calvo

lütfen bu engellemenin nedenini açıklayın
— eC Droid

Proguard nedeniyle sürüm yapısı iyi gittiğinden bunu tek başına hata ayıklama derleme türünü ekledim. Bu değişiklikten sonra hata ayıklama yapısı iyi gitti. Bu iyi mi?
— garnet

1
Bu benim için çalışıyor. Değiştirilecek build.gradle'ın com.android.dex.DexException'ı atan modül olması gerektiğini unutmayın.
— Francis Bacon

54

Bu benim için çalışıyor. Alıyordumcom.android.dex.DexIndexOverflowException: Cannot merge new index 66636 into a non-jumbo instruction!

android {
    ...
    dexOptions {
        jumboMode true
    }
}

Bu işe yaramazsa, dex'te farklı bir sorun olan yöntem referans sınırına ulaşmış olabilirsiniz. Multidex veya proGuard kullanmanız gerekir.


Benim için çalışıyor. Teşekkürler!!! ama 'jumboMode' nedir? Lütfen bana açıklar mısın? @Sayooj
— DG

13

Bu, birleştirilmekte olan dex dosyalarının 65536'dan fazla dizeye sahip olması durumunda birleşme hatasıdır. Yeni dizin bir const-string talimatına sığamaz ve dex birleşmesi, farklı boyutlarda olan talimatların değiştirilmesini desteklemez, bu nedenle bir const-string / jumbo talimatına genişletilemez. jb-mr1 yeni bir seçenek ekleyerek: --force-jumbo.Bu hata "dex.force.jumbo=true"project.properties dosyasına eklenerek düzeltilebilir .


1
@DeepakSharma jumboMode'u etkinleştirdikten sonra projenizi temizlemelisiniz
— Lilo

-1

En son Android Studio ve Android Studio derleyici ayarlarında "jumbo zorla" seçeneği işaretlendiğinde, bu sorun ortadan kalkar.


3
Mümkünse cevabınıza bazı ayrıntılar ekleyin, lütfen.
— shA.t
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.