2011/06/03
Android プロジェクトを jarライブラリ化する
Eclipse の Android 開発環境(ADT) には Is Library という設定があって、ソースコードのままライブラリとして利用出来ます。
ただ、この方法だと、再配布がしにくいです。
というわけで、Eclipse の Javaプロジェクトを jarライブラリ化する機能を使って、Android プロジェクトを jarライブラリ化する方法を紹介したいと思います。
2011/6/5 追記
この方法はres以下を使用するAndroidプロジェクトには使用できないようです。(いろいろ実験してみましたが無理でした。うまい方法をご存知の方は是非教えてください。)
res以下を使用したい場合は、上記の Is Library を使用することでライブラリ化することが可能です。
Is Libary の詳しい使い方は ADTによるLibrary Projects という Kazzz さんのエントリがわかりやすいです。
2011/8/12 追記
本件、Googleが公式に出来ないと発表していることがわかりました。
res を使っている場合、jarライブラリ化するのは諦めた方が良さそうです。
その辺については、Android Project で Is Library を使う場合、res の管理に注意 というエントリにまとめたので、参考にしてみてください。
res を使用しない場合は、以下の要領でjarライブラリ化可能ですが、Google が公式に認めていない以上、お勧めは出来ません。あしからず。
- 普通にライブラリ化したいAndroidプロジェクトを作ります
- プロジェクトを右クリック → エクスポート
- JAR ファイルを選択します
- 次は注意が必要です。
エクスポートするリソースに AndroidManifest.xml を入れてはいけません。あと、res は外しておいた方が良いでしょう。
resディレクトリも実質入れられません。(コメント参照)
src, genは必ず入れてください。(つまり、一回はビルドしないといけない)
出来上がったjarファイルは、適当なディレクトリに置いてビルド・パスに追加してやればオッケーです。
2 件のコメント:
図入りでよくわかりました。
文字列などをresのxmlに書いておきたいのですが、res入りでexportしても問題ないですか?
昨日はうろ覚えだったんで誤魔化して書いたのですが、res以下を使う場合はダメみたいです。
使う先のresディレクトリ以下に同じ名前のファイルがあると怒られますね。
resディレクトリはパッケージ管理されていないので、そうなるのでしょう。
あと、res以下を使用するにはContextが必要。ContextはAndroidManifest.xml に書いておく必要あり。しかし、AndroidManifest.xml も一つしか許可されないのでjarファイルに含めてはいけない。
という制限があるので、名前を特殊なもの(パッケージ名を含めるとか)にして入れておく、みたいな技も使えなさそうです。
res以下を使う場合は、Is Library を使うのがよさそうです。
というより、そのためにこのオプション出来たんでしょうね。
的確な質問ありがとうございます。
本文も変更しました。
コメントを投稿