web-dev-qa-db-ja.com

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"
37
young

リソースで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>
68
Sangeet Suresh

Android St​​udio 3.2.1にアップグレードした後、同様の問題が発生しました

エラーはids.xmlファイルでこのアイテムを指していました

<item name="mnuActivate" type="id">Activation</item>

ユーザーが述べたようにSangeet Sureshに変更しました

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

これで問題が修正されました。

13
dna

これに対する解決策を得るために頭をかき回している他のすべての人は、次のような内容で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 St​​udioは明示的な値に対してエラーを表示します。これらの値が使用しているライブラリからのものである場合、中間ファイルを変更することはできないため、代わりにここで、 code Android studioが処理します。

10
Sangam Pandey

リソースファイルで、終了タグと本文を削除します。つまり、「tv_deviceName」を削除します

リソースファイルを次のようにします。

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

私にとっては、新しい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>
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がありません。

enter image description here

上記のスクリーンショットでは、正確なファイルの場所を確認できます。

0
GSK