2011/09/30
Android Project で res を使う Library を作る
(参考:Android Project で Is Library を使う場合、res の管理に注意)
では、どのようにすれば良いのかというと、Android Developers の Managing Projects に
Use prefixes to avoid resource conflictsと書かれています。
To avoid resource conflicts for common resource IDs, consider using a prefix or other consistent naming scheme that is unique to the project (or is unique across all projects).
つまり、Resource を定義するときに、他と被らないようなプレフィックスをつけるとか、特殊な名前のつけ方を検討するとかしましょう。ってことのようです。
やり方はいろいろあると思うのですが、手っ取り早いのはパッケージ名(ネームスペース)を使っちゃう方法ではないかと思いますので、以下にその方法を書いておきたいと思います。
- File -> New -> Android Project
ダイアログが開くので、情報を入力。このとき、Create Activity のチェックは外しておく
- AndroidManifest.xml を開いて
Define an <application> tag in the AndroidManifest.xml のチェックを外す
- res 以下のファイルは、
ファイルを右クリック -> Refactor -> Rename
main.xml -> com_kokufu_lib_main.xml
のようにパッケージ名を含めた名前に変更します。
res ディレクトリのファイルは、そのタイプによって扱いが変わるので注意が必要です。
- ファイル名がリソース名になるタイプ
このタイプは、ファイル名を com_kokufu_lib_main.xml のようにパッケージ名を含めた形に変更します。このとき、名前の区切り文字は、.(ピリオド)ではなく_(アンダーバー)でないとうまくいきません。
このタイプのリソースは以下のようなものがあります。- drawable
- layout
- タグネーム等がリソース名になるタイプ
このタイプは、XMLファイル内のタグネームがリソース名になります。
values ディレクトリ以下におくようなファイルです。
例えば、以下のような strings.xml ファイルの場合、各 string につける名前にパッケージ名をつけてやります。
この名前には.(ピリオド)を使っても大丈夫ですが、リソース名としては、_(アンダーバー)に勝手に変換されたものが使用されます。
なので、最初から_(アンダーバー)を使用しておいた方が混乱しなくて良いでしょう。
strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="com_kokufu_lib_hello">Hello World!</string> <string name="com_kokufu_lib_app_name">Lib</string> </resources>
R.java
package com.kokufu.lib; public final class R { public static final class attr { } public static final class drawable { public static final int com_kokufu_lib_icon=0x7f020000; } public static final class layout { public static final int com_kokufu_lib_main=0x7f030000; } public static final class string { public static final int com_kokufu_lib_app_name=0x7f040001; public static final int com_kokufu_lib__hello=0x7f040000; } }
という感じで、リソースが定義されているので、これらがユニークになるよう名前を付けてやれば良いというわけです。
- ファイル名がリソース名になるタイプ
- あとは、普通にライブラリを作成する手順です。
ライブラリを作成して、Properties -> Android
Is Libary にチェックを入れておきます。
- ライブラリを使用する方のプロジェクトは、同じ画面で Add を押して、選択すればオッケーです。
0 件のコメント:
コメントを投稿