JavaのソースコードからiOS用のユニバーサルライブラリを作成する方法


J2ObjCを使ってJavaソースコードをObjective-Cソースコードに変換して、
静的ユニバーサルライブラリを作成する方法を検証してみました。

はじめに

今回の目的はJavaのソースコードからiPhoneシミュレーター用に i386, x86_64,
実機用に armv7, armv7s, arm64 の5つのアーキテクチャでユニバーサルライブラリを作成することです。

今回利用したJ2ObjCのバージョンは0.9.7です。
GitHubリポジトリのリリースページからダウンロードできます。

https://github.com/google/j2objc/releases

作業順序

1. JavaソースコードをObjective-Cソースコードへ変換
2. 各アーキテクチャのオブジェクトコードを生成
3. 各アーキテクチャの静的ライブラリを作成
4. ライブラリをまとめてユニバーサルライブラリを作成
5. リリース用にZIPファイルにパッケージング

1. JavaソースコードをObjective-Cソースコードへ変換

j2objcコマンドを利用してjavaソースコードをObjective-Cソースコードへ変換します。

Foo.h と Foo.m が生成されます。

2. 各アーキテクチャのオブジェクトコードを生成

j2objcc-archオプションを使ってアーキテクチャを指定しオブジェクトコードを生成します。

実機用のアーキテクチャarmv7,armv7s,arm64でのコンパイルはiOS SDKが必要になります。

3. 各アーキテクチャの静的ライブラリを作成

arコマンドを使って静的ライブラリをアーキテクチャの数だけ作成します。

4. ライブラリをまとめてユニバーサルライブラリを作成

作成したライブラリをlipoコマンドでユニバーサル化します。

ユニバーサルライブラリが作成できたらlipo -infoで確認して下さい。

(cputype (12) cpusubtype (11)) は armv7s、
(cputype (16777228) cpusubtype (0)) は arm64 のことです。

以下のようにxcrunコマンドを使えば armv7s, arm64 を表示できるようになります。

追加した全てのアーキテクチャが表示されてばユニバーサル化に成功しています。

5. リリース用にZIPファイルにパッケージング

おまけの作業ですが、
作成したユニバーサルライブラリとヘッダーファイルをzipファイルにまとめます。

実際に作ったMakefile

久々にMakefile書いたので冗長化してますが、目的は達成できているのでセーフ!?

まとめ

順序立てればJavaからiOS用のユニバーサルライブラリを
作成するのはそれほど難しくないと思います。

実際に動作挙動を確認したい方は、以下のページの
「iOS用ライブラリのビルド」を参考にビルドしてみてください。

http://3dtech.jp/wiki/npe-image-library/#!build.md

次回は、今回作ったユニバーサルライブラリを
アプリへ組み込む方法を紹介したいと思います。
リンクエラーや実行時エラーが出て色々と大変でした・・・。

スポンサードリンク


JavaのソースコードからiOS用のユニバーサルライブラリを作成する方法」への1件のフィードバック

  1. ピンバック: J2ObjCで作ったユニバーサルライブラリを組み込む方法 | 3D技術研究所Blog

コメントを残す

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