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 (aktiviert das Kontrollkästchen für Instant App, wenn eine neue Anwendung erstellt wird). Das Problem ist, dass ich immer auf ein Problem mit Kompilierungswerkzeugen stoße. Hat jemand anderes dieses Problem und konnte eine Problemumgehung finden.
Meine Umgebung:
- Android Studio 3.0 Canary 1
- SDK kompilieren: 25
- Build Tools: "26.0.0 rc2"
- Gradle-Plugin: 3.0.0-alpha1
- Gradle: hat sowohl Gradle-4.0-Meilenstein1 als auch 2 ausprobiert
- Java 1.8 / 1.7
- Betriebssystem: Windows 10 und 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 beheben. Danke dir.
Antworten:
Die Problemumgehung besteht darin, Ihren Entwicklungscomputer auf ein Gebietsschema umzustellen, das "." als Dezimalstelle.
Es kann folgendermaßen geändert werden:
quelle
Nachfolgend sind vier verschiedene Lösungen aufgeführt: A, B, C und D; Wählen Sie eine, die zu Ihnen passt:
A) Beheben von Android Studio über die Ubuntu .desktop Launcher-Datei
Dies ist eine reine Ubuntu-Alternative zum allgemeinen Ansatz zum Beheben von Android Studio (siehe unten). Beachten Sie, dass Sie den Teil zum Beheben der Shell möglicherweise noch implementieren und möglicherweise sogar alle Änderungen rückgängig machen möchten,
studio.sh
um diesen Fix vollständig zu bestätigen.Ich hatte es satt, meine
studio.sh
für jedes kanarische Update zu patchen , und fand eine bessere Lösung, die diesen Schritt eliminiert. Es funktioniert unter Ubuntu und umfasst lediglich das Erstellen eines .desktop-Starters, der die betreffende Variable für die kranke Umgebung festlegt.Notieren Sie sich, wo Ihr Android Studio 3 installiert ist, z
~/opt/android-studio-3
.Bereiten Sie Ihr lokales Symbol und Ihr Anwendungsverzeichnis vor, falls das noch nicht vorhanden ist:
Erstellen Sie ein Android Studio 3-Symbol, mit dem sich Ihr Launcher vom Standardsymbol abhebt, und speichern Sie es in
~/.local/share/icons/android-studio-3.png
. Oder Sie können die verwenden, die ich gemacht habe, indem Sie ein Stück Käse auf das Original gerieben haben (~/opt/android-studio-3/bin/studio.png
):Erstellen Sie eine Launcher-Datei für Android Studio 3, indem Sie diese kopieren und in eine Shell einfügen:
Machen Sie es ausführbar:
Nun zum kniffligen Teil. Idealerweise sollten Sie in der Lage sein, Kurzfilme für Android Studio 3 über das Dash 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) Behebung des Startskripts für Android Studio
Hier ist eine einfache, elegante und semi-permanente Lösung: Ändern Sie das Gebietsschema von Android Studio selbst nur, indem Sie das Startskript ändern:
Bearbeiten Sie
studio.sh
zB~/opt/android-studio/bin/studio.sh
oder was auch immer Ihr Installationspfad sein mag.Fügen Sie irgendwo oben in der Datei, unterhalb
#!/bin/sh
und bevor die ersten Codezeilen angezeigt werden, Folgendes hinzu:LC_NUMERIC="en_US.UTF-8"
.Hier ist der obere Teil meiner
studio.sh
Vollständigkeit:Starten Sie Android Studio neu
Ein Hinweis zum Aktualisieren von Android Studio oder Gradle
Wenn Sie Ihre Android Studio-Installation später aktualisieren, wird festgestellt, dass Sie Änderungen vorgenommen haben
studio.sh
. Sie sollten das Installationsprogramm die Datei ersetzen lassen und anschließend den Patch wie oben beschrieben erneut ausführen. Starten Sie schließlich Android Studio neu und Sie sind wieder bereit. Die anderen Lösungen sind davon nicht betroffen.C) Befestigen der Schale; Gradle, Jenkins, das alles
Für das
gradlew
Erstellen aus der Shell mit muss auch der Fix angewendet werden. Dies betrifft nur die Shell und nicht Android Studio. Wähle eins:Geben Sie den Fix für jeden Aufruf wie folgt an:
LC_NUMERIC="en_US.UTF-8" ./gradlew clean assDebug
Um dies für das Projekt dauerhaft zu machen , bearbeiten Sie die
gradlew
Datei im Stammverzeichnis des Projekts und fügen Sie Folgendes hinzu:LC_NUMERIC="en_US.UTF-8"
Wie hier:
Sie können natürlich auch einen globalen und dauerhaften Fix hinzufügen, indem Sie einen Alias verwenden
gr
:Beachten Sie, dass auf Ubuntu auf diese Weise Bash-Shell-Aliase hinzugefügt werden. Wenn Sie ein anderes Betriebssystem verwenden, sollten Sie stattdessen an ~ / .bashrc oder ~ / .profile anhängen.
Starten Sie dann eine neue Shell und verwenden Sie jetzt anstelle des Aufrufs
./gradlew
den neuen Aliasgr
:gr clean assDebug
Der klare Nachteil von # 2 ist, dass dies manuell auf alle Projekte angewendet werden muss. Ich denke, der Vorteil ist, dass dies automatisch überschrieben wird, wenn ein neuer Gradlew installiert wird, ähnlich wie er
studio.sh
ersetzt wird, sodass 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 Ihrem hinzu
gradle.properties
:android.enableAapt2=false
quelle
android.enableAapt2
(oder ähnliches) auffalse
in eingestellt habegradle.properties
.Ich habe dieses Problem gelöst, indem ich den gradle.properties-Dateien die folgende Zeile hinzugefügt habe
quelle
export LC_NUMERIC="en_US.UTF-8"
zu Ihrem .bashrc hinzu, was für mich wie ein Zauber funktioniert hatDieses Problem wurde im neuesten Android Studio-Stall behoben. Ein Upgrade Ihres Android Studio auf 3.0 sollte dieses Problem für Sie lösen (auch AAPT2 muss nicht deaktiviert werden).
quelle
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 den Einheitentyp wie folgt hinzugefügt habe:<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>
quelle
hinzufügen
zu Repositories arbeiten für mich
quelle
Erforderliche Bibliotheken für 64-Bit-Computer:
Wenn Sie eine 64-Bit-Version von Ubuntu ausführen, müssen Sie einige 32-Bit-Bibliotheken mit dem folgenden Befehl installieren:
Wenn Sie 64-Bit-Fedora ausführen, lautet der Befehl:
quelle