ADTによるLibrary Projects

さて、Android Development Tools (ADT) 0.9.7で有効となった "Library Projects"だが、早速使ってみた。
結論としては、今まで苦労して複数のプロジェクトを関連づけしていたのが嘘のように設定が簡単で尚かつ快適だ。

設定は最新のADTドキュメント > Working with Library Projects※に書いてあるが、以下の手順で実施する。

  • ライブラリィプロジェクトの設定

複数のプロジェクトで共有したいリソースを集約したAndroidプロジェクトを作成する(私のように既にあればそれを使う)

プロジェクトは通常のAndroidプロジェクトとして作成するが今までに無い操作を一つだけ行う。

1.プロジェクトプロパティウインドウを開ける適当なビュー(パッケージエクスプローラ等。私はナビゲータ派だが)のコンテキストメニューから"プロパティ(property)"を選択
2.プロパティウインドウから"Android"プロパティグループを選択
3."is Library"をチェックして、適用
4.プロパティウインドウを閉じる

これで、このプロジェクトは"is Library"のチェックを外すまで、ライブラリィ扱いとなる。

  • ライブラリィを使用するアプリケーションプロジェクトの設定

上記のライブラリィプロジェクトを参照したい個々のプロジェクトも、必要な追加の操作は一つだけだ。昔のやり方でライブラリィプロジェクトを参照していた場合は、以下、予め解除しておく必要がある。

    • プロジェクトプロパティ>Javaのビルド・パス>プロジェクトに追加されている「ビルド・パス上に必要なプロジェクト」
    • プロジェクトプロパティ>Javaのビルド・パス>ソースに追加されている「ビルド・パス上のソースフォルダ」

余計な参照を除去した後の手順は以下の通り

1.プロジェクトプロパティウインドウを開ける適当なビュー(パッケージエクスプローラ等。私はナビゲータ派だが)のコンテキストメニューから"プロパティ(property)"を選択
2.プロパティウインドウから"Android"プロパティグループを選択
3."Library"グループの右にある「Add...」ボタンを押下して必要なライブラリィプロジェクトを追加して、適用(この選択肢には"is Library"をチェックしたプロジェクトだけが表示されるはずだ)
4.プロパティウインドウを閉じる

この操作により、ビルドパスとソースコードパスにライブラリィ・プロジェクトが自動的に追加されて、正しいビルドが可能となる。(上記の操作をすることで、手動でビルドパスを追加する作業は一切不要になる)

以上だ。

以前の無理矢理な方法では、ビルドパスでライブラリィプロジェクトの参照を設定した上で、リソースの参照を設定できないために、わざわざライブラリィプロジェクトからリソースをロードする手法を採っていたが

他パッケージ(他のapk)のリソースを読む part2

今回の機能拡張によりこの必要もなくなった。リソースから生成されたRクラスもネームスペース(Javaパッケージ)が矛盾を起こさなければ同一プロジェクトの中で複数を参照できる。また、余計なプロジェクトチェックが不要になるため、再ビルドの時間も減り、その結果としてデバッグセッションの開始までの時間もかなり短縮されるので、非常に快適だ。

なお、今回の方法で他のライブラリィプロジェクトを参照した場合、ライブラリィコードはアプリケーション中のソースコードと同じ扱いで静的にコンパイルされて、同一のパッケージ(.apk)に格納される。従って、共有ライブラリィを使う理由で一つであるサイズの抑制に関しては効果はない。大きいサイズのリソースを本当の意味で共有したい場合は、やはりパッケージ上のリソースを読込む等の工夫が必要だろう。

ライブラリィプロジェクトのサンプルがSDKと共に配布されている。こちらではライブラリィ中に定義されたアクティビティを参照する例もあり、分かり易いだろう。

TicTacToeMain - TicTacToeMain Android Developers

※残念ながらドキュメントはまだ邦訳されていないようだ。日本語ロケールになってしまう場合は、英語に変更しないとコンテンツが見つからない。