2014-12-09 14 views
27

" hata kodu alıyorum Android Studio’yu en son sürüme güncelledim ve "projeyi düzelt" ve benzerleriniAS to 1.0 güncellemesinden sonra, "0, 0xffff]: 65536" parametresinde "

defaultConfig { 
    ... 
    multiDexEnabled = true 
} 

Bu

D:\VGA\AndroidStudio\sdk\build-tools\21.1.1\dx.bat --dex --no-optimize --multi-dex --main-dex-list D:\VGA\Projects\Sales-App\Android-Project\svn\android\app\build\intermediates\multi-dex\debug\maindexlist.txt --output D:\VGA\Projects\Sales-App\Android-Project\svn\android\app\build\intermediates\dex\debug --input-list=D:\VGA\Projects\Sales-App\Android-Project\svn\android\app\build\intermediates\tmp\dex\debug\inputList.txt 
gerçekleşir: derleme değil benim projem, bu bunu eklendiğinde çünkü sadece, multidexing çözülmezse, Ancak bana

FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':app:dexDebug'. 
> com.android.ide.common.internal.LoggedErrorException: Failed to run command: 
    D:\VGA\AndroidStudio\sdk\build-tools\21.1.1\dx.bat --dex --no-optimize --output D:\VGA\Projects\Sales-App\Android-Project\svn\android\app\build\intermediates\dex\debug --input-list=D:\VGA\Projects\Sales-App\Android-Project\svn\android\app\build\intermediates\tmp\dex\debug\inputList.txt 
Error Code: 
    2 
Output: 

    UNEXPECTED TOP-LEVEL EXCEPTION: 
    com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 
     at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502) 
     at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277) 
     at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491) 
     at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168) 
     at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) 
     at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) 
     at com.android.dx.command.dexer.Main.runMonoDex(Main.java:302) 
     at com.android.dx.command.dexer.Main.run(Main.java:245) 
     at com.android.dx.command.dexer.Main.main(Main.java:214) 
     at com.android.dx.command.Main.main(Main.java:106) 

verir

Hata Kodu: Çıktı: Ben Çünkü 4.4W için SDK'yı kullanabilir gibiydi o 20.0.0 değiştirildi varsayılan olarak en son

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.1" 

için derleme araçları değişen çalıştı

UNEXPECTED TOP-LEVEL ERROR: 
java.lang.OutOfMemoryError: GC overhead limit exceeded 
    at com.android.dx.cf.code.ConcreteMethod.makeSourcePosistion(ConcreteMethod.java:254) 
    at com.android.dx.cf.code.RopperMachine.run(RopperMachine.java:306) 
    at com.android.dx.cf.code.Simulator$SimVisitor.visitLocal(Simulator.java:612) 
    at com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:367) 
    at com.android.dx.cf.code.Simulator.simulate(Simulator.java:94) 
    at com.android.dx.cf.code.Ropper.processBlock(Ropper.java:787) 
    at com.android.dx.cf.code.Ropper.doit(Ropper.java:742) 
    at com.android.dx.cf.code.Ropper.convert(Ropper.java:349) 
    at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:280) 
    at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:137) 
    at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:93) 
    at com.android.dx.command.dexer.Main.processClass(Main.java:729) 
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673) 
    at com.android.dx.command.dexer.Main.access$300(Main.java:82) 
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602) 
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) 
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) 
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) 
    at com.android.dx.command.dexer.Main.processOne(Main.java:632) 
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:505) 
    at com.android.dx.command.dexer.Main.runMultiDex(Main.java:332) 
    at com.android.dx.command.dexer.Main.run(Main.java:243) 
    at com.android.dx.command.dexer.Main.main(Main.java:214) 
    at com.android.dx.command.Main.main(Main.java:106) 

ama bu benim problemimi çözmedi.

Burada neyin yanlış olabileceğini bilen var mı?

DÜZENLEME:

derleme araçları değiştirme veya derleme SDK sorunu çözmek vermedi.

çok dex projeye app Torna ve ayrıca aşağıdaki

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.1" 

    defaultConfig { 
     ... 
     multiDexEnabled true 
    } 

... 
    dexOptions { 
     incremental true 
     javaMaxHeapSize "4g" 
    } 
} 

derleme işlemi Sabit ekleyerek, ancak bu hala bir "tedavi" ama sorun değil bir düzeltme gibi görünüyor. Bu ilgili olup olmadığını

Emin değilim, ama bu benim bağımlılık listesi:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:multidex:1.0.0' 
    compile 'com.android.support:appcompat-v7:21.0.2' 
    compile 'com.squareup:otto:1.3.5' 
    compile 'com.squareup.picasso:picasso:2.4.0' 
    compile 'com.squareup.retrofit:retrofit:1.7.1' 
    compile 'com.jakewharton:butterknife:6.0.0' 
    compile 'com.madgag.spongycastle:core:1.51.0.0' 
    compile 'com.madgag.spongycastle:prov:1.51.0.0' 
    compile 'com.madgag.spongycastle:pkix:1.51.0.0' 
    compile 'com.google.code.gson:gson:2.3' 
    compile 'commons-io:commons-io:2.4' 
    compile 'org.apache.httpcomponents:httpclient-android:4.3.5' 
    compile 'com.squareup.dagger:dagger:1.2.2' 
    compile 'com.squareup.dagger:dagger-compiler:1.2.2' 
    compile('com.googlecode.json-simple:json-simple:1.1.1') { 
     exclude module: 'junit' 
    } 
    compile 'com.google.android.gms:play-services:6.5.87' 
} 

Ben https://developer.android.com/google/gcm/client.html başına yüzden yok olarak eklenen sonra olmuştur son satırı bu yana yalnızca yeni bağımlılık, Bu sorunun kaynağı olduğunu düşünün.

EDIT2:

Evet, sorunun kaynağı oldu. Ben Google Cloud Messaging Gerekiyorsa, ben http://developer.android.com/google/play-services/setup.html#split göre baza sahip bağımlılığı değiştirilir:

compile 'com.google.android.gms:play-services-base:6.5.87' 

Ve sorun giderildi. Yardım için teşekkürler.

EDIT3: oyun hizmetlerinin 7.0.0 itibariyle

, GCM

compile 'com.google.android.gms:play-services-gcm:7.0.0' 

EDIT4 içinde:

Play Hizmetleri 7.3.0 güncellendi. Lütfen buradaki son sürümü kontrol ediniz: http://developer.android.com/google/play-services/setup.html#split

+0

Aynı konuyla karşılaştım .. –

+0

@MD Yapım aracını 19.1.0'a geri döndürmeyi deneyeceğim ve herhangi bir çözüm bulup bulmadığını görmek için herhangi bir çözüm buldunuz mu? – EpicPandaForce

+0

Bunu zaten yaptım ve eskiyle iyi çalışıyor. –

cevap

20

Hata, uygulamanızda maksimum yöntem sayısına ulaştığınız anlamına gelir. Bu, projeniz için kullandığınız tüm kitaplıkları içerir.

  1. gerçekten yaramayan herhangi bir üçüncü taraf kütüphaneleri kurtulun:

    sorunu çözmek için iki yol vardır. Google oyun hizmetlerini kullanırsanız, bu yöntem saymaya çok katkıda bulunabilir. Neyse ki en yeni oyun servisleri, çerçevenin is possible to include only parts sürümünü yayınlıyor.

  2. Uygulamanız için bir multi dex setup kullanın.
+0

Çoklu Dex kurulumunu denedim ancak yapılama işlemi bellek yetersizliği nedeniyle çöktü. Google bulut mesajlaşma oyun hizmetini bağımlılık olarak ekledim, ancak sorunun nedeni bu değil. – EpicPandaForce

+0

Dex seçeneklerine ekstra bellek ekledim ve şimdi işe yaradı, ama bence bu hala bir tür temel sorun. – EpicPandaForce

+3

Nevermind, tüm Google Play Hizmetlerini derlememize yardımcı oldu, ancak sadece ** base ** ile düzgün çalıştı, yardımlarınız için teşekkür ederim. – EpicPandaForce

15

Bu problemi aşamalıyorum & benim durumumda bu hatayı başarıyla aşmak için bu bağlantıyı kullandı .. !!!

UNEXPECTED TOP-LEVEL EXCEPTION: 

com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 
    at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502) 
    at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277) 
    at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491) 
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168) 
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) 
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) 
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:302) 
    at com.android.dx.command.dexer.Main.run(Main.java:245) 
    at com.android.dx.command.dexer.Main.main(Main.java:214) 
    at com.android.dx.command.Main.main(Main.java:106) 

Google durumunda

MultiDex Destek biçiminde bunun için resmi bir çözüm tahliyesine karar verdi:

The DEX 64k limit is not a problem anymore, almost

multidex desteğini eklemeyi Özetle Kütüphane.

dependencies { 
... 
    compile 'com.android.support:multidex:' 
    ... 
} 

Sonra gradle yapılandırma buildType veya productFlavor bölümünde multiDexEnabled bayrağı ayarlayarak çok Dexing sağlar. Projenizin bağlı Sonra

defaultConfig { 
    ... 
multiDexEnabled true 
... 
} 

, 3 seçeneğiniz vardır: Kendi Uygulama sınıfı oluşturmadıysanız

, basitçe AndroidManifest.xml uygulamanız sınıf olarak android.support.multidex.MultiDexApplication ilan zaten kendi Başvuru sınıf varsa

.... 
    android:name="android.support.multidex.MultiDexApplication" 
    ... 

, bu yerine android.support.multidex.MultiDexApplication uzatmak yapmak android.app.Application

senin Uygulama sınıfı başka sınıf uzanan ve siz istemediğiniz veya aşağıda gösterildiği gibi attachBaseContext() geçersiz, bunu değiştiremiyorsanız:

public class MyApplication extends FooApplication { 
    @Override 
    protected void attachBaseContext(Context base) { 
     super.attachBaseContext(base); 
     MultiDex.install(this); 
    } 
} 

Sizin derleme işleminin bellek kalmayabilir. düzeltmek için, 'android' kapatılması aşağıdaki dex seçenekleri ayarlayın -

dexOptions { 
    incremental true 
    javaMaxHeapSize "4g" 
} 

multidex hakkında bilmek Daha buradadır: http://developer.android.com/tools/building/multidex.html

bir bu hatayı çözmek için yardımcı olur başka linki: Referance Link

+2

@bummi Sabitledim. – EpicPandaForce

İlgili konular