it-swarm.com.de

dex loader kann dex: method ID nicht in [0, 0xffff]: 65536 ausführen

ich baue meine Anwendung, ich bekam diesen Fehler

Dx-Warnung: Ignorieren des InnerClasses-Attributs für eine anonyme innere Klasse (Com.amazonaws.javax.xml.stream.xerces.util.SecuritySupport12 $ 4), die nicht mit einem Zugeordneten EnclosingMethod-Attribut geliefert wird. Diese Klasse wurde wahrscheinlich von einem Compiler erstellt, der nicht auf das moderne .class-Dateiformat abzielte. Die empfohlene Lösung Besteht darin, die Klasse aus der Quelle mit einem aktuellen Compiler Und ohne Angabe von "-target" -Typoptionen neu zu kompilieren. Das Ignorieren von Dieser Warnung hat zur Folge, dass reflektierende Operationen in dieser Klasse fälschlicherweise Anzeigen, wenn es sich bei nicht um eine innere Klasse handelt.

Dex Loader] Dex kann nicht ausgeführt werden: Methoden-ID nicht in [0, 0xffff]: 65536 Konvertierung in das Dalvik-Format ist fehlgeschlagen: Dex: Methoden-ID kann nicht in [0, 0xffff]: 65536 ausgeführt werden

11
user3230564

Überprüfen Sie den Erstellungspfad -> Java-Erstellungspfad -> Registerkarte Auftrag und Export -> Deaktivieren Sie die privaten Android-Librairies.

Wenn es immer noch nicht funktioniert, fügen Sie die folgende Zeile hinzu: dex.force.jumbo=true zur project.properties-Datei. 

Die wahrscheinliche Ursache ist möglicherweise ein großes Glas im Build-Pfad.

Bearbeiten: Dies ist veraltet, da Eclipse nicht mehr von Google unterstützt wird. Wenn Sie diese lästigen Probleme beseitigen möchten, verwenden Sie Android Studio und aktivieren Sie Multidex.

54
Driss Bounouar

Driss Bounouar Die Lösung hilft Ihnen tatsächlich beim Aufbau Ihres Projekts, aber Ihre Anwendung kann nach der Implementierung an einigen Stellen abstürzen. Ich denke, das Problem wird beim Kompilieren tatsächlich unterdrückt.

Die Fehler, die ich an der Konsole bekam, waren: - 

Dex Loader] Unable to execute dex: method ID not in [0, 0xffff]: 65536
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

[2014-11-08 15:51:58 - MLBPA] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(jnamed$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
[2014-11-08 15:51:58 - MLBPA] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(jnamed$2) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
[2014-11-08 15:51:58 - MLBPA] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(jnamed$3) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
[2014-11-08 15:51:59 - MLBPA] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.xbill.DNS.UDPClient$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.

Laut diesem Trace hatte ich versucht, alle Projekte mit demselben und dem neuesten Compiler neu zu kompilieren, aber ich hatte immer noch keinen Erfolg.

Wenn Sie später neuesteGoogle Play-Dienstedurch ältere ersetzen, wurde mein Problem behoben.

Ich hatte vor einigen Stunden meine google play-Dienste aktualisiert und bekam danach diese Fehlermeldung.

EDIT

Um das eigentliche Problem zu verstehen, sollten Sie sich Folgendes ansehen: Erstellen von Apps mit über 65.000 Methoden In unserer Situation sieht es so aus, als hätten alte Google Play-Dienste eine geringere Anzahl von Methoden und das Projekt daher erfolgreich kompiliert.

Kurz

Unser gesamtes Projekt ist in einer Dex-Datei zusammengefasst, deren Anzahl auf 65K begrenzt ist. Jetzt können Sie jedoch Multidex-Dateien in Ihrem Projekt aktivieren. Die bisher verfügbare Lösung funktioniert nur mit GRADLE (Android Studio). Ich habe keine Möglichkeit gefunden, damit Eclipse funktioniert.

11
DeltaCap019

Ich habe gerade eine Alternative gefunden, um dieses Problem bei Eclipse zu lösen, wenn Sie Google Play Services verwenden. Da es bei Eclipse anscheinend keine Möglichkeit gibt, Multidex wie in Android Studio (und Gradle) zu verwenden, scheint dies die einzige Möglichkeit zu sein auf Eclipse rechts jetzt.

  1. gehen Sie in das Projekt google-play-service-lib 
  2. in libs gehen 
  3. entpacken Sie die Datei google-play-services.jar 
  4. gehen Sie in den entpackten Ordner und entfernen Sie alle Ordner, die Sie nicht benötigen (d. h. wenn Sie Analytics benötigen, können Sie Anzeigen, Spiele, Karten, Brieftaschen, Laufwerke usw. entfernen). 
  5. Zippen Sie erneut einen solchen Ordner (der jetzt nur die benötigten Bibliotheken enthält) zusammen mit dem Ordner MANIFEST 
  6. verwenden Sie ein solches neues Glas für Ihr Projekt.
8
Ugo Chirico

Das gleiche Problem erfahren. Problem war in google-play-services_lib project. Es enthält viele Funktionen. Dieses Problem wurde in 21 und neueren Versionen von Google-play-services_lib behoben.

Um das Multi-Dex-Problem zu beheben, sollten Sie das alte lib-Projekt vollständig entfernen und stattdessen google-play-services_lib_v_21 oder neuer verwenden.

Zum Beispiel habe ich dieses verwendet: google-play-services

P.S. Denken Sie auch daran, dass offizielle google play-Konfigurationsdokumente sagen:

Sie sollten auf eine Kopie der Bibliothek verweisen, die Sie in Ihren Entwicklungsarbeitsbereich kopiert haben. Sie sollten die Bibliothek NICHT direkt aus dem Android SDK-Verzeichnis referenzieren.

4
Vitaliy A

Sie erhalten diesen Fehler vor allem deshalb, weil es eine Einschränkung für ausführbare Dateien von Dalvik gibt und die Grenze offenbar 65536 ist, was 2 ^ 16 ist.

Sie müssen die Multi-Dex-Konfiguration für Ihre Android-Anwendung aktivieren. Führen Sie die folgenden Schritte aus, um Multi-Dex zu aktivieren:

  1. Bearbeiten Sie Ihre build.gradle-Datei Ihres Hauptmoduls (App)

     Android {
      defaultConfig {
        ...
       multiDexEnabled  true
     }
    }
    
    dependencies {
        ...
      compile 'com.Android.support:multidex:1.0.1'
    }
    
  2. Sagen Sie Ihrer Anwendungsklasse, mit diesen Änderungen umzugehen.

    Sie können Ihre benutzerdefinierte Anwendungsklasse bearbeiten, um die Multi-Dex-Unterstützung zu aktivieren.

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

    OR

    public class MyApplication extends MultiDexApplication{
    
    }
    

    ODER 

    Bearbeiten Sie Ihre AndroidManifest.xml-Datei, um Ihre Änderungen auf das Anwendungs-Tag anzuwenden

    <?xml version="1.0" encoding="utf-8"?>        
    <manifestxmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.example.Android.multidex.myapplication">
       <application
         ...
         Android:name="Android.support.multidex.MultiDexApplication">
         ...
       </application>
    

Es gibt Einschränkungen unter API Level 14 und darunter. Ihre App wird möglicherweise nicht unter API-Ebene 14 kompiliert oder ausgeführt. Während des Kompilierens können Sie die OutOfMemory-Ausnahme erhalten. Um dies zu beheben, fügen Sie Folgendes zu build.gradle hinzu

dexOptions {
    jumboMode true
    javaMaxHeapSize "4g"
}
0
Srinivas

Ich hatte kürzlich auch die Google Play-Libs auf Version 29 aktualisiert und meine App erreichte das 2 ^ 16-Limit! Ich habe auf Version 26 heruntergestuft, von der ich wusste, dass sie für mich funktioniert hat und tatsächlich funktioniert.

Das Entwickeln mit Eclipse scheint jetzt ziemlich instabil geworden zu sein, daher ist es sehr ratsam, alle Versionen aller installierten Pakete im Auge zu behalten!

Langfristig besteht die Lösung darin, zu Android Studio zu wechseln.

0
Edo user1419293