Android. Внутренний элемент должен быть ссылкой на ресурс или пустой

Сведения об ошибке

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.

Файл ресурсов

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

Среда сборки

  • Android Studio 3.1.4
  • minSdkVersion = 21
  • targetSdkVersion = 28
  • compileSdkVersion = 28
  • buildToolsVersion = "28.0.2"

Ответы

Ответ 1

При объявлении id в ресурсах тело должно быть пустым

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

Для получения дополнительной информации, пожалуйста, посмотрите на ссылку ниже

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

Итак, как сказал Оливер Маньяса, это должно быть так, как показано ниже

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

Ответ 2

У меня была аналогичная проблема после обновления до Android Studio 3.2.1

Ошибка указывала на этот элемент в файле ids.xml

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

Как упоминал пользователь Sangeet Suresh, я изменил его на

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

Это определило проблему.

Ответ 3

Всем остальным, кто все еще ломает голову, чтобы найти решение для этого, создайте ids.xml внутри src/main/res/values с содержимым, похожим на следующее (но не забудьте обновить его с идентификаторами, для которых вы видите ошибки ):

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

Теперь Android Studio выдаст вам ошибку для явных значений, и если эти значения поступают из какой-то библиотеки, которую вы используете, вы не сможете внести изменения в промежуточный файл, поэтому вместо этого измените это здесь, и при объединении вашего кода Android Studio заботится о Это.

Ответ 4

В вашем файле ресурсов удалите закрывающий тег плюс тело ie Удалить "tv_deviceName",

и пусть ваш файл ресурсов будет выглядеть так:

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

Ответ 5

У меня была ошибка ниже

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

В моем случае я создал новый тестовый проект и удалил панель инструментов и fab из файла activity_main.xml, но они также были в файле ids.xml. После удаления обоих идентификаторов из файла ids.xml я смог запустить. В вашем файле ids.xml у вас может быть много идентификаторов, но, поскольку я создал новый проект, значит, он не имеет идентификаторов.

enter image description here

На скриншоте выше вы можете увидеть точное местоположение файла.

Ответ 7

Для меня это на самом деле не удалось, потому что новые версии Gradle. Я уверен, что некоторые плагины, которые я использую, несовместимы с новейшими Gradle. Я закончил с успешной сборкой, имея следующие версии:

Файл gradle-wrapper.properties:

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

файл build.gradle

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

EDIT:

Поскольку мы хотим использовать версии 3.2. +, Это не надежное решение.

В итоге я создал новый файл ids.xml и переопределил все конфликтующие значения.

Пример файла 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>