読者です 読者をやめる 読者になる 読者になる

WonderPlanet DEVELOPER BLOG

ワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。

Objective-CでAndroidアプリ開発

Android Objective-C

今回のエンジニアブログ担当の山下です。

フルネイティブなアプリを作る場合、iOSではObjective-C、AndroidではJavaで書くのが一般的です。
OSが変わればAPIも変わりますし、そもそも記述する言語も変わってきます。
いろいろ勉強してみるのも為になりますが、一度書いただけでサクッといろんな環境で動いてくれたら、
開発がとても楽になると思います。
マルチプラットフォームなアプリを作る際、ゲームアプリだとcocos2d-xやUnityといった
選択肢がありますが、なじみの無い言語だったり、デバッグが大変だと感じる方も
いらっしゃるのではないでしょうか。

そこでApportableというツールがあります。
これがなんと、iOSアプリのプロジェクトからAndroidアプリを力業で生成してしまうというものです。
UIKitを使ったアプリはもちろんのこと(なんとxibを使ってもOK)、
cocos2d for iPhone等のゲーム関係のライブラリにも対応しています。
またデバッガにgdbを備えており、ブレイクポイントを置いてソースを追いかけながらのデバッグも可能です。

簡単に触ってみることにしました。

環境構築

Apportableの環境を作るのはとても簡単です。

01_download
まずApportableのWebサイトにアクセスし、SDKのダウンロードボタンを押します。

02_regist
次にApportableのアカウントを発行します。
とはいえ、登録には最小限の情報しか求められません。

03_command
アカウント発行が完了すると、curlから始まるコマンドが表示されます。
このコマンドをMacのターミナルにコピー&ペーストして実行します。
あとは必要なツール群を自動的に入れてくれます。時間がかかるため、気長に待ちましょう。

これでインストールは完了です。
~/.apportable/SDK/binをPATHに入れておくと便利です。

実行

では実際にiPhoneアプリをAndroidで動かしてみます。

今回は名古屋コーチンがいく!を動かしてみます。
このアプリはcocos2d for iPhoneを利用して作られており、
もちろんガッツリObjective-Cで書かれています。

まず前準備として、Xcodeのプロジェクトに手を加えます。
といっても、AppDelegateのapplication:didFinishLaunchingWithOptionsの先頭に
以下のコードを追加するだけです。

#ifdef ANDROID  
    [UIScreen mainScreen].currentMode = [UIScreenMode emulatedMode:UIScreenBestEmulatedMode];  
#endif  

もしアプリがRetina向けに作られていない場合、
ここでUIScreenIPhone3GEmulationModeを指定します。

次にUSBデバッグを有効にしたAndroidデバイスをMacに接続します。
そしてターミナルを開いて、cdコマンドでXcodeプロジェクトがあるフォルダまで移動し、

apportable load

を実行します。

04_load

初回ビルド時のみ、使用するOpenGL ESのバージョンとアプリ起動時の画面の向きを聞かれます。

05_opengl

画面の指示に従い、iOS版をCocos2Dの1.x系で作ったなら1、2.x系なら2と入力します。
画面の向きは必要に応じてlまたはpを入力してください。

06_android

たったこれだけでapkのビルドが始まり、Android端末上で実行されました。

デバッグの際には以下のコマンドを実行することでgdbが実行出来ます。

apportable debug

また以下のコマンドでスクリーンショットを取ることもできます。

apportable screenshot

問題点

Apportableは非常に強力なツールですが、いくつか問題点もあります。

07_japanese

まず日本語で書かれたラベルやメニュー項目は全て化けてしまいました。
画像で置き換えてしまうか、日本語対応を待つしか無さそうです。

またUIKitを多用したアプリも変換してくれますが、
無料プランであるStarterではある程度制限がかかっており、うまく表示出来ない場合があります。
サポートされるフレームワークやAndroidのバージョンの幅も広がるため、
本格的に利用するのであれば有料プランを検討してみるのもありだと思います。

いずれにしても、今後に大いに期待が出来るツールと言えるでしょう。