プラグイン

home/pluginにディレクトリを掘り、その中にplugin.classを置くか若しくは決められたManifest情報を持っているjarファイルを置くと、 そのプラグインは起動後に動的にロードされます。
プラグインの実体はJavaのクラスとなっており、決められたメソッドを実装している必要があります。

home
 +-plugin
   +-macotakara
       +-alias.txt
       +-siteinfo.txt
       +-univsensor.jar

プラグインを用意するには二通りの方法があり、一つはJavaのclassファイルを裸で置く方法、
もう一つは特定のManifest情報を持ったjarファイルを置く方法です。
ただし裸の.classファイルを置く方法は過去互換性の為だけに残されていて、jarの使用を強く推薦します。
裸のクラスファイルを用いた場合はただ一つのクラスファイルしか使用することが出来ず、
ファイルが別れてしまうので内部クラスすら使用することが出来ません。

・裸の.classファイルを置く場合

デフォルトではロードされるクラスファイルはplugin.classですが、
alias.txtというファイルを用意して次のように指定すれば
読み込むクラスファイルを指定することが出来ます。

plugin,UniversalHLSensor.class

この例ではplugin.classの代わりにUniversalHLSensor.classがロードされます。

・jarファイルを置く場合

デフォルトでロードされるjarファイルはplugin.jarですが、
同じようにalias.txtで指定することが出来ます。

plugin,univsensor.jar

jarをプラグインとして認識させるには、そのjarファイルが「Plugin-Main-Class」というManifest情報を持っていなければなりません。
Plugin-Main-Classで指定されたクラスがプラグインとして自動的にロードされます。
Manifest情報を追加するにはまず適当なテキストエディタで次のような一行が書かれたテキストファイルを作成し、
jarに入れるクラスファイル(コンパイル済み)があるディレクトリに入れて下さい。
ファイル名は適当で構いませんが、ここでは「manifest」とします。

Plugin-Main-Class: UniversalHLSensor

次にmanifestファイルを置いたディレクトリへ移動し、jarツールを使って次のようにjarファイルを作成します。

% jar cvfm univsensor.jar manifest UniversalHLSensor.class

これでjarファイルは完成です。

alias.txtに「plugin」が指定されていなかった場合、偽林檎は最初にplugin.jarが存在するかどうかを調べ、
見つからなければplugin.classを探し、それも無ければそのプラグインは諦めます。

プラグインでJNIを使う方法は下記の通り。
・ライブラリファイルはbundle形式でビルドする。→方法
・ファイル名をlib(ライブラリ名).jnilibとする。
・ライブラリファイルをjarファイルと同じディレクトリに置く。
これでSystem.loadLibrary("ライブラリ名");とすればJNIライブラリが読み込まれる。


■getPluginType()

アプリケーションはプラグインをロードする前にこのメソッドを呼び出して種類を調べます。
プラグインは予め決められたタイプ指定文字列を返す必要があり、本体側でサポートされていないタイプが指定された場合はロードされません。
省略は不可能です。
現時点でのタイプ指定文字列は以下の通りです。
タイプ指定文字列種類
hlsensorヘッドラインセンサ
shioriSHIORI 追加モジュール
makotoMAKOTO 追加モジュール


public static String getPluginType();

■getPluginName()

アプリケーションはプラグインをロードする前にこのメソッドを呼び出して、プラグインの名前を取得します。
ここで返された名前は主に環境設定パネル内のプラグインリストに表示されます。
省略は不可能です。

public static String getPluginName();