JavaでiOSアプリ開発 RoboVM + eclipse
2013.09.06
この記事は最終更新日から1年以上が経過しています。
従来、iOS(iPhone、iPad等の)アプリを制作する際に用いられる言語は「Objective-C」(オブジェクティブ シー)と言った言語を使い開発するのですが、まぁiOS(iPhone、iPad等の)アプリ以外ではなかなか使用しないと思います。
AndroidアプリとiPhoneアプリを同時に作成しようとすると、「Objective-C」と「Java」それぞれ、別の言語で開発しないと行けないため、作業も困難である。
「Titanium」や「PhoneGap」などのフレームワークを使用することによって、Objective-CやJavaを書かずに、Webアプリケーションの技術を用いて、ネイティブアプリケーションを作ることが可能ではありますが、ミドルウェアを介して作成するのと、ネイティブ言語で開発するのでは、やはり制限であったり、パフォーマンスであったりなど、劣ってしまう点が出てしまいます。
今回はそんな悩みを解決するかの如く、JavaでiPhoneアプリを開発するRoboVMの紹介、使用方法に関して記述していきます。
RoboVM
RoboVMはJavaのバイトコードをARM/x86のコードに変換し、JavaでiOSアプリの開発を行えるようにするソフトウェアとなっております。
公式サイト
http://www.robovm.org/index.html
コマンドラインでビルドする方法や統合開発環境( IDE)であるEclipseにプラグインしてビルドする方法などがあります。
今回はEclipseでのビルド方法を行います。
EclipseでiOSアプリをビルド
公式ドキュメントに沿って
まずJava SE JDK 7 or 6が必要になってくるのでダウンロードを行いましょう。
1.Java SE JDK 7 or 6をダウンロード
ダウンロードページ
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
それぞれの環境にあったファイルをダウンロード、インストール。
2. Xcodeをインストールする
ダウンロードページ
https://itunes.apple.com/jp/app/xcode/id497799835?mt=12
3.Xcodeコマンドラインツールをインストール
Xcodeでコマンドラインツールをインストールします。
Xcode > Performance… > Downloads > ios [version] simulator/Command Line Tools)
XcodeのメニューからPerformance を選択、Downloadsタブを押すと
このように表示しているかと思いますので、
チェックボックスに選択し、「Check and Install Now」ボタンを押してインストールします。
4. LLVMのダウンロードインストール
続いて、LLVM(Low Level Virtual Machine (LLVM, 低水準仮想機械))をopt/に格納するため 「ターミナル」からダウンロードを行います。
curl http://llvm.org/releases/3.2/clang+llvm-3.2-x86_64-apple-darwin11.tar.gz > llvm.tar.gz sudo tar xvfz llvm.tar.gz -C /opt sudo ln -s /opt/clang+llvm-3.2-x86_64-apple-darwin11 /opt/llvm
シンボリックリンクを貼っていますが、バージョンによってどうも不具合が発生し実行出来ない可能性もあるので、
opt/llvm/ に直接置いて良いかと思います。
5. RoboVMのダウンロードインストール
続いて、RoboVMのダウンロードインストールを行います。
こちらも/opt/に格納します。llvm同じくシンボリックリンクを貼っていますが、不具合が発生し実行出来ない事もあるので、
直接/opt/robovm/ 以下に置いて良いかと思います。
curl http://download.robovm.org/robovm-0.0.1.tar.gz > robovm.tar.gz sudo tar xvfz robovm-0.0.2.tar.gz -C /opt sudo ln -s /opt/robovm-0.0.2 /opt/robovm
それぞれダウンロードしたファイルを格納。
llvm
robovm
6. eclipse pluginをインストール
eclipse pluginをインストールします。
公式サイトのここらへんにあたります。
eclipseを起動し、以下の手順を行います。
Help > Install New Software, URL に http://download.robovm.org/eclipse/ を追加します。
日本語版の場合 ヘルプ > 新規ソフトウェアのインストール
を選択します。
作業対象:の「サイトを入力または選択」に
http://download.robovm.org/eclipse/
を入力。
このような表示が現れるかと思いますので、チェックし、完了ボタンを押します。
7. RoboVM projectを作成
それではテストでプロジェクトの作成を行います。
File > New > Project…. > RoboVM Cocoa Touch Project を選択。
日本語版は
eclipseの ファイル > 新規 > プロジェクト > RoboVM Cocoa Touch Project を選択。
すると、
このようなウィンドウが開きますので、公式サイトに沿って
プロジェクト名:IOSDemo
メインクラス:IOSDemo
App name:IOSDemo
App id:rg.robovm.IOSDemo
と入力。完了。
すると、以下の様なディレクトリが構築されますのでsrc内に参考ソースを作成していきます。
8.サンプルソース作成
公式サイトに記述されているIOSDemo.java
import org.robovm.cocoatouch.coregraphics.*; import org.robovm.cocoatouch.foundation.*; import org.robovm.cocoatouch.uikit.*; public class IOSDemo extends UIApplicationDelegate.Adapter { private UIWindow window = null; private int clickCount = 0;<br /><br /> @Override public boolean didFinishLaunching(UIApplication application, NSDictionary launchOptions) { final UIButton button = UIButton.fromType(UIButtonType.RoundedRect); button.setFrame(new CGRect(115.0f, 121.0f, 91.0f, 37.0f)); button.setTitle("Click me!", UIControlState.Normal); button.addOnTouchUpInsideListener(new UIControl.OnTouchUpInsideListener() { @Override public void onTouchUpInside(UIControl control, UIEvent event) { button.setTitle("Click #" + (++clickCount), UIControlState.Normal); } }); window = new UIWindow(UIScreen.getMainScreen().getBounds()); window.setBackgroundColor(UIColor.lightGrayColor()); window.addSubview(button); window.makeKeyAndVisible(); return true; } public static void main(String[] args) { NSAutoreleasePool pool = new NSAutoreleasePool(); UIApplication.main(args, null, IOSDemo.class); pool.drain(); } }
をsrc デフォルトパッケージに作成。
実行 > iOS Simulator App (iPhone)を選択。実行すると、
え。。。。
iOS Simulatorが起ち上がるはずでしたが。。。
じ、実は、ここまで来て、失敗しております。。。。
が、、コマンドラインで成功しましたのでその手順を。。
コマンドラインでJavaでiOSアプリコンパイル
Hello world.javaファイルと「classes」ディレクトリを作成。
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }
$ javac -d classes HelloWorld.java $ java -cp classes HelloWorld Hello world!
/opt/robovm/bin/robovm -verbose -cp classes/ HelloWorld ./HelloWorld/HelloWorld
robovm -verboseは初回めっちゃくちゃ時間がかかり、ログが10000行近く吐き出されます。
ゆっくりと待ちましょう。
それでは、先ほどのIOSDemoをiOS用にコンパイルしてみます。
javac -cp /opt/robovm/lib/robovm-rt.jar:/opt/robovm/lib/robovm-objc.jar:/opt/robovm/lib/robovm-cocoatouch.jar -d classes/ IOSDemo.java
/opt/robovm/bin/robovm -verbose -arch x86 -os ios -cp /opt/robovm/lib/robovm-objc.jar:/opt/robovm/lib/robovm-cocoatouch.jar:classes/ -run IOSDemo
と入力。
ドカーっと、すごい量のログが吐き出されますがしばらく待つと、
iOS Simulatorが立ち上がり、サンプルのjavaソースが起動します。
Clickを押すと回数が増えます!
と、まだまだ色々と様子見ながら触って行こうと思います。