unavailable - no me aparece el editor de diseño en android studio
Error de manifiesto de Android Studio 3.0: elemento desconocido<acción> encontrado (8)
AVISO: no publique este "android.enableAapt2 = false" como respuesta. No es una solucion. Simplemente está ignorando el error real que no está causando ningún problema en tiempo de ejecución.
La solución fue simple, simplemente eliminó la etiqueta de acción colocada por error fuera de un filtro de intención en el archivo de manifiesto.
Tener una aplicación que fue construida por Android Studio 2.3 bien. Después de actualizar Android Studio 3.0 Stable , comencé a tener este error y no pude construir mi proyecto.
Aquí mi manifiesto.xml
<application
android:name=".ApplicationClass"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--other unrelated stuff-->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.xxx.xxx" />
</intent-filter>
</receiver>
</application>
El error muestra esta línea:
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
Si comento / elimino esta línea de etiqueta de acción, el proyecto funciona bien pero es necesario para
GCM
y no puedo eliminarlo.
Como ve los registros, el error no se produce en el archivo de manifiesto principal , se produce en / build / intermediates / manifestts / full / debug /AndroidManifest.xml
Intenté limpiar, reconstruir, deshabilitar la ejecución instantánea. ¿Hay alguna solución?
Los registros de errores:
/THE_PROJECT_PATH/app/build/intermediates/manifests/full/debug/AndroidManifest.xml
Error:(99) error: unknown element <action> found.
Error:(99) unknown element <action> found.
Error:java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Execution failed for task '':app:processDebugResources''.
> Failed to execute aapt
Information:BUILD FAILED in 1s
Information:6 errors
Information:0 warnings
Information:See complete output in console
Coloque el contenido de la acción en el filtro de intención como se muestra a continuación según la estructura del archivo de manifiesto
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
</intent-filter>
En mi aplicación en AndroidManifest.xml, el receptor de la etiqueta estaba bajo la etiqueta de la aplicación y esto fue causa de falla de compilación con el mensaje
.../android/app/build/intermediates/manifests/full/debug/AndroidManifest.xml:25: AAPT: error: unknown element <receiver> found
.
Después de ponerlo en la etiqueta de la aplicación, el proyecto se compiló con éxito.
Eso es todo
Para resumir y simplificar: debe concentrarse en su archivo AndroidManifest.xml principal y verificar si sigue estrictamente la secuencia, así como el anidamiento de etiquetas XML como se describe en https://developer.android.com/guide/topics/manifest/manifest-intro.html . De lo contrario, el IDE abrirá el AndroidManifest.xml de nivel de depuración que muestra muchos errores cada vez que intentas limpiar / construir el proyecto y confundirte.
Recientemente tuve esta solución en mi gradle.properties, pero una advertencia que decía que "La opción ''android.enableAapt2'' está en desuso ..." siguió apareciendo y la solución fue cambiarla a verdadero.
Simplemente cambie el nombre de su archivo de manifiesto de esta manera: AndroidManifest.xmlold, luego cree un nuevo archivo XML y asigne un nombre: AndoridManifest.xml. Luego, simplemente copie el contenido del archivo anterior después de eliminar la línea con la etiqueta. Build> Clean Project y luego Run> debug app nuevamente. Entonces el problema desaparecerá.
Tenemos la solución de este problema y la solución es que el servicio siempre viene en forma secundaria de
<Application <service>>
cuando escribimos el código fuera de
<Application>
luego se produce el problema.
Los servicios son la parte secundaria de la Aplicación en el Manifiesto ... está bien ... Seguro que funcionará ... hágalo
Tienes una etiqueta mal colocada. El nuevo AAPT (AAPT2) ahora arroja un error al respecto.
De los documentos aquí: https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html
El comportamiento cambia cuando se usa AAPT2
Para mejorar el procesamiento de recursos incrementales, el complemento de Android 3.0.0 habilita AAPT2 de forma predeterminada. Aunque AAPT2 debería funcionar inmediatamente con proyectos más antiguos, esta sección describe algunos cambios de comportamiento que debe tener en cuenta.
Jerarquías de elementos en el manifiesto de Android
En versiones anteriores de AAPT, los elementos anidados en nodos incorrectos en el manifiesto de Android se ignoran o generan una advertencia. Por ejemplo, considere la siguiente muestra:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myname.myapplication"> <application ... <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <action android:name="android.intent.action.CUSTOM" /> </activity> </application> </manifest>
Las versiones anteriores de AAPT simplemente ignorarían la etiqueta fuera de lugar. Sin embargo, con AAPT2, obtiene el siguiente error:
AndroidManifest.xml:15: error: unknown element <action> found.
Para resolver el problema, asegúrese de que sus elementos de manifiesto estén anidados correctamente. Para obtener más información, lea Estructura de archivo de manifiesto .
agregue este código en gradle.properties en el proyecto raíz :
android.enableAapt2=false
esto funcionó para mí
root
|
|--gradle.properties