自作のJavaクラスを使用するには¶
Androidアプリケーションで自作のJavaクラスを使用する方法を説明します。
サードパーティのJavaライブラリも同様に使用することができます。
Javaクラスを作成する¶
テスト用のJavaクラスを作成します。
今回は「C:\tmp\src」にJavaのソースコードを配置します。
C:\
└tmp
└src
└com
└example
└hello
└Hello.java
Hello.javaのソースコードは次のようになります。
package com.example.hello;
public class Hello {
public String sayHello() {
return "Hello!";
}
}
classファイルを作成する¶
javacでHelloクラスをコンパイルします。
classファイルは「c:\tmp\bin\classes」に出力します。
> cd c:\tmp\
>
> mkdir bin\classes
>
> javac -d bin\classes src\com\example\hello\Hello.java
Android SDKのクラスを使用している場合は、クラスパスにandroid.jarを追加します。
> javac -classpath "C:\Users\Public\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\platforms\android-19\android.jar" -d bin\classes src\com\example\hello\Hello.java
「C:\tmp\bin\classes\com\example\hello\」に「Hello.class」ファイルが作成されました。
C:\
└tmp
└bin
└com
└example
└hello
└Hello.class
JARファイルを作成する¶
JARファイルはC:\tmp\binフォルダーに出力します。
> mkdir bin
>jar cvf bin\Hello.jar -C bin\classes com
マニフェストが追加されました。
com/ を追加中です。(入 = 0) (出 = 0)(0% 格納されました)
com/example/ を追加中です。(入 = 0) (出 = 0)(0% 格納されました)
com/example/hello/ を追加中です。(入 = 0) (出 = 0)(0% 格納されました)
com/example/hello/Hello.class を追加中です。(入 = 693) (出 = 412)(40% 収縮されま
した)
「C:\tmp\bin\」フォルダーに「Hello.jar」ファイルが作成されました。
C:\
└tmp
└bin
└Hello.jar
ブリッジファイルを作成する¶
HelloクラスをDelphiから使用できるようにするためのブリッジファイルを作成します。
Helloクラスを含むJARファイルを作成します。
登録ユーザー向けサイト(http://cc.embarcadero.com/myreg)からJava2OP.exeをダウンロードし、パスを通すなどの設定を行います。
Java2OPを使って、ソースファイルからブリッジファイルを作成します。
> cd C:\tmp
> Java2OP.exe -source src -unit Android.JNI.Hello
「C:\tmp\」フォルダーに「Android.JNI.Hello.pas」が作成されました。
{*******************************************************}
{ }
{ CodeGear Delphi Runtime Library }
{ Copyright(c) 2014 Embarcadero Technologies, Inc. }
{ }
{*******************************************************}
unit Android.JNI.Hello;
interface
uses
Androidapi.JNIBridge,
Androidapi.JNI.JavaTypes;
type
// ===== Forward declarations =====
JHello = interface;//com.example.hello.Hello
// ===== Interface declarations =====
JHelloClass = interface(JObjectClass)
['{86670A40-8969-4509-8840-27E22542A4A1}']
{class} function init: JHello; cdecl;
end;
[JavaSignature('com/example/hello/Hello')]
JHello = interface(JObject)
['{CFAF0852-C764-48A7-95DF-336924807FF9}']
function sayHello: JString; cdecl;
end;
TJHello = class(TJavaGenericImport<JHelloClass, JHello>) end;
implementation
procedure RegisterTypes;
begin
TRegTypes.RegisterType('Android.JNI.Hello.JHello', TypeInfo(Android.JNI.Hello.JHello));
end;
initialization
RegisterTypes;
end.
Java2OPの入力オプション¶
Java2OPは、ソースファイルの他に、クラスファイルやjarファイルからブリッジファイルを作成することができます。
例:com\example\hello\Hello.classからブリッジファイルをAndroid.JNI.Hello.pasに作成する
Java2OP.exe -classes com\example\hello\Hello.class -unit Android.JNI.Hello
例:Hello.jarからブリッジファイルをAndroid.JNI.Hello.pasに作成する
Java2OP.exe -jar Hello.jar -unit Android.JNI.Hello
テスト用のAndroidアプリケーションを作成する¶
Delphi XE7を起動し、Firemonkeyモバイルアプリケーションを作成します。
先ほど作成したブリッジファイル(Android.JNI.Hello.pas)をプロジェクトに追加します。
フォームにボタンとラベルを配置します。
ボタンをクリックしたときのイベントを追加します。
ボタンを押すと、HelloクラスのsayHelloメソッドを呼び出します。
uses Androidapi.Helpers, Android.JNI.Hello;
procedure TForm1.Button1Click(Sender: TObject);
var
Hello: JHello;
begin
Hello := TJHello.Create;
Label1.Text := JStringToString(Hello.sayHello);
end;
AndroidアプリケーションにJARファイルを追加する¶
「プロジェクトマネージャ」の「ターゲットプラットフォーム」ノードを展開します。
[ターゲットプラットフォーム」ノード内の「Android」ノードを展開します。
「ライブラリ」ノードを右クリックして[Add]を選択します。
表示されたダイアログボックスでJARファイルを選択し、「開く」をクリックします。
「プロジェクトマネージャ」の「ライブラリ」ノードの下に、カスタムJavaライブラリが表示されます。