androidandroid-layoutandroid-gradle-pluginaapt

Android - Inner element must either be a resource reference or empty


Error Details

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.

Resource File

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

Build Environment


Solution

  • When declaring id in resources, the body should be empty

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

    For more info please have a look on below link

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

    So as Oliver Manyasa mentioned, it should be as below

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