2012-11-18 20 views
47

Ich versuche ein Android-Projekt mit OpenSAML mit Eclipse. Ich habe alle erforderlichen JAR-Dateien im Build-Pfad hinzugefügt. Nun, wenn ich das Programm als Applikation für Android laufen folgende Fehler zeigt sich:Android-Fehler in Eclipse: "Kann nicht ausführen dex: Kann den neuen Index 65799 nicht in eine Nicht-Jumbo-Anweisung zusammenführen!"

[2012-11-18 11:52:59 - Dex Loader] Unable to execute dex: Cannot merge new index 67075 into a non-jumbo instruction! 
[2012-11-18 11:52:59 - MyTestProgram] Conversion to Dalvik format failed: Unable to execute dex: Cannot merge new index 67075 into a non-jumbo instruction! 

Ich googeln ein bisschen, aber nichts kam. Was könnte dieser Fehler bedeuten?

+0

Versuchen Sie erneut, Ihre Sonnenfinsternis zu öffnen. Ich konnte diesen Fehler damit lösen. –

+0

Ich habe das so oft versucht, aber steckte einfach hier fest! – Ripul

+0

@Ripul konnten Sie Opensaml und Android-Pooc arbeiten –

Antwort

54

Eine Lösung, die ich gefunden habe, die es für mich funktionierte, war, dex.force.jumbo=true meiner project.properties hinzuzufügen. https://groups.google.com/forum/?fromgroups=#!topic/adt-dev/tuLXN9GkVas

Sie ADT 21 laufen Dies wird unter der Annahme, da diese Funktion in früheren Versionen nicht verfügbar war:

Dies wurde auf hingewiesen.

+0

Vielen Dank für Ihre Antwort. Ich habe das versucht. Aber ich bekomme das:
Installationsfehler: INSTALL_FAILED_DEXOPT Bitte überprüfen Sie Logcat-Ausgabe für weitere Details. Start abgebrochen!
Dann habe ich den Logcat überprüft. Und im logcat ist die Ausgabe:
W/installd (40): DexInv: --- ENDE '/data/app/*.apk' --- status = 0xff00, Prozess ist fehlgeschlagen E/installd (40): Dexopt fehlgeschlagen '/data/dalvik-cache/[email protected]@*[email protected]' res = 65280 Mit PackageManager (149): Paket konnte nicht in /data/app/*.apk installiert werden.
Irgendwelche Ideen? – Ripul

+2

Versucht, eine saubere Wiederherstellung durchzuführen? – Malachi

+0

Sicher habe ich. Das Problem ist, dass der Logcat nicht genügend Output produziert, um zu verstehen, was passiert! – Ripul

14

Das gleiche Problem ... hat gerade

dex.force.jumbo=true 

in der ersten Zeile der project.properties

+0

funktionierte genau wie ein Charme! Danke Rino! – Vincy

+0

Es machte keinen Unterschied für mich, die Zeile an den Anfang oder das Ende zu setzen. Funktioniert immer noch nicht. – zgulser

+0

Verwenden von Eclipse oder Android Studio? Dieser Link kann Ihnen helfen http://developer.android.com/tools/building/multidex.html – Rino

6

ich hatte das gleiche Problem, aber meine IDE waren IDEA IntelliJ 13. In dieser Version, die dex.force.jumbo Anweisung in der Datei project.properties wird ignoriert.

Um es zu aktivieren, gehen Sie einfach zu Einstellungen | Compiler | Android DX und wählen Sie die Kraft Jumbo-Modus Option.

Ich hoffe, es hilft (das ist die einzige SO-Frage, die ich finden konnte).

+0

Kein solcher Abschnitt ** Android DX ** in den Einstellungen. Und keine solche Option ** Force Jumbo-Modus ** in Android Studio (basierend auf IntelliJ IDEA). – ViliusK

+1

Da IntelliJ sich in vielen Aspekten von Android Studio unterscheidet, ist dies einer von ihnen. Da Studio Gradle standardmäßig verwendet, müssen Sie 'dexOptions {jumboMode = true}' in Ihrer Datei 'build.gradle' angeben. – Sebastiano

2

Hinzufügen einiger Erklärung:

Dies geschieht, wenn Eclipse-versucht schrittweise aufzubauen, wenn eine Änderung der Anzahl der String-Konstanten in der Anwendung erhöht. Der ursprüngliche Dex hatte nicht-Jumbo-Anweisungen, und der neue Dex, der darin zusammengeführt wird, hat Jumbo-Anweisungen. Wenn Sie eine Bereinigung durchführen, wird angezeigt, dass sie funktioniert, wenn Sie von Grund auf neu erstellen.

Solange die Anzahl der Strings in Ihrer Anwendung monoton ansteigt, werden inkrementelle Builds funktionieren.

0

Ich hatte das gleiche Problem, aber in meinem Fall löst der Befehl "dex.force.jumbo = true" das Problem nicht. Ich versuche, JDK und JRE zu aktualisieren, und das Problem zu lösen.

Hoffnung diese Antwort Hilfe

4

gerade hinzufügen jumboMode=true nicht für meine gradle Build nicht funktioniert. Doch dies funktionierte (zitiert von Xavier in der adt-dev Gruppe als Antwort auf einen Fehler in diesem Bereich angemeldet):

"Try to delete all the build folders manually and build again, making sure the dexOptions.jumboMode is set to true in the project?

There's an issue where the root project's build is not deleted in the clean task and this contains some information about the pre-dexed libraries."

13

Wenn gradle Build verwenden, fügen Sie einfach die dexOptions in build.gradle Jumbo-Modus zu aktivieren:

android { 
    dexOptions { 
     jumboMode = true 
    } 
} 

Denken Sie daran, "Gradle sauber" vor Ihrem neuen Gebäude zu laufen.