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 у вас может быть много идентификаторов, но, поскольку я создал новый проект, значит, он не имеет идентификаторов.
На скриншоте выше вы можете увидеть точное местоположение файла.
Ответ 6
То же самое здесь, в моем случае, тогда я удаляю код из файла ids.xml. введите описание изображения здесь
Ответ 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>