android - studio - sdk tools
La compilación AAPT2 falló: dimen inválido en Android 3.0 Canary 1 (7)
A continuación se mencionan cuatro soluciones diferentes: A, B, C y D; elige uno que se adapte a ti:
A) Reparación de Android Studio a través del archivo de inicio de Ubuntu .desktop
Esta es una alternativa exclusiva de Ubuntu al enfoque general de
Fixing Android Studio
(ver más abajo).
Tenga en cuenta que es posible que aún desee implementar la parte sobre la
reparación del shell
, y tal vez incluso revertir cualquier modificación a
studio.sh
para confirmar completamente esta solución.
Me cansé de parchear mi
studio.sh
para cada actualización canaria, así que se me ocurrió una mejor solución que elimina este paso.
Funciona en Ubuntu y simplemente implica crear un lanzador .desktop que establece la variable de entorno enfermo en cuestión.
-
Tome nota de dónde está instalado su Android Studio 3, por ejemplo,
~/opt/android-studio-3
. -
Prepare su icono local y el directorio de aplicaciones, en caso de que no existan:
mkdir -vp ~/.local/share/icons ~/.local/share/applications
-
Cree un ícono de Android Studio 3 que haga que su iniciador se destaque del ícono predeterminado y guárdelo en
~/.local/share/icons/android-studio-3.png
. O puede usar el que hice frotando un trozo de queso en el original (~/opt/android-studio-3/bin/studio.png
): -
Cree un archivo de inicio de Android Studio 3 copiando y pegando esto 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 para la parte difícil. Idealmente, debería poder encontrar, 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 sesión y volver a iniciarla. Si alguien sabe cómo forzar un nuevo escaneo, ¡hágamelo saber!
B) Arreglando 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 script 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 de
#!/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" ...
-
Reiniciar 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 permitir que el instalador reemplace el archivo y luego vuelva a realizar el parche como se describió anteriormente.
Finalmente reinicie Android Studio, y estará listo nuevamente.
Las otras soluciones no se ven afectadas por esto.
C) Fijar el caparazón; Gradle, Jenkins, todo eso
Construir desde el shell usando
gradlew
también requiere que se aplique la corrección.
Esto solo afecta al shell y no a Android Studio.
Elegir uno:
-
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 archivo
gradlew
en la raíz del proyecto y en algún lugar en 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 a través del 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 a ~ / .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 de # 2 es que esto 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) Desactivar APPT2 todos juntos
Personalmente, no haría esto, pero lo he agregado para completarlo, 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
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 encuentro un problema 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 Gradle: 3.0.0-alpha1
- Gradle: probé tanto gradle-4.0-milestone1 como 2
- Java 1.8 / 1.7
- SO: probé Windows 10 y 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.
Asegúrese de no agregar ninguna unidad (dp) cuando use
format="float"
Estaba enfrentando el mismo problema porque autogeneré dimens usando Android Studio usando
Extract dimen resource
y agregué 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>
Bibliotecas requeridas 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
Este problema se ha solucionado en la versión estable más reciente de Android Studio. Actualizar tu Android Studio a 3.0 debería resolver este problema por ti (tampoco es necesario deshabilitar AAPT2).
Resolví este problema agregando la siguiente línea a los archivos gradle.properties
android.enableAapt2=false
añadir
maven{
url ''https://maven.google.com''
}
a los repositorios me funcionan