AAPT2-Kompilierung fehlgeschlagen: Ungültige Dimension auf Android 3.0 Canary 1

Lesezeit: 11 Minuten

Benutzer-Avatar
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

Der Fehler:

Error: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.internal.aapt.AaptException: AAPT2 compile failed:
aapt2 compile -o /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/res/merged/androidTest/debug /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml
Issues:
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:520 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:521 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:568 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:594 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:595 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:597 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:598 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:599 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:600 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:601 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:602 invalid dimen
 - ERROR: /home/simonp/Work/201705_InstantApp/InstantAppTest/feature/build/intermediates/incremental/mergeDebugAndroidTestResources/merged.dir/values/values.xml:603 invalid dimen
:feature:mergeDebugAndroidTestResources FAILED

Die betreffende Zeile enthält (520):

<item format="float" name="abc_disabled_alpha_material_dark" type="dimen">0.30</item>

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


Benutzer-Avatar
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.

  1. Notieren Sie sich, wo Ihr Android Studio 3 installiert ist, z ~/opt/android-studio-3.

  2. Bereiten Sie Ihr lokales Symbol- und Anwendungsverzeichnis vor, falls dies noch nicht vorhanden ist:

    mkdir -vp ~/.local/share/icons ~/.local/share/applications
    
  3. 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):

    android-studio-3.png

  4. Erstellen Sie eine Android Studio 3 Launcher-Datei, indem Sie diese kopieren und in eine Shell einfügen:

    cat <<-EOF > ~/.local/share/applications/android-studio-3.desktop
    [Desktop Entry]
    Version=1.0
    Type=Application
    Name=Android Studio 3
    Icon=android-studio-3
    Exec=env LC_NUMERIC="en_US.UTF-8" opt/android-studio-3/bin/studio.sh "%f"
    Categories=Development;IDE;
    Terminal=false
    StartupWMClass=jetbrains-studio
    EOF
    
  5. Ausführbar machen:

    chmod +x ~/.local/share/applications/android-studio-3.desktop
    
  6. 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:

Zu ihrem Vergnügen

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:

  1. Bearbeiten studio.sh z.B ~/opt/android-studio/bin/studio.sh oder was auch immer Ihr Installationspfad sein mag.

  2. 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:

    #!/bin/sh
    #
    # ---------------------------------------------------------------------
    # Android Studio startup script.
    # ---------------------------------------------------------------------
    #
    
    LC_NUMERIC="en_US.UTF-8"
    
    message()
    {
      TITLE="Cannot start Android Studio"
    ...
    
  3. Starten Sie Android Studio neu

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:

  1. Geben Sie entweder den Fix bei jedem Aufruf wie folgt an:

    LC_NUMERIC="en_US.UTF-8" ./gradlew clean assDebug

  2. 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"
    ...
    
  3. 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:

Geben Sie hier die Bildbeschreibung ein

  • 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:

<item name="margin_top" type="dimen" format="float">51.75dp</item>

Es sollte sein:

<item name="margin_top" type="dimen" format="float">51.75</item>

Benutzer-Avatar
Romuald DANSOU

hinzufügen

maven{
 url 'https://maven.google.com'
}

zu Repositories arbeiten für mich

Benutzer-Avatar
legoscia

Erforderliche Bibliotheken für 64-Bit-Maschinen:

Wenn Sie eine 64-Bit-Version von Ubuntu ausführen, müssen Sie einige 32-Bit-Bibliotheken mit dem folgenden Befehl installieren:

sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386

Wenn Sie 64-Bit-Fedora ausführen, lautet der Befehl:

sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686

  • 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


1298030cookie-checkAAPT2-Kompilierung fehlgeschlagen: Ungültige Dimension auf Android 3.0 Canary 1

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy