错误详细信息
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>
构建环境
答案 0 :(得分:62)
在资源中声明id时,正文应为空
<item
type="id"
name="id_name" />
有关更多信息,请在下面的链接上查看
https://developer.android.com/guide/topics/resources/more-resources#Id
因此,如 Oliver Manyasa 所述,应如下所示
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="tv_deviceName" type="id"/>
</resources>
答案 1 :(得分:12)
升级到Android Studio 3.2.1后,我遇到了类似的问题
错误指向ids.xml文件中的此项
<item name="mnuActivate" type="id">Activation</item>
如用户 Sangeet Suresh 所述,我将其更改为
<item name="mnuActivate" type="id" />
解决了这个问题。
答案 2 :(得分:10)
对于仍在努力解决问题的所有其他人,请在ids.xml
内创建src/main/res/values
,其内容类似于以下内容(但请确保使用您的ID更新它看到错误):
<?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照顾它。
答案 3 :(得分:5)
在资源文件上,删除结束标记和正文,即删除“ tv_deviceName”
,然后让您的资源文件如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="tv_deviceName" type="id"/>
</resources>
答案 4 :(得分:2)
我只是在res/xml/values
中使用空标签(例如
<?xml version="1.0" encoding="utf-8"?>
<resources>
...
<item type="id" name="icon" />
...
</resources>
做到了!
答案 5 :(得分:1)
对我来说,这实际上是失败的,因为新的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'
}
编辑:
由于我们现在要使用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>
答案 6 :(得分:0)
我遇到了以下错误
error: <item> inner element must either be a resource reference or empty.
就我而言,我创建了新的测试项目,并从activity_main.xml文件中删除了工具栏和fab,但它们也都在ids.xml文件中。从ids.xml文件中删除两个ID之后,我便可以运行了。在您的ids.xml文件中,您可能有很多ID,但是当我创建一个新项目时,它没有ID。
在上面的屏幕截图中,您可以看到确切的文件位置。
答案 7 :(得分:0)
在values
文件夹中,我双击了ids.xml
文件,这是引起问题的原因
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="roll_button" type="id">rollButton</item>
</resources>
我尝试了一些投票表决的答案:
<item name="roll_button" type="id">
但是我收到一个错误消息:
The element type "item" must be terminated by the matching end-tag "</item>".
为了解决这个问题,我只添加了匹配的结束标记:
<item name="roll_button" type="id"></item>
更新
我是Kotlin
的新手,所以我刚发现<item name="roll_button" type="id" />
并没有意识到>
最后需要正斜杠去结束{ {1}}。如果您不包括它,那么您将得到我得到的错误,但是如果您包括了它,则他接受的答案有效。