Windowsアプリケーションの開発では、よくクラスライブラリをDLLとして作成して様々なプロジェクトで使うと言うことを行いました。共通的な処理や、基本となる画面周りの定義をライブラリとして作成したものです。
残念なことに、私はJavaの世界がいまいち見えていないため、クラスライブラリをどのように作成して、それをAndroid(に限らず、Javaの世界)ではどのように使用するのかがわかりませでした。せっかくこれからアプリケーションを作成するのであれば、共通部分はライブラリとして作成したいので、調べてみました。
調べた結果、おおむね以下の通りで自作したライブラリ(JAR)をAndroidプロジェクトから参照することができました。
- ライブラリをJavaのクラスとして作成する。
- 1のクラスファイルからJarファイルを作成する。
- 2で作成したJarファイルをAndroidプロジェクトから参照する。
それぞれ順に見ていきます。
1.ライブラリをJavaのクラスとして作成する。
これは単純にクラスファイルを作成して、共通処理を記述するだけです。デザインパターンやら様々ありますが、この辺はWindowsのDLL作成するときのクラスと同じ概念で問題ないと思います。ライブラリなので、UnitTestまで行い、オールグリーンの状態が必須だと思います。
作成したソースコードはこんな感じです。
SampleCalc (適当な名前です。)
[sourcecode language="java"] public class SampleCalc {
public int add(int x, int y) {
return x + y;
}
public static int dec(int x, int y) {
return x - y;
}
} [/sourcecode]
SampleCalc に対応するテストです。
[sourcecode language="java"] public class SampleCalcTest {
@Test
public void testAdd() {
assertEquals(2, new SampleCalc().add(1, 1));
}
@Test
public void testDec() {
assertEquals(1, SampleCalc.dec(2, 1));
}
} [/sourcecode]
2.1のクラスファイルからJARファイルを作成する。
はるか昔、この業界に入りたての頃Javaの研修でjavacでビルドして…といろいろやりましたが、今はEclipse一辺倒です。従って、JARファイルの作成方法もEclipseの手順を確認しました。
- JARファイルを作成する対象のプロジェクトを右クリックし、エクスポートをクリックします。
- 表示されたエクスポート画面で、Java - JARファイルを選択します。
- JARエクスポート画面で下記の通り、エクスポート対象のリソースとエクスポート先のフォルダを選択を行い[完了]ボタンをクリックします。
ここまでで、JARファイルが指定したエクスポート先に保存されていると思います。
3.2で作成したJarファイルをAndroidプロジェクトから参照する。
あとはAndroidプロジェクトから先ほど作成したJARファイルを参照するだけです。
参照すると、次のようにライブラリとして追加され利用することができるようになります。
とりあえず、ここまでで作成したライブラリを参照して使用するところまでできました。実際に使用してみるとこんな感じです。
クラスライブラリを呼び出すAndroidのアクティビティです。
[sourcecode language="java"] public class SampleLibUse extends Activity { /* Called when the activity is first created. / @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
int value = SampleCalc.dec(10, 1);
Log.d("Sample", "10 - 1 = " + String.valueOf(value));
Toast.makeText(this, "10 - 1 = " + String.valueOf(value), Toast.LENGTH_LONG).show();
}
} [/sourcecode]
実行時のスクリーンショットはこうなります。
とりあえず、これで安心してライブラリの作成に取りかかれそうです。ちなみに、冒頭にも書きましたが、私はJavaの世界は初心者です。とりあえずライブラリの参照ができるようになりましたが、この方法がベストかどうかはわかりません。またスタンダードな方法かもわかりません。よりよい方法やこの内容が間違っている場合、ご指摘いただけるととても助かります。