AVIS: Veuillez ne pas publier cette "android.enableAapt2=false" comme une réponse. C'est pas une solution. C'est juste ignorant la véritable erreur qui ne cause pas de problème à l'exécution.
La Solution est simple, il suffit de supprimé malencontreusement placé l'action de la balise à l'extérieur d'un filtre d'intention dans le fichier manifeste.
Avoir une application qui a été la construction d'Android Studio 2.3 amende. Après la mise à jour Android Studio 3.0 Stable, a commencé à avoir cette erreur et impossible de construire mon projet.
Voici mon manifest.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>
Erreur affiche cette ligne:
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
Si j'ai fait un commentaire/suppression de cette action sur le slogan, du projet se construit bien, mais il est nécessaire pour l'
GCM
et je ne peux pas l'enlever.Comme vous le voyez, les journaux, L'erreur ne se produit à la main le fichier de manifeste, se produit à l' /build/intermédiaires/manifests/full/debug/AndroidManifest.xml
Essayé de nettoyer, la reconstruction de, la désactivation instantanée exécuter. Est-il une solution?
Les Journaux D'Erreur:
/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
Réponses
Trop de publicités?Vous avez mal la balise. La nouvelle AAPT (AAPT2) maintenant déclenche une erreur sur ce point.
À partir de la documentation ici: https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html
Les changements de comportement lors de l'utilisation de AAPT2
Pour améliorer les ressources supplémentaires de traitement, Android plugin 3.0.0 permet AAPT2 par défaut. Bien que AAPT2 doit immédiatement travailler avec des projets plus anciens, cette section décrit quelques-uns des changements de comportement que vous devez être conscients de.
Élément hiérarchies dans le manifeste Android
Dans les versions précédentes de AAPT, les éléments imbriqués dans incorrecte des nœuds dans le manifeste Android sont soit ignorés, soit un avertissement. Par exemple, considérons l'exemple suivant:
<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>
Les versions précédentes de AAPT voudrais simplement ignorer la balise mal placée. Cependant, avec AAPT2, vous obtenez l'erreur suivante:
AndroidManifest.xml:15: error: unknown element <action> found.
Pour résoudre le problème, assurez-vous que votre manifeste éléments sont correctement imbriqués. Pour plus d'informations, lire le fichier de Manifeste de la structure.
Placez le contenu de l'action dans le filtre d'intention comme ci-dessous, conformément à la structure du fichier Manifest
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
</intent-filter>
Afin de résumer et simplifier: vous devriez juste vous concentrer sur vos principales AndroidManifest.xml fichier et vérifier s'il se conforme strictement à l'ordre, aussi bien que l'imbrication de balises XML comme décrit dans https://developer.android.com/guide/topics/manifest/manifest-intro.html. Sinon, l'IDE permettra d'ouvrir le niveau de débogage AndroidManifest.xml montrant beaucoup de message d'erreur à chaque fois que vous essayez de nettoyer/construire le projet et de vous confondre!
Il suffit de renommer votre fichier manifeste comme suit: AndroidManifest.xmlold, puis de créer un nouveau fichier XML et de donner son nom: AndoridManifest.xml. Ensuite, copiez simplement le contenu de l'ancien fichier après avoir supprimé la ligne avec balise. Construire> Nettoyer le projet, puis à nouveau Exécuter> Application de débogage. Ensuite, le problème sera disparu.