45 votes

Erreur manifeste dans Android Studio 3.0: élément inconnu <action> a trouvé

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

40voto

Raz Points 2413

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.

16voto

djsreeraj Points 385

ajoutez ce code dans gradle.properties dans le projet racine :

 android.enableAapt2=false
 

cela a fonctionné pour moi

 root 
| 
|--gradle.properties
 

3voto

Tushar Lathiya Points 139

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>
 

1voto

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!

0voto

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X