Androidアプリメモ/メモ6
外部ライブラリを作ってみたい
Androidアプリをいくつか作るにあたって、アプリAとアプリBで共通して使うような部分が今後出てくるだろうと想像されます。それどころか、自分の作るアプリなんておよそ内容が似てきちゃうのはよくあることですので、何度も使いまわされる機能はたくさん出てくることでしょう。「同じことを二度しない」というプログラマの省力姿勢を一応持っているので、同じ機能はライブラリにまとめておいて、アプリAもアプリBもライブラリの実装を呼び出して問題を解決しようと思います。
eclipseの操作に不慣れなもので、プログラムのリンク構造がどうなっているのかわかっていなかったので、手間取った内容を以下にメモしておきます。
Package Explorerでプロジェクトを右クリックすれば何かそれっぽいのが出ると思いたち、出てきた「Build Path」のうち「Add Library」を選択しました。「User Library」に自分の作ったパッケージを追加してリンクしてみました。
java.lang.NoClassDefFoundError
デバッグするとクラス定義がない旨お達しがくだりました。どうも既存のclassファイルにリンクする方法はダメみたいです。そういえば、実機でデバッグしたら、アプリAとライブラリが別々にインストールされてました。両者は別のアプリと判断されて、お互いにクラスを呼び出すことはできなくなります。
というわけでソースコードをビルドターゲットに含めて、一緒にコンパイルして同じapkファイルにまとめる方法をとることになりました。
先ほどの「Build Path」から「Link Source」を選択してダイアログを開いて、ライブラリのソース用のフォルダ(src)を選んで追加するとどうやらうまく処理されたようです。アプリBを作る時も同じ手順を踏めばいいはずなので、そのときのためのメモです。