このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

web帳

記事詳細

2013.09.06

JavaでiOSアプリ開発 RoboVM + eclipse

従来、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をダウンロード

Java SE JDK

ダウンロードページ

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を押すと回数が増えます!

と、まだまだ色々と様子見ながら触って行こうと思います。

  • RSSを登録する

  • follow us in feedly

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、港区六本木で活動中。

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。