いつもの処理はライブラリやjarファイルで使い回し – Android

新規プロジェクト作成の度に、前のプロジェクトから便利ソースをコピペして改編して…みたいな作業をしてるとものすごく効率悪いぽいので、ライブラリプロジェクトを作成しました。

ついでにjarファイルもちょいちょい書き出せば環境が違っても使えます。

いざ!

環境

ADTのBuild: v21.1.0-569685。
最近のADTはいきなり使えてすごく便利!

ライブラリプロジェクト作成

ライブラリプロジェクトって呼び名がいいかどうかはわからぬ。
とりあえず作ってみましょう。

まずは通常のAndroidプロジェクト作成と同じ手順
File → New → Android Application Project → New Android Application

アプリ名などは同じ。
Target SDKは実際に使うプロジェクトと揃えておいたほうが無難そう。
なんせ最新がいいとは思うけど。
ほんで「Next >」。

違うところはこのへんから。

lib_1

「Create custom launcher icon」「Create activity 」のチェックを外す。
外さないと取り返しがつかない訳じゃないけど、アイコンもActivityも要らん。

そして「Mark this project as a library」にチェックを入れる。
これも取り返しがつかない訳でもなんでもない!

保存場所とかワーキング摂津は好きにしなはれや。
ほんで「Finish」でプロジェクト作成。

「Package Explorer」で作ったプロジェクト名で右クリックして「Properties」選択。
開いたウィンドウで「Android」を選択。

下のほうの「Library」の中の「is Library」にチェックが入ってるはず。

lib_2

これがこのプロジェクトがライブラリです!って主張する場所。

プロジェクト作成時の「Mark this project as a library」へのチェックはここに影響してるっぽい。
なので、あとからここにチェックを入れて、ビルドしなおせばライブラリ化できます。

今度は「AndroidManifest.xml」を開いて「[A]Application」タブを選択。
最初にある「Define an <application> tag in the AndroidManifest.xml」の前のチェックを外す。

lib_3

XML表示で確認するとapplicationタグが消えて、manifestタグとuses-sdkタグだけになってるはず。

ライブラリのプロジェクトに最低限必要な設定は完了。
src以下に適当にフォルダを作って、いろんなプロジェクトで使いたいクラスファイルを入れていってください。

ライブラリプロジェクトを参照

今度は「Package Explorer」でライブラリを使いたいプロジェクトのプロジェクト名で右クリックして「Properties」選択。
同じように開いたウィンドウで「Android」を選択。

今度は「Library」の中の「Add」を選択。
ライブラリプロジェクトの名前が候補に挙がるはずなので選択。
「Library」のリストに表示されます。

lib_4

「Package Explorer」の「Android Dependencies」にAddしたライブラリのjarファイルが表示されます。

lib_5

この状態になればライブラリの各クラスをインポートできます。

Addする対象にライブラリプロジェクトが表示されないとしたら、
・「Mark this project as a library」に後からチェックを入れた
・プロジェクトの位置が遠すぎて見つからない
などが考えられます。

後からチェックを入れた場合は一度ビルドしなおすとかすれば多分大丈夫。
なんせライブラリプロジェクトの「bin」フォルダ以下にjarファイルができればオッケーなはずです。

jarファイルの書き出し

次は違う環境でも使えるようにjarファイルを書きだしてみます。
これも「bin」フォルダのやつでもいい気もしますが。どうなんだろ?

今度は「Package Explorer」でライブラリを使いたいプロジェクトのプロジェクト名で右クリックして「Export」を選択。
「Java」の「JAR file」を選択して「Newxt >」

lib_6

次の画面がこれ。

 

lib_7

書きだすリソースの選択画面が表示されますが、「AndroidManifest.xml」は必ず除外しましょう。
ヤバいらしいです。

その他、不要なものはどんどんチェックを外してください。
resの内容は基本的には書き出して使えないようなので、結果src内しか要らないような?

あとは書きだす場所とjarファイル名を設定して「Finish」!

対象のプロジェクトのlibsに突っ込めば使えます。

lib_8

そんなこんなです!

 参考記事

JARファイルを作って、別のプロジェクトで使う
http://techbooster.jpn.org/andriod/environment/2768/

AndroidでJARライブラリを作成
http://n2works.net/column/pickup/id/77

Android Tips #13 ライブラリプロジェクトを活用する
http://dev.classmethod.jp/smartphone/android-tips-13-library-project/
→スタイルの調整方法などの記載あり

Android プロジェクトを jarライブラリ化する
http://kokufu.blogspot.jp/2011/06/android-jar.html
→jarファイルでのresの扱いについて詳細あり