Estoy jugando con Instant Apps para Android. Instalé todos los paquetes correctos y me cansé de crear una nueva aplicación con soporte de Instant App (marqué la casilla de Instant App al crear una nueva aplicación). El problema es que siempre tengo problemas con las herramientas de compilación. ¿Alguien más tiene este problema y pudo encontrar alguna solución?
Mi entorno:
- Android Studio 3.0 Canary 1
- Compilar SDK: 25
- Herramientas de compilación: "26.0.0 rc2"
- Complemento de Gradle: 3.0.0-alpha1
- Gradle: probé gradle-4.0-milestone1 y 2
- Java 1.8 / 1.7
- SO: probé tanto Windows 10 como Linux Ubuntu 16.4 LTS
El error:
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 línea en cuestión contiene (520):
<item format="float" name="abc_disabled_alpha_material_dark" type="dimen">0.30</item>
Espero haberle proporcionado suficiente información para resolver el problema. Gracias.
Respuestas:
La solución es cambiar su máquina de desarrollo a una configuración regional que use "." como una marca decimal.
Se puede cambiar de la siguiente manera:
fuente
A continuación se mencionan cuatro soluciones diferentes: A, B, C y D; elija uno que se adapte a usted:
A) Arreglar Android Studio a través del archivo de inicio de Ubuntu .desktop
Esta es una alternativa exclusiva de Ubuntu al enfoque general sobre la reparación de Android Studio (ver más abajo). Tenga en cuenta que es posible que aún desee implementar la parte sobre Arreglar el shell , y quizás incluso revertir cualquier modificación para
studio.sh
confirmar completamente esta corrección.Me cansé de parchearme
studio.sh
para cada actualización de Canary, así que se me ocurrió una solución mejor que elimina este paso. Funciona en Ubuntu y simplemente implica la creación de un lanzador .desktop que establece la variable de entorno enferma en cuestión.Tome nota de dónde está instalado Android Studio 3, por ejemplo
~/opt/android-studio-3
.Prepare su ícono local y el directorio de aplicaciones, en caso de que aún no exista:
mkdir -vp ~/.local/share/icons ~/.local/share/applications
Cree un ícono de Android Studio 3 que hará que su lanzador se destaque del ícono predeterminado y guárdelo en
~/.local/share/icons/android-studio-3.png
. O puedes usar el que hice frotando un trozo de queso sobre el original (~/opt/android-studio-3/bin/studio.png
):Cree un archivo de inicio de Android Studio 3 copiando y pegándolo en un shell:
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
Hazlo ejecutable:
chmod +x ~/.local/share/applications/android-studio-3.desktop
Ahora la parte complicada. Idealmente, debería poder buscar, iniciar y crear cortos para Android Studio 3 desde el tablero:
Pero personalmente, casi siempre tengo problemas para que Ubuntu detecte mis archivos .desktop nuevos o modificados. Una solución es cerrar la sesión y volver a iniciarla. Si alguien sabe cómo forzar una nueva exploración, ¡hágamelo saber!
B) Arreglar el script de inicio de Android Studio
Aquí hay una solución fácil, elegante y semipermanente: solo cambie la configuración regional de Android Studio modificando su secuencia de comandos de inicio:
Edite,
studio.sh
por ejemplo,~/opt/android-studio/bin/studio.sh
o cualquiera que sea su ruta de instalación.En algún lugar en la parte superior del archivo, debajo
#!/bin/sh
y antes de que aparezcan las primeras líneas de código, agregue esto:LC_NUMERIC="en_US.UTF-8"
.Aquí está la parte superior de mi
studio.sh
para completar:#!/bin/sh # # --------------------------------------------------------------------- # Android Studio startup script. # --------------------------------------------------------------------- # LC_NUMERIC="en_US.UTF-8" message() { TITLE="Cannot start Android Studio" ...
Reinicie Android Studio
Una nota sobre la actualización de Android Studio o Gradle
Cuando más tarde actualice su instalación de Android Studio, detectará que ha modificado
studio.sh
. Debe dejar que el instalador reemplace el archivo y luego ejecutar el parche nuevamente como se describe arriba. Finalmente reinicia Android Studio y estarás listo nuevamente. Las otras soluciones no se ven afectadas por esto.C) Arreglar el caparazón; Gradle, Jenkins, todo eso
La construcción desde el shell utilizando
gradlew
también requiere que se aplique la corrección. Esto solo afecta al shell y no a Android Studio. Elegir uno:O especifique la solución en cada invocación de esta manera:
LC_NUMERIC="en_US.UTF-8" ./gradlew clean assDebug
O para hacer esto permanente para el proyecto , edite el
gradlew
archivo en la raíz del proyecto y en algún lugar de la parte superior agregue esto:LC_NUMERIC="en_US.UTF-8"
Como aquí:
#!/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" ...
O, por supuesto, también puede agregar una solución global y permanente mediante el uso de un alias
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
Tenga en cuenta que así es como se agregan los alias de shell bash en Ubuntu; si está en un sistema operativo diferente, quizás debería agregar ~ / .bashrc o ~ / .profile en su lugar.
Luego, inicie un nuevo shell y ahora, en lugar de invocar,
./gradlew
use el nuevo aliasgr
:gr clean assDebug
La clara desventaja del n. ° 2 es que debe aplicarse a todos los proyectos manualmente. La ventaja, creo, es que esto se sobrescribirá automáticamente cuando se instale un nuevo gradlew, al igual que
studio.sh
se reemplaza, por lo que puede probar si el error se ha solucionado =)D) Deshabilitar APPT2 todos juntos
Personalmente, no haría esto, pero lo he agregado para completar, ya que definitivamente es una forma de hacer que appt2 deje de dar errores. Agregue esta línea a su
gradle.properties
:android.enableAapt2=false
fuente
android.enableAapt2
(o similar)false
en migradle.properties
. Muchas gracias por la útil respuesta de todos modos :)Resolví este problema agregando la siguiente línea a los archivos gradle.properties
android.enableAapt2=false
fuente
export LC_NUMERIC="en_US.UTF-8"
a su .bashrc que funcionó a laEste problema se ha solucionado en la versión estable de Android Studio más reciente. Actualizar su Android Studio a 3.0 debería resolver este problema por usted (tampoco es necesario deshabilitar AAPT2).
fuente
Asegúrese de no agregar ninguna unidad (dp) al usar
format="float"
Estaba enfrentando el mismo problema porque genere automáticamente dimensiones usando Android Studio
Extract dimen resource
y agregó un tipo de unidad como:<item name="margin_top" type="dimen" format="float">51.75dp</item>
Debería ser:
<item name="margin_top" type="dimen" format="float">51.75</item>
fuente
añadir
maven{ url 'https://maven.google.com' }
para que los repositorios funcionen para mí
fuente
Bibliotecas necesarias para máquinas de 64 bits:
Si está ejecutando una versión de Ubuntu de 64 bits, debe instalar algunas bibliotecas de 32 bits con el siguiente comando:
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386
Si está ejecutando Fedora de 64 bits, el comando es:
sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686
fuente