J2ObjCで作ったユニバーサルライブラリを組み込む方法


JavaのソースコードからiOS用のユニバーサルライブラリを作成して
iPhoneアプリに組み込んでみようというお話の続きです。

前回記事の
JavaのソースコードからiOS用のユニバーサルライブラリを作成する方法
を先にお読みください。

コンパイルオプション

インクルードパスに j2objc-0.9.7/include を追加します。

Xcode の BuildSettings > Search Paths > User Header Search Paths に追加してください。

リンクオプション

リンクオプションに -ObjC を追加します。

Xcode の BuildSettings > Linking > Other Linker Flags に追加してください。

リンクするライブラリ

J2ObjCのJREエミュレーションライブラリ libjre_enum.a を追加します。

libjre_enum.a が依存している libicucore.dylib, Security.framework, libz.dylib も追加します。

Xcode の Build Phases > Link Binary With Libraries に追加してください。

J2ObjCで変換されたコードの注意点

クラスはパッケージ名とクラス名をアッパーキャメル記法でつなげた感じになります。

net.npe.image.PixelImage は NetNpeImagePixelImage

Enumの場合 NetNpeImagePixelImageEnum のように最後にEnumがくっつきます。

J2ObjCで変換されたコードには以下のような初期化関数が

自動的に生成されるのでそのクラスを使う前に一度呼ぶようにします。

クラス名 + アンダーバー + initialize()

J2ObjC導入の参考に

英語ですがJ2ObjCウェブサイトを参考にしてください。

Xcode Build Rules
Required Link Flags

実行結果

iPhoneシミュレーターで動作確認しました。
実機のほうは課金切れで確認できませんでした。

iOSImageReader

まとめ

特にJ2ObjCのことを意識してJavaコードを書いていませんが、

重大な問題もなく動作してくれました。

うまく使えばObjective-Cをほとんど書かずにiPhoneアプリが作れちゃいますね。

気になるのはメモリ消費量とパフォーマンスかな。

ともあれ、Java一本で何でも開発したい私にはJ2ObjCは重要なツールの一つになりそうです。

もう少し検証を重ねて実践投入したいと思います。

スポンサードリンク


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です