错误:<item>内部元素必须是资源引用或为空?

时间:2018-10-15 07:02:37

标签: android android-layout android-sdk-tools android-gradle-3.0

最近我已经将项目升级到Android Studio 3.2.1,Gradle 4.6,Gradle插件4.6和tagetSDKVersion28。

但是我在合并的values.xml文件中遇到错误-

错误:内部元素必须是资源引用或为空。

合并的values.xml中引起问题的行-

    <item name="date_picker_day" type="id">false</item>
    <item name="date_picker_header" type="id">false</item>
    <item name="date_picker_month" type="id">false</item>
    <item name="date_picker_month_and_day" type="id">false</item>
    <item name="date_picker_year" type="id">false</item>
    <item name="day_picker_selected_date_layout" type="id">false</item>
    <item name="done" type="id">false</item>
    <item name="month_text_view" type="id">false</item>
    <item name="animator" type="id">false</item>

确切的错误日志-

Android资源编译失败 输出:C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ incremental \ mergeStageDebugResources \ merged.dir \ values \ values.xml:6866:错误:内部元素必须是资源参考或为空。 C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ incremental \ mergeStageDebugResources \ merged.dir \ values \ values.xml:6881:错误:内部元素必须是资源引用或空的。 C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ incremental \ mergeStageDebugResources \ merged.dir \ values \ values.xml:6882:错误:内部元素必须是资源引用或空的。 C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ incremental \ mergeStageDebugResources \ merged.dir \ values \ values.xml:6883:错误:内部元素必须是资源引用或空的。 C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ incremental \ mergeStageDebugResources \ merged.dir \ values \ values.xml:6884:错误:内部元素必须是资源引用或空的。 C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ incremental \ mergeStageDebugResources \ merged.dir \ values \ values.xml:6885:错误:内部元素必须是资源引用或空的。 C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ incremental \ mergeStageDebugResources \ merged.dir \ values \ values.xml:6886:错误:内部元素必须是资源引用或空的。 C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ incremental \ mergeStageDebugResources \ merged.dir \ values \ values.xml:6887:错误:内部元素必须是资源引用或空的。 C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ incremental \ mergeStageDebugResources \ merged.dir \ values \ values.xml:6896:错误:内部元素必须是资源引用或空的。 C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ incremental \ mergeStageDebugResources \ merged.dir \ values \ values.xml:7419:警告:忽略具有未知名称空间'的元素'g' http://schemas.android.com/apk/res/android'。

命令:C:\ Users \ 1258503.gradle \ caches \ transforms-1 \ files-1.1 \ aapt2-3.2.1-4818971-windows.jar \ 074ce88e9379d4536b62c1cf1690927a \ aapt2-3.2.1-4818971-windows \ aapt2。 exe编译-旧版\         -o \         C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ res \ merged \ stage \ debug \         C:\ AmrutData \ Workspace \ Q4 \ Mobile-Quitters-Circle-Android \ app \ build \ intermediates \ incremental \ mergeStageDebugResources \ merged.dir \ values \ values.xml 守护进程:AAPT2 aapt2-3.2.1-4818971-windows守护进程#0

我确定这些不是我的值,并且大多数是来自类com.android.datetimepicker.date.DatePickerDialog的,而且由于这些是库中的而不是我的项目中的,所以我没有得到如何解决此问题的方法。 / p>

请协助

5 个答案:

答案 0 :(得分:3)

我只是替换以下代码

<item type="id" name="checkColor">false</item>

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

答案 1 :(得分:2)

解决方案是: 在res / values文件夹中创建一个名为ids.xml的文件,并将以下内容放入

`<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="sos_key_shift_state" type="id"/>
<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>`

这解决了我的问题...

答案 2 :(得分:2)

经过大量搜索,我发现这是导致此问题的我的图书馆之一。我使用的库与gradle 3.2.1不兼容,这导致了编译问题。

答案 3 :(得分:1)

在其他答案中,您需要确保item元素没有引发异常的内部值。

在某些情况下,这些文件可能来自外部库,因此无法直接修改,在这种情况下,请在res / values文件夹中创建一个名为ids.xml的文件。

在这里您可以覆盖任何引起问题的项目,对我来说,我添加了以下内容来解决问题中所述的问题。

   <uml:Model xmi:type="uml:Model" name="EA_Model" visibility="public">
      <packagedElement xmi:type="uml:Package" xmi:id="EAPK_9E00FA41_6F28_4e47_9AE6_2A04EE92CDBB" name="sequenceD" visibility="public">
         <packagedElement xmi:type="uml:Collaboration" xmi:id="EAID_AC000001_6F28_4e47_9AE6_2A04EE92CDBB" name="EA_Collaboration1" visibility="public">
         </packageElement>
      </packageElement>
   </uml:Model>

enter image description here

答案 4 :(得分:1)

在项目的res / values文件夹下创建一个名为ids.xml的文件,该文件应具有

<?xml version="1.0" encoding="utf-8"?><resources>
<item name="animator" type="id"/>
<item name="date_picker_day" type="id" />
<item name="date_picker_header" type="id" />
<item name="date_picker_month" type="id" />
<item name="date_picker_month_and_day" type="id" />
<item name="date_picker_year" type="id" />
<item name="day_picker_selected_date_layout" type="id" />
<item name="done" type="id" />
<item name="month_text_view" type="id" />
<item name="reference" type="id" /></resources>