Je joue avec les applications instantanées pour Android, j'ai installé tous les packages appropriés et je suis fatigué de créer une nouvelle application avec le support de l'application instantanée (coché la case pour l'application instantanée lors de la création d'une nouvelle application). Le problème est que je rencontre toujours un problème avec les outils de compilation. Est-ce que quelqu'un d'autre a ce problème et a pu trouver une solution de contournement.
Mon environnement:
- Android Studio 3.0 Canary 1
- Compiler le SDK: 25
- Outils de construction: "26.0.0 rc2"
- Plug-in Gradle: 3.0.0-alpha1
- Gradle: essayé à la fois gradle-4.0-milestone1 et 2
- Java 1.8 / 1.7
- OS: essayé à la fois Windows 10 et Linux Ubuntu 16.4 LTS
L'erreur:
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
La ligne en question contient (520):
<item format="float" name="abc_disabled_alpha_material_dark" type="dimen">0.30</item>
J'espère que je vous ai fourni suffisamment d'informations pour résoudre le problème. Je vous remercie.
Réponses:
La solution de contournement consiste à basculer votre machine de développement vers une locale qui utilise "." sous forme de marque décimale.
Il peut être modifié de la manière suivante:
la source
Ci-dessous sont mentionnés quatre solutions différentes: A, B, C et D; choisissez celui qui vous convient:
A) Correction d'Android Studio via le fichier de lancement Ubuntu .desktop
Il s'agit d'une alternative Ubuntu uniquement à l'approche générale de la correction d'Android Studio (voir ci-dessous). Notez que vous voudrez peut-être toujours implémenter la partie sur la correction du shell , et peut-être même annuler les modifications apportées à
studio.sh
confirmer complètement ce correctif.J'étais fatigué de patcher mon
studio.sh
pour chaque mise à jour Canary, alors j'ai trouvé une meilleure solution qui élimine cette étape. Cela fonctionne sur Ubuntu et implique simplement la création d'un lanceur .desktop qui définit la variable d'environnement malade en question.Notez où votre Android Studio 3 est installé, par exemple
~/opt/android-studio-3
.Préparez votre icône locale et votre répertoire d'applications, au cas où ils n'existeraient pas déjà:
Créez une icône Android Studio 3 qui permettra à votre lanceur de se démarquer de l'icône par défaut et de l'enregistrer dans
~/.local/share/icons/android-studio-3.png
. Ou vous pouvez utiliser celui que j'ai fait en frottant un morceau de fromage sur l'original (~/opt/android-studio-3/bin/studio.png
):Créez un fichier de lancement d'Android Studio 3 en copiant et en le collant dans un shell:
Rendez-le exécutable:
Passons maintenant à la partie délicate. Idéalement, vous devriez être en mesure de trouver, démarrer et créer des courts métrages pour Android Studio 3 à partir du tableau de bord:
Mais personnellement, j'ai presque toujours du mal à faire en sorte qu'Ubuntu détecte mes fichiers .desktop nouveaux ou modifiés. Une solution consiste à se déconnecter et à se reconnecter. Si quelqu'un sait comment forcer une nouvelle analyse, faites-le moi savoir!
B) Correction du script de démarrage d'Android Studio
Voici une solution simple, élégante et semi-permanente: changez uniquement les paramètres régionaux d'Android Studio lui-même en modifiant son script de démarrage:
Modifiez
studio.sh
par exemple~/opt/android-studio/bin/studio.sh
ou quel que soit votre chemin d'installation.Quelque part en haut du fichier, en dessous
#!/bin/sh
et avant que les premières lignes de code apparaissent, ajoutez ceci:LC_NUMERIC="en_US.UTF-8"
.Voici la partie supérieure de mon
studio.sh
pour l'exhaustivité:Redémarrez Android Studio
Une note sur la mise à niveau d'Android Studio ou Gradle
Lorsque vous mettrez à jour ultérieurement votre installation Android Studio, il détectera que vous avez modifié
studio.sh
. Vous devez laisser le programme d'installation remplacer le fichier, puis exécuter à nouveau le correctif comme décrit ci-dessus. Enfin, redémarrez Android Studio et vous serez à nouveau prêt. Les autres solutions n'en sont pas affectées.C) Fixation de la coque; Gradle, Jenkins, tout ça
La construction à partir du shell en utilisant
gradlew
nécessite également l'application du correctif. Cela affecte uniquement le shell et non Android Studio. Choisissez-en un:Soit spécifiez le correctif à chaque appel comme ceci:
LC_NUMERIC="en_US.UTF-8" ./gradlew clean assDebug
Ou pour rendre cela permanent pour le projet , éditez le
gradlew
fichier à la racine du projet et quelque part en haut, ajoutez ceci:LC_NUMERIC="en_US.UTF-8"
Comme ici:
Ou vous pouvez bien sûr ajouter aussi une solution globale et permanente si l'utilisation d'un alias,
gr
:Notez que c'est ainsi que les alias de shell bash sont ajoutés sur Ubuntu; si vous êtes sur un OS différent, vous devriez peut-être ajouter à la place ~ / .bashrc ou ~ / .profile.
Ensuite, démarrez un nouveau shell et maintenant, au lieu d'appeler,
./gradlew
utilisez le nouvel aliasgr
:gr clean assDebug
L'inconvénient évident du n ° 2 est que cela doit être appliqué à tous les projets manuellement. L'avantage, je pense, est que cela sera automatiquement écrasé lorsqu'un nouveau gradlew est installé, un peu comme
studio.sh
remplacé, vous pouvez donc tester si le bogue a été corrigé =)D) Désactiver APPT2 tous ensemble
Personnellement, je ne ferais pas cela, mais je l'ai ajouté par souci d'exhaustivité car c'est définitivement un moyen de faire en sorte que appt2 cesse de donner des erreurs. Ajoutez cette ligne à votre
gradle.properties
:android.enableAapt2=false
la source
android.enableAapt2
(ou similaire) surfalse
dans mygradle.properties
. Merci beaucoup pour la réponse utile quand même :)J'ai résolu ce problème en ajoutant la ligne suivante aux fichiers gradle.properties
la source
export LC_NUMERIC="en_US.UTF-8"
à votre .bashrc qui a fonctionné comme un charme pour moiCe problème a été résolu dans la dernière version stable d'Android Studio. La mise à niveau de votre Android Studio vers 3.0 devrait résoudre ce problème pour vous (pas besoin de désactiver AAPT2).
la source
Assurez-vous de ne pas ajouter d'unités (dp) lors de l'utilisation
format="float"
J'étais confronté au même problème parce que j'avais généré automatiquement des dimens à l'aide d'Android Studio
Extract dimen resource
et qu'il avait ajouté un type d'unité comme:<item name="margin_top" type="dimen" format="float">51.75dp</item>
Ça devrait être:
<item name="margin_top" type="dimen" format="float">51.75</item>
la source
ajouter
les référentiels fonctionnent pour moi
la source
Bibliothèques requises pour les machines 64 bits:
Si vous exécutez une version 64 bits d'Ubuntu, vous devez installer des bibliothèques 32 bits avec la commande suivante:
Si vous exécutez Fedora 64 bits, la commande est:
la source