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

Archives Details

JavaでiOSアプリ開発 RoboVM + eclipse

Java

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

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

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

Comment

Related Article

IntelliJ + Spring Initializr + Gradleで、サクッとSpring Boot環境を構築

2018.11.24

Mavenを用いたアプリケーション作成方法

2018.11.24

Gradleを用いたアプリケーション作成方法

2018.11.23

JavaでiOSアプリ開発 RoboVM + eclipse

2013.09.06

Java 始めました。mac IDE環境設定 Eclipse日本語化

2013.07.21

CATEGORY LIST

LATEST NEWS

Rust - Actix Web mongo ユーザー登録 JWT認証

Rust

2024.03.24

Rust - Actix Web JWT 認証認可 APIの作成

Rust

2024.02.25

Rust - Actix Web × JSON 静的ファイルをAPIで返却

Rust

2024.01.19

Rust - Actix Web × MongoDB環境をサクッと起動

Rust

2024.01.18

5分で学ぶ RustでWave Function Collapse (波動関数崩壊アルゴリズム)

Rust

2024.01.15

LLaMAモデル GGMLフォーマット(llama.cpp)をRustフレームワーク Leptosを用いて M1MacMiniでサクッと動かす。

Rust

2024.01.11

2024年 狙っているモバイルノートPC

tool

2024.01.07

MacOS XcodeにSDL2を追加

tool

2023.12.26

php 7.4にアップデート

PHP

2023.12.24

5分で覚える Flutter Flameで作る Wave Function Collapse - 波動関数崩壊アルゴリズム

AI・Bot・algorithm

2023.12.20

Flutter - Flameでゲーム作成 (キャラクターの移動)

Flutter

2023.07.23

Flutterで作る ChatGPT Prompt Manager

Flutter

2023.07.12

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

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

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

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

FOLLOW US