58 votes

Android - L'élément interne doit être soit une référence à une ressource, soit vide.

Détails de l'erreur

AGPBI: {"kind":"error","text":"error: \u003citem\u003e inner element must either be a resource reference or empty.","sources":[{"file":"...\\app\\src\\main\\res\\values\\ids.xml","position":{"startLine":2,"startColumn":4,"startOffset":57,"endColumn":61,"endOffset":114}}],"original":"","tool":"AAPT"}
:app:mergeDebugResources
Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
:app:mergeDebugResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details.

Dossier de ressources

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="tv_deviceName" type="id">tv_deviceName</item>
</resources>

Environnement de construction

  • Android Studio 3.1.4
  • minSdkVersion = 21
  • targetSdkVersion = 28
  • compileSdkVersion = 28
  • buildToolsVersion = "28.0.2" (en anglais)

0 votes

Même chose dans mon cas alors je supprime le code du fichier ids.xml . Entrez la description de l'image ici

103voto

Sangeet Suresh Points 1386

Lors de la déclaration de l'id dans les ressources, le corps doit être vide.

<item
    type="id"
    name="id_name" />

Pour plus d'informations, veuillez consulter le lien ci-dessous.

https://developer.Android.com/guide/topics/resources/more-resources#Id

Alors que Oliver Manyasa mentionné, il devrait être comme suit

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="tv_deviceName" type="id"/>
</resources>

1 votes

Je connais ce bug, si le fichier xml est dans un fichier aar, comment résoudre ce problème ?

0 votes

@yuchangfu vous pouvez remplacer la ressource dans votre fichier pour résoudre ce problème.

22voto

user1134670 Points 31

J'ai eu un problème similaire après la mise à jour vers Android Studio 3.2.1.

L'erreur pointait vers cet élément dans le fichier ids.xml

<item name="mnuActivate" type="id">Activation</item>

Comme mentionné par l'utilisateur Sangeet Suresh je l'ai changé en

<item name="mnuActivate" type="id" />

Cela a réglé le problème.

7 votes

Comment avez-vous modifié le fichier ? Il est régénéré automatiquement.

11voto

Sangam Pandey Points 1

Pour tous les autres qui se grattent encore la tête pour trouver la solution, il s'agit de créer ids.xml à l'intérieur de src/main/res/values avec un contenu similaire à ce qui suit (mais assurez-vous de le mettre à jour avec les identifiants pour lesquels vous voyez des erreurs) :

<?xml version="1.0" ?>
<items>
    <item name="animator" type="id"/>
    <item name="date_picker_day" type="id"/>
    <string name="deleted_key"/>
</items>

Maintenant, Android Studio vous donnera une erreur pour les valeurs explicites et si ces valeurs proviennent d'une bibliothèque que vous utilisez, vous ne pouvez pas faire de changement dans le fichier intermédiaire, donc à la place, changez ici et pendant la fusion de votre code, Android Studio s'en occupe.

6voto

Oliver Manyasa Points 51

Dans votre fichier de ressources, supprimez la balise de fermeture et le corps, c'est-à-dire supprimez "tv_deviceName".

et que votre fichier de ressources soit comme :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="tv_deviceName" type="id"/>
</resources>

3voto

GSK Points 1322

J'ai eu l'erreur suivante

error: <item> inner element must either be a resource reference or empty.

Dans mon cas, j'ai créé un nouveau projet de test et j'ai supprimé la barre d'outils et le fab du fichier activity_main.xml, mais ils étaient également dans le fichier ids.xml. Après avoir supprimé les deux ID du fichier ids.xml, j'ai pu m'exécuter. Dans votre fichier ids.xml vous pouvez avoir beaucoup d'ID mais comme j'ai créé un nouveau projet, il n'a pas d'ID.

enter image description here

Dans la capture d'écran ci-dessus, vous pouvez voir l'emplacement exact du fichier.

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