リソース中で使えないシンボル名

最近リソースを編集しているときに珍しいエラーに遭遇したのでそれをメモしておきます。

それは文字列リソース(strings.xml)を編集しているときに起こりました。

以下が実際のstrings.xmlの内容です。

<string name="new">New</string>

何の変哲もないように見えますが、次のようなエラーが発生しました。

Description    Resource    Path    Location    Type
error: invalid symbol: 'new'    strings.xml    /MyApp/res/values    line 12    
Android AAPT Problem

文字列の名前を"new"にしたのが悪かったみたいです。

なぜこのようなエラーが出るかというとR.javaのIDの生成方法に原因があるようです。

問題のリソースはR.javaでは次のようなIDとして定義されます。

public final class R {
    public static final class string {
        public static final int new = 0x7f050003;
    }
}

ID名にJavaのキーワードが入ってしまうから当然エラーになります。なのでcontinuepublicのような名前も使うことはできません。

リソース名にはJavaの変数名に違反しない名前をつけなくてはなりません。

関連項目
プライバシーポリシー