web-dev-qa-db-fra.com

Android - L'élément interne doit être une référence de ressource ou 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.

Fichier 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"
37
young

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

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

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

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

Donc, comme Oliver Manyasa mentionné, il devrait être comme ci-dessous

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

J'ai eu un problème similaire après la mise à niveau 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é pour

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

Cela a résolu le problème.

13
dna

Pour tous les autres qui se grattent encore la tête pour trouver la solution, créez ids.xml à l'intérieur de src/main/res/values avec un contenu similaire au suivant (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 indiquera une erreur pour les valeurs explicites. Si ces valeurs proviennent d’une bibliothèque que vous utilisez, vous ne pouvez pas modifier le fichier intermédiaire. Vous devez donc le modifier ici et lors de la fusion de vos fichiers. code Android studio en prend soin.

10
Sangam Pandey

Dans votre fichier de ressources, supprimez la balise de fermeture et le corps i.e Supprimez "tv_deviceName".

et laissez votre fichier de ressources être comme:

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

Pour moi, cela échouait à cause des nouvelles versions de Gradle. Je suis à peu près sûr que certains plugins que j'utilise ont des incompatibilités avec les dernières versions. J'ai fini avec succès avec les versions suivantes:

fichier gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.Zip

fichier build.gradle

 dependencies {
   classpath 'com.Android.tools.build:gradle:3.0.1'
 }

MODIFIER:

Comme nous voulons utiliser les versions 3.2. +, Ce n'est pas une solution fiable.

Ce que j'ai fini par créer, c'est créer un nouveau fichier ids.xml et remplacer toutes les valeurs en conflit.

exemple de fichier ids.xml:

<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <item name="cc_card" type="id"/>
        <item name="cc_ccv" type="id"/>
        <item name="cc_entry" type="id"/>
        <item name="cc_entry_internal" type="id"/>
        <item name="cc_exp" type="id"/>
        <item name="cc_form_layout" type="id"/>
        <item name="cc_four_digits" type="id"/>
        <item name="cc_Zip" type="id"/>
        <item name="text_helper" type="id"/>
    </resources>
0
Tomas Kasnauskas

J'ai eu l'erreur ci-dessous

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

Dans mon cas, j'ai créé un nouveau projet de test et supprimé la barre d'outils et la fab du fichier activity_main.xml, mais ces fichiers se trouvaient également dans le fichier ids.xml. Après avoir supprimé les deux identifiants du fichier ids.xml, j'ai pu exécuter. Dans votre fichier ids.xml, vous pouvez avoir de nombreux identifiants, mais lorsque j'ai créé un nouveau projet, il n'a pas d'identifiant.

enter image description here

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

0
GSK