Eclipse für Android Studio Import

8

Ich verschiebe alle meine Quellcodes zu AS, wie von der offiziellen Android-Website vorgeschlagen. Die Erfahrung ist jedoch nicht sehr gut. Es ist sehr schleppend wie beschrieben hier . Aber das ist jetzt nicht mein ultimatives Problem.

Ich habe viele Probleme gelöst, wie das Aktualisieren von compileSdkVersion auf 23 , so dass 99 Fehler dieser Art:

  

Fehler: (13) Fehler beim Abrufen des übergeordneten Elements für das Element: Es wurde keine Ressource gefunden, die dem angegebenen Namen 'android: TextAppearance.Material.Inverse' entspricht.

konnte behoben werden. Aber die Probleme schießen weiter, während ich gehe. Jetzt habe ich dieses 64k Dex-Problem.

  

Fehler: Die Anzahl der Methodenverweise in einer .dex-Datei darf 64 KB nicht überschreiten.   Informationen zum Beheben dieses Problems finden Sie unter Ссылка

Ich hatte dieses Dex Problem bei der Verwendung von Eclipse nie. Der Quellcode, den ich in AS habe, ist genau der gleiche wie in Eclipse . Die einzigen Unterschiede sind jene Änderungen, die nur erforderlich sind, um auf AS zu arbeiten. Irgendeine Idee warum dieses plötzliche Dex Problem? Wenn ich multiDexEnabled auf true setze, was sind die Auswirkungen?

    
user1506104 22.09.2016, 14:35
quelle

3 Antworten

1

Ich vermute, dass Ihr Dex-Fehler eine Folge des Wachstums einer Bibliothek ist, aber ohne weitere Informationen ist dies schwer zu debuggen. Die neueste Version von Android Studio (2.2) bietet ein APK-Analysetool, das das Dex-Limit transparenter macht.

Wenn Sie Google Play-Dienst-APIs verwenden, sollten Sie überprüfen, ob Sie nur die mit diesen Direktiven verwendeten einschließen %Code% anstatt alles einzubeziehen ( vollständige Liste ).

Wenn Sie alle Bibliotheken benötigen, auf die Sie bereits angewiesen sind, wird dies in der Regel gelöst, indem Sie multidex in Ihrer Entwicklungsumgebung aktivieren (Entwicklung mit einem Gerät oder Emulator mit L oder höher erforderlich), aber dann minificationEnabled in Ihren Release-Builds verwenden so dass Multidex ist nicht erforderlich in Ihrer Version APK. Dies führt zu einer Kombination aus schnellen Debug-Builds und Nicht-Multidex-Versionen, die Ihre Release-Builds erstellen, um langsame Startzeiten für Ihren Release-Build zu verhindern.

Ein bisschen mehr Info: Wenn Sie native multiidex in Debug-Builds verwenden (minSdk auf L oder höher gesetzt), führt dies zu schnelleren inkrementellen Builds, da Module und Bibliotheken als separate dex-Dateien und weniger Verarbeitung zwischen den Deploys bereitgestellt werden.

Wenn Sie in Ihrem Release-Build "minificationEnabled" verwenden, entfällt oft die Notwendigkeit für die zweite Dex-Datei, da Methoden aus Ihren Abhängigkeiten, die Sie nicht verwenden, getrimmt werden. Dies führt typischerweise zu einem einzelnen Dex, der die negativen Effekte von Multidex zunichte macht (Kopieren der N + 1 Dex-Dateien bei der App-Initialisierung für & lt; Version L-Geräte).

    
PaulR 01.10.2016, 03:33
quelle
2

Stellen Sie zuerst sicher, dass Sie das Projekt nach dem Import neu aufbauen (Build - Clean, Builde - Rebuild-Projekt). Behebung dieses Problems mit der Referenz zu den Begrenzungsmethoden:

%Vor%

Und aktualisieren Sie auch Application.class in Java, um MultiDex zu unterstützen. Siehe vollständige Informationen hier !

UPDATE:

Diese Option wird bei Eclipse ignoriert, da die Referenz der Methodenreferenzen aus der Umgebung berechnet werden kann (wie AS in unserem Fall). Warum diese Option nicht in Gradle Build - noch Frage enthält ...

Android-Anwendung (APK) -Dateien enthalten ausführbare Bytecode-Dateien in Form von Dalvik Executable (DEX) -Dateien, die den kompilierten Code enthalten, der zum Ausführen Ihrer App verwendet wird. Die Dalvik Executable-Spezifikation begrenzt die Gesamtzahl der Methoden, auf die in einer einzelnen DEX-Datei verwiesen werden kann, auf 65.536 - einschließlich Android-Framework-Methoden, Bibliotheksmethoden und Methoden in Ihrem eigenen Code. Im Zusammenhang mit der Informatik bezeichnet der Begriff Kilo, K, 1024 (oder 2 ^ 10). Da 65.536 gleich 64 X 1024 ist, wird diese Grenze als "64K-Referenzgrenze" bezeichnet.

Quell-AS-Dokument

    
GensaGames 26.09.2016 09:03
quelle
1

Das Multidex-Problem tritt auf, wenn Sie viele Bibliotheken in Ihrem Projekt verwenden. Wenn der Code Ihrer App mehr als 64.000 Methoden hat, passiert es.

  

Wenn Ihre Anwendung und die Bibliotheken, auf die sie verweist, einen bestimmten Wert erreichen   Bei der Größe treten Buildfehler auf, die darauf hinweisen, dass Ihre App den Wert a erreicht hat   Limit der Android App Build-Architektur.

Sie können einige Links verweisen wie:

So aktivieren Sie Multidexing mit dem neuen Android Multidex Support-Bibliothek

Ссылка

Ссылка

    
SANAT 30.09.2016 05:10
quelle

Tags und Links