AAPT2-Kompilierung fehlgeschlagen: Ungültige Dimension auf Android 3.0 Canary 1
Lesezeit: 11 Minuten
sposnjak
Ich spiele mit Instant Apps für Android herum. Ich habe alle richtigen Pakete installiert und bin müde, eine neue Anwendung mit Instant App-Unterstützung zu erstellen (das Kästchen für Instant App beim Erstellen einer neuen Anwendung aktiviert). Das Problem ist, dass ich immer auf ein Problem mit Compiler-Tools stoße. Hat noch jemand dieses Problem und konnte eine Lösung finden.
Mein Umfeld:
Android Studio 3.0 Kanarienvogel 1
SDK kompilieren: 25
Build-Tools: “26.0.0 rc2”
Gradle-Plugin: 3.0.0-alpha1
Gradle: habe sowohl gradle-4.0-milestone1 als auch 2 ausprobiert
Java 1.8/1.7
Betriebssystem: Sowohl Windows 10 als auch Linux Ubuntu 16.4 LTS ausprobiert
Hoffentlich habe ich Ihnen genügend Informationen zur Verfügung gestellt, um das Problem zu lösen. Vielen Dank.
Als Problemumgehung, um den Build zum Laufen zu bringen, habe ich derzeit aapt2 deaktiviert und es funktioniert zum Testen des Builds … Sie können dies tun, indem Sie android.enableAapt2=false in Ihrer gradle.properties-Datei festlegen. Ich denke, es könnte ein Studio-Bug sein, bin mir nicht sicher …
– Bruce Wayne
27. Mai 2017 um 17:33 Uhr
Andere Lösung ist stackoverflow.com/a/33943562/5125608 Es funktioniert für mich.
– anlijudavid
29. Mai 2017 um 18:01 Uhr
FYI, der neueste Canary-Build, 5, wurde veröffentlicht und Google hat unten erwähnt, dass sie immer noch Probleme mit diesem AAPT2 haben, wie folgt: AAPT2. Wir stabilisieren weiterhin AAPT2, das eine inkrementelle Ressourcenverarbeitung ermöglicht. Wenn Ihr Build aufgrund eines Problems bei der Ressourcenverarbeitung fehlschlägt, senden Sie uns bitte einen Fehlerbericht. Um AAPT vorübergehend zu deaktivieren, legen Sie android.enableAapt2=false in Ihrer Datei gradle.properties fest. Roboelectric ist derzeit nicht mit AAPT2 kompatibel
– Endlosschleifen
4. Juli 2017 um 16:35 Uhr
Stephan Hennigsen
Unten werden erwähnt vier verschiedene Lösungen: A, B, C und D; Wählen Sie eine, die zu Ihnen passt:
A) Behebung von Android Studio über die Ubuntu .desktop Launcher-Datei
Dies ist eine reine Ubuntu-Alternative zum allgemeinen Ansatz Android Studio reparieren (siehe unten). Beachten Sie, dass Sie vielleicht noch den Teil über implementieren möchten Befestigung der Schaleund vielleicht sogar alle Änderungen an rückgängig machen studio.sh um diesen Fix vollständig zu bestätigen.
Ich hatte es satt, meine zu patchen studio.sh für jedes Canary-Update, also habe ich eine bessere Lösung gefunden, die diesen Schritt eliminiert. Es funktioniert auf Ubuntu und beinhaltet einfach die Erstellung eines .desktop-Launchers, der die betreffende kranke Umgebungsvariable festlegt.
Notieren Sie sich, wo Ihr Android Studio 3 installiert ist, z ~/opt/android-studio-3.
Bereiten Sie Ihr lokales Symbol- und Anwendungsverzeichnis vor, falls dies noch nicht vorhanden ist:
Erstellen Sie ein Android Studio 3-Symbol, das Ihren Launcher vom Standardsymbol abhebt, und speichern Sie es in ~/.local/share/icons/android-studio-3.png. Oder Sie können das verwenden, das ich gemacht habe, indem Sie ein Stück Käse auf das Original reiben (~/opt/android-studio-3/bin/studio.png):
Erstellen Sie eine Android Studio 3 Launcher-Datei, indem Sie diese kopieren und in eine Shell einfügen:
Jetzt für den kniffligen Teil. Idealerweise sollten Sie in der Lage sein, Shorts für Android Studio 3 vom Dash aus zu finden, zu starten und zu erstellen:
Aber ich persönlich habe fast immer Probleme, Ubuntu dazu zu bringen, meine neuen oder geänderten .desktop-Dateien zu erkennen. Eine Lösung besteht darin, sich abzumelden und wieder anzumelden. Wenn jemand weiß, wie man einen erneuten Scan erzwingt, lass es mich wissen!
B) Korrigieren des Startskripts von Android Studio
Hier ist eine einfache, elegante und semipermanente Lösung: Ändern Sie nur das Gebietsschema von Android Studio selbst, indem Sie sein Startskript ändern:
Bearbeiten studio.sh z.B ~/opt/android-studio/bin/studio.sh oder was auch immer Ihr Installationspfad sein mag.
Irgendwo oben in der Datei, unten #!/bin/sh und bevor die ersten Codezeilen erscheinen, fügen Sie Folgendes hinzu:
LC_NUMERIC="en_US.UTF-8".
Hier ist der obere Teil meiner studio.sh zur Vollständigkeit:
Ein Hinweis zum Aktualisieren von Android Studio oder Gradle
Wenn Sie später Ihre Android Studio-Installation aktualisieren, wird diese feststellen, dass Sie Änderungen vorgenommen haben studio.sh. Sie sollten die Datei vom Installer ersetzen lassen und danach den Patch wie oben beschrieben erneut durchführen. Starten Sie schließlich Android Studio neu und Sie sind wieder bereit. Die anderen Lösungen sind davon nicht betroffen.
C) Befestigung der Schale; Gradle, Jenkins, all das
Bauen aus der Shell mit gradlew erfordert auch, dass der Fix angewendet wird. Dies betrifft nur die Shell und nicht Android Studio. Wähle eins:
Geben Sie entweder den Fix bei jedem Aufruf wie folgt an:
LC_NUMERIC="en_US.UTF-8" ./gradlew clean assDebug
Oder um dies dauerhaft zu machen das Projektbearbeiten Sie die gradlew Datei im Stammverzeichnis des Projekts und irgendwo oben fügen Sie Folgendes hinzu:
LC_NUMERIC="en_US.UTF-8"
Wie hier:
#!/usr/bin/env bash
################################################################################
##
## Gradle start up script for UN*X
##
################################################################################
LC_NUMERIC="en_US.UTF-8"
# Add default JVM options here. You can al...
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
...
Oder Sie können natürlich auch eine globale und dauerhafte Lösung durch die Verwendung eines Alias hinzufügen, gr:
cat <<EOF>>~/.bash_aliases
# Fixing Android Studio 3 Canary bug https://stackoverflow.com/a/44304075/2412477
alias gr="LC_NUMERIC="en_US.UTF-8" ./gradlew"
EOF
Beachten Sie, dass auf diese Weise Bash-Shell-Aliase unter Ubuntu hinzugefügt werden. Wenn Sie ein anderes Betriebssystem verwenden, sollten Sie stattdessen ~/.bashrc oder ~/.profile anhängen.
Dann eine neue Shell starten und jetzt statt aufrufen ./gradlew Verwenden Sie den neuen Alias gr:
gr clean assDebug
Der klare Nachteil von #2 ist, dass dies manuell auf alle Projekte angewendet werden muss. Der Vorteil, denke ich, ist, dass dies automatisch überschrieben wird, wenn ein neues Gradlew installiert wird, ähnlich wie studio.sh wird ersetzt, damit Sie testen können, ob der Fehler behoben wurde =)
D) APPT2 insgesamt deaktivieren
Persönlich würde ich das nicht tun, aber ich habe es der Vollständigkeit halber hinzugefügt, da es definitiv eine Möglichkeit ist, appt2 dazu zu bringen, keine Fehler mehr zu geben. Fügen Sie diese Zeile zu Ihrer hinzu gradle.properties: android.enableAapt2=false
Dies scheint eine viel bessere Problemumgehung zu sein als die akzeptierte Antwort
– lellomann
2. Juni 2017 um 11:46 Uhr
Aus irgendeinem Grund funktioniert das bei mir nicht. Ich habe Android Studio 3.0 Canary 3 und nachdem ich all dies eingestellt habe, bleibt das Zusammenführungsproblem bestehen. Mein Gebietsschema ist en_US.UTF-8
– Wladimir
5. Juni 2017 um 8:48 Uhr
Ich habe gerade auf Canary 3 aktualisiert und bin hierher zurückgekommen, um erneut zu kopieren und einzufügen. Bei mir funktioniert es immer noch
– lellomann
6. Juni 2017 um 11:48 Uhr
@vladaman Dies behebt den offensichtlichen Gleitkommafehler, aber Android Studio 3.0 Canary 3 ist immer noch strenger als zuvor, und einige Fehler in Ihren Ressourcendateien, die zuvor akzeptiert wurden, verursachen jetzt einen Zusammenführungsfehler. Beachten Sie, dass die Vorschau der Designbibliothek ab heute fehlerhaft ist und nicht auf Android Studio 3.0 Canary 3 aufbaut.
– aberaud
6. Juni 2017 um 12:35 Uhr
@Stephan Henningsen nicht sicher, was ich falsch gemacht haben könnte, obwohl ich tatsächlich das SDK, die Tools und die Bibliotheken in Version 26.X verwende. Ich habe den Fehler bereits selbst behoben, indem ich einfach aapt2 per Einstellung deaktiviert habe android.enableAapt2 (oder ähnlich) zu false in meinem gradle.properties. Trotzdem vielen Dank für die hilfreiche Antwort 🙂
– Maxr1998
19. Juni 2017 um 23:29 Uhr
Die Problemumgehung besteht darin, Ihren Entwicklungscomputer auf ein Gebietsschema umzustellen, das “.” als Dezimalzeichen.
Es kann wie folgt geändert werden:
Das hat bei mir funktioniert. Eine systemweite Anwendung war nicht erforderlich. Ein Neustart von Android-Studio reicht jedoch nicht aus. Sie müssen sich abmelden und erneut anmelden (oder Ihr System neu starten), um die Änderungen für Gradle Build zu aktivieren.
– Salim
27. Mai 2017 um 13:00 Uhr
Es klappt! Für Linux sollten Sie Folgendes tun: exportieren Sie LC_NUMERIC=”en_US.UTF-8″ und starten Sie dann Android Studio in derselben Eingabeaufforderung
– sposnjak
30. Mai 2017 um 7:16 Uhr
Ich habe export LC_NUMERIC=”en_US.UTF-8″ am Anfang meiner studio.sh hinzugefügt und es funktioniert gut. Ich würde sicherlich nicht mein systemweites Gebietsschema ändern, nur um einen Fehler zu umgehen.
– rzehan
31. Mai 2017 um 14:36 Uhr
…was? Jemandem zu empfehlen, sein systemweites Gebietsschema nur wegen eines Fehlers in einer App zu ändern, ist verrückt. Es wirkt sich darauf aus, wie Ihr Datum zB in E-Mail-Clients formatiert wird, sogar die Sprache und so ziemlich alles andere auch.
– Stefan Henningsen
1. Juni 2017 um 10:00 Uhr
Nun, ich bin auf Windows. Irgendwelche Vorschläge?
– Benutzer2520215
5. Juni 2017 um 16:50 Uhr
Ich habe dieses Problem gelöst, indem ich die folgende Zeile zu den gradle.properties-Dateien hinzugefügt habe
android.enableAapt2=false
Ich denke, diese Antwort verdient ihre Erklärung.
– ksugiarto
18. August 2017 um 10:16 Uhr
Diese Antwort hat geholfen, löst aber das Problem nicht. Deaktiviert einfach das Gradle-Modul, das es verursacht hat. Wenn Sie das aapt2 benötigen, fügen Sie es definitiv hinzu export LC_NUMERIC="en_US.UTF-8" zu Ihrer .bashrc, die für mich wie ein Zauber funktionierte
– Lukas
19. August 2017 um 20:56 Uhr
Was ist mit MAC OS-Benutzern?
– HendraWD
27. Oktober 2017 um 11:14 Uhr
Ich entwickle in einer Windows-Umgebung, welche Änderung benötige ich dafür?
– Mehbube Arman
28. März 2018 um 12:19 Uhr
android.enableAapt2=false ist veraltet und wird bis Ende 2018 entfernt.
– XurajB
27. September 2018 um 1:40 Uhr
Dieses Problem wurde im neuesten Android Studio Stable behoben. Ein Upgrade Ihres Android Studio auf 3.0 sollte dieses Problem für Sie lösen (auch keine Notwendigkeit, AAPT2 zu deaktivieren).
Stellen Sie sicher, dass Sie bei der Verwendung keine Einheiten (dp) hinzufügen format="float"
Ich hatte das gleiche Problem, weil ich mit Android Studio automatisch Dimensionen generiert habe Extract dimen resource und es fügte einen Einheitentyp hinzu wie:
Ich sehe nicht, wie die Installation dieser Pakete das vorliegende Problem im OP beheben soll. Wie hängt dieses Problem mit einer Deflate-Kompressionsmethode zusammen? Ich habe lib32z1 nicht einmal selbst installiert, und meine Installation funktioniert nach der Anwendung von stackoverflow.com/a/44304075/2412477; Ich empfehle jedem, dies zu versuchen, bevor potenziell unnötige Pakete installiert werden.
– Stefan Henningsen
17. Juni 2017 um 9:25 Uhr
12980300cookie-checkAAPT2-Kompilierung fehlgeschlagen: Ungültige Dimension auf Android 3.0 Canary 1yes
Als Problemumgehung, um den Build zum Laufen zu bringen, habe ich derzeit aapt2 deaktiviert und es funktioniert zum Testen des Builds … Sie können dies tun, indem Sie android.enableAapt2=false in Ihrer gradle.properties-Datei festlegen. Ich denke, es könnte ein Studio-Bug sein, bin mir nicht sicher …
– Bruce Wayne
27. Mai 2017 um 17:33 Uhr
Andere Lösung ist stackoverflow.com/a/33943562/5125608 Es funktioniert für mich.
– anlijudavid
29. Mai 2017 um 18:01 Uhr
FYI, der neueste Canary-Build, 5, wurde veröffentlicht und Google hat unten erwähnt, dass sie immer noch Probleme mit diesem AAPT2 haben, wie folgt: AAPT2. Wir stabilisieren weiterhin AAPT2, das eine inkrementelle Ressourcenverarbeitung ermöglicht. Wenn Ihr Build aufgrund eines Problems bei der Ressourcenverarbeitung fehlschlägt, senden Sie uns bitte einen Fehlerbericht. Um AAPT vorübergehend zu deaktivieren, legen Sie android.enableAapt2=false in Ihrer Datei gradle.properties fest. Roboelectric ist derzeit nicht mit AAPT2 kompatibel
– Endlosschleifen
4. Juli 2017 um 16:35 Uhr