Android 错误:<;项目>;内部元素必须是资源引用或为空?
最近,我将我的项目升级到了Android Studio 3.2.1、Gradel 4.6、Gradle插件4.6和tagetSDKVersion 28 但是,我发现merged values.xml文件中存在以下错误- 错误:内部元素必须是资源引用或为空。 导致问题的merged values.xml中的行-Android 错误:<;项目>;内部元素必须是资源引用或为空?,android,android-layout,android-sdk-tools,android-gradle-3.0,Android,Android Layout,Android Sdk Tools,Android Gradle 3.0,最近,我将我的项目升级到了Android Studio 3.2.1、Gradel 4.6、Gradle插件4.6和tagetSDKVersion 28 但是,我发现merged values.xml文件中存在以下错误- 错误:内部元素必须是资源引用或为空。 导致问题的merged values.xml中的行- <item name="date_picker_day" type="id">false</item> <item name="date_pi
<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>
false
假的
假的
假的
假的
假的
假的
假的
假的
准确的错误日志-
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\mediates\incremental\mergestatedebugresources\merged.dir\values\values.xml:6882:错误:内部元素必须是资源引用或为空。
C:\AmrutData\Workspace\Q4\Mobile Quitters Circle Android\app\build\mediates\incremental\mergestatedebugresources\merged.dir\values\values.xml:6883:错误:内部元素必须是资源引用或为空。
C:\AmrutData\Workspace\Q4\Mobile Quitters Circle Android\app\build\mediates\incremental\mergestatedebugresources\merged.dir\values\values.xml:6884:错误:内部元素必须是资源引用或为空。
C:\AmrutData\Workspace\Q4\Mobile Quitters Circle Android\app\build\mediates\incremental\mergestatedebugresources\merged.dir\values\values.xml:6885:错误:内部元素必须是资源引用或为空。
C:\AmrutData\Workspace\Q4\Mobile Quitters Circle Android\app\build\mediates\incremental\mergestatedebugresources\merged.dir\values\values.xml:6886:错误:内部元素必须是资源引用或为空。
C:\AmrutData\Workspace\Q4\Mobile Quitters Circle Android\app\build\mediates\incremental\mergestatedebugresources\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\mediates\incremental\mergeStageDebugResources\merged.dir\values\values.xml:7419:warn:忽略命名空间未知的元素“g”
命令:C:\Users\1258503.gradle\caches\transforms-1\files-1.1\aapt2-3.2.1-4818971-windows.jar\074CE88E9379D453662C1CF1690927A\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\mediates\incremental\mergeStageDebugResources\merged.dir\values\values.xml
守护程序:AAPT2 AAPT2-3.2.1-4818971-windows守护程序#0
我确信这些不是来自我的值,它们中的大多数来自类com.android.datetimepicker.date.DatePickerDialog
,我不知道如何修复这些,因为它们来自库,而不是我的项目
请协助解决方案是:
在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>`
`
`
这解决了我的问题…经过大量搜索,我发现是我的一个库导致了这个问题。我使用的库与gradle 3.2.1不兼容,这导致了编译中的问题。我只是回复以下代码
<item type="id" name="checkColor">false</item>
false
到
另一个答案指出,您需要确保引发异常的item元素没有内部值 在某些情况下,这些文件可以来自外部库,因此无法直接修改,在这种情况下,请在res/values文件夹中创建一个名为ids.xml的文件 在这里,您可以覆盖导致问题的任何项目,对于我来说,我添加了以下内容以克服问题中所述的问题
<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>
在项目的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>
我认为false是一个布尔值,而不是id值!!!您可以添加更多详细信息吗?@Farrokh这些值不是来自我的项目。这些来自库项目,我无法控制。如果您确定,请尝试删除库及其用法,重新编译您的项目并检查错误是否存在,然后再次添加库(如果未发现错误)我遇到类似于以下的错误,我通过将java版本更改为1_8来修复它。@NoBody我的java版本已经是1.8了,还记得是哪个库吗?我也有同样的问题。你是如何解决这个问题的?
<?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>