2011年1月13日木曜日

Android 文字列リソースのエラー

EclipseのAndroid Development Toolkitをアップデートしたときにはまったときのメモ

アップデート前まで正常だったプロジェクトで、strings.xmlがこのようなエラーをはくようになりビルドできなくなってしまった。


W/ResourceType(15164): Bad XML block: header size 276 or total size 18088132 is larger than data size 0
...\res\values\strings.xml:13: error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?
...\res\values\strings.xml:13: error: Unexpected end tag string



プロジェクトが壊れてしまったのかと思いあわてたが、ここの情報によると、書式文字列のチェックが厳しくなったようで、%sなどの置換部分が2個以上ある場合はそれぞれに位置を指定する必要があるらしい。

たとえば、今までこうしていたのは、

<string name="message">製品名=%s %d円です</string>


このように書き換える必要がある。

<string name="message">製品名=%1$s %2$d円です</string>


おまけ

アップデート直後にEclipseを起動すると "sdk platform tools component is missing" というエラーが出るかもしれない。その場合は、メニューから Android SDK and AVD Managerを起動してインストールされているパッケージすべてをUpdate Allしてやると復旧するようです。

0 件のコメント:

コメントを投稿