¿Cómo puedo solucionar el error "elemento inesperado <consultas> encontrado en <manifiesto>"?
De repente, aparece este error de compilación en mi proyecto de Android:
unexpected element <queries> found in <manifest>
¿Cómo lo soluciono?
El complemento de Android Gradle necesita conocer nuevos elementos del manifiesto, particularmente para el proceso de fusión del manifiesto. El complemento tiende a confundirse si ve elementos en la fusión del manifiesto que no reconoce, arrojando errores de compilación como el de la pregunta.
En este caso, Android 11 se introdujo <queries>
como un elemento de manifiesto y las versiones anteriores del complemento Gradle de Android no conocen ese elemento.
El hecho de que esto ocurra debido a una fusión manifiesta significa que simplemente actualizar una dependencia podría provocar este error. Por ejemplo, si actualiza a la última versión de com.awesome:awesome-library
y contenía un <queries>
elemento en su manifiesto, podría fallar con el error antes mencionado en sus compilaciones, incluso sin ningún otro cambio en su código.
Google lanzó una serie de versiones de parche del complemento Gradle de Android para solucionar este problema:
3.3.3
3.4.3
3.5.4
3.6.4
4.0.1
Si está utilizando un complemento existente en la serie 3.3.*
completa 4.0.*
, actualice a la versión de parche asociada (o superior) de esa lista y ya no debería encontrarse con ese error (por ejemplo, classpath 'com.android.tools.build:gradle:4.0.1'
).
Si está utilizando Android Studio 4.1 o superior, con un complemento de Gradle de Android correspondiente (por ejemplo, en la 4.1.*
serie), debería estar bien sin ningún cambio. Esas versiones de complementos ya las conocíamos <queries>
.
Consulte esta publicación del blog para desarrolladores de Android para obtener más información.
Tuve este problema en Flutter, pero creo que esta solución funcionará tanto para Flutter como para el desarrollo nativo de Flutter.
Sigue estos pasos
Lea esta breve publicación de blog para comprender mejor: Preparación de su compilación de Gradle para la visibilidad del paquete en Android 11
Elimine la carpeta .gradle dentro de la carpeta de Android, es decir, android > .gradle
En el archivo build.gradle del proyecto , actualice su ruta de clase apropiadamente según el blog en el enlace anterior, por ejemplo, actualicé a
classpath 'com.android.tools.build:gradle:4.0.1'
Actualice también la URL de distribución. Está en el archivo android>gradle>gradle-wrapper.properties correctamente. Por ejemplo, lo actualicé a
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
Puede invalidar los cachés y reiniciar su Android Studio. Asegúrese de tener una buena conexión a Internet, ya que descargará los nuevos archivos de Gradle .
De repente, también tuve el mismo problema hace dos días en Android Studio 4.1.1. Resolví el problema actualizando la versión de compilación de Gradle.
La configuración anterior en el archivo build.gradle del proyecto era:
classpath("com.android.tools.build:gradle:3.5.3")
Configuración actual:
classpath("com.android.tools.build:gradle:3.5.4")
El problema desapareció de inmediato. :)