Android

トップに戻る



Androidセットアップ手順

ここではHaxeFlixelをAndroid向けにビルドする手順を説明します。

2014/9/13 現在、OpenFLは「Android API 16」を標準として動作します。ただし一応「API 9」までは互換性があるようです。 またゲームコードはすべてC++に変換されコンパイルされるため、NDKのインストールが必要となります。

各種SDKのインストール

※以下の手順はMac環境でのセットアップです。

ターミナルから「lime setup android」コマンドを実行します

$lime setup android
Download and install the Android SDK? [y/n/a] ? y

SDKをダウンロードしてインストールするかどうかを聞かれるので「y」(yes)を入力してEnterキーを押します。

Output directory [/opt/android-sdk]:

出力するディレクトリを聞かれますが、デフォルトで問題ないのでそのままEnter。

Unable to access directory. Perhaps you should run "setup" again using "sudo"

そうするとディレクトリがないと怒られます。なのでフォルダを作ります。

$ sudo mkdir -p /opt/android-sdk
$ sudo chown -R myusername /opt/android-sdk

myusernameのところは自分のユーザ名を指定します。

$ lime setup android
Download and install the Android SDK? [y/n/a] ? y
File found. Install existing file? [y/n/a] ?y

再びセットアップするとダウンロード済みファイルを上書きしてよいかを聞かれるので y でEnterします。

Output directory [/opt/android-sdk]:

出力フォルダも問題ないのでそのままEnterします。

しばらくすると「Android SDK Manager」が立ちあがります。

001.png

そして更に待ってインストール準備が終わったら「Install packages」ボタンを押してインストールへ進みます。

するとライセンスの同意を求められます。

002.png

「Android SDK Lisence」「Google Gdk License」の2つのライセンスに同意して「Install」ボタンを押します。

長いインストールが始まるのでその間にNDKとAntのフォルダを作成しておきます。

$ sudo mkdir -p /opt/android-ndk
$ sudo chown -R myusername /opt/android-ndk
$ sudo mkdir -p /opt/apache-ant
$ sudo chown -R myusername /opt/apache-ant

インストール中に以下のメッセージが表示されることがあります

003.png
 The android sdk and avd manager that you are currently using has been updated.
 it is recommend that you now close the manager window and re-open it.
 If you use Eclipse, please run Help
 > Check for Updates to see if the Android plug-in needs to be updated.

SDKを更新したので、Eclipseを使用している場合は[ヘルプ]からAndroidプラグインを更新してね、ということらしいです。ですが特に使用しないのでそのままOKを押して閉じます。

004.png

Done loading packages. と表示されたら「Close」を押して終了します。 Android SDK Managerも終了しておきます。

するとNDKのインストールを聞かれます。

Download and install the Android NDK? [y/n/a] ? y

問題ないので y でEnterします。

Output directory [/opt/android-ndk]:

出力フォルダもデフォルトで問題ないのでそのままEnterします。

Download and install Apache Ant? [y/n/a] ? y

Antのインストールを聞かれます。y を入力してEnterします。

Output directory [/opt/apache-ant]:

出力フォルダもデフォルトで問題ないのでそのままEnterします。

これでインストール完了です。

プロジェクトのビルド

早速プロジェクトを作ってビルドしてみます。

$ lime build android

でビルドが開始します。

BUILD FAILED
/opt/android-sdk/tools/ant/build.xml:542: Unable to resolve project target 'android-16'

ですが以下のエラーが出ます。どうやら 'android-16'がないための様子。 なのでもう一度 lime setup android を実行します。

Launching the Android SDK Manager to install packages
Please install Android API 16 and SDK Platform-tools
Waiting for process to complete...

するとターミナルにも 「Android API 16」をインストールしてね、というメッセージが表示されます。

005.png

Android SDK Managerから「API 16」を選択して Install packages ボタンを押してインストールします。

006.png

再びライセンス同意を求められるので、「Android SDK License」を選択して「Accept License」クリック、Installボタンでインストールを開始します。

インストールが終わると、Eclipseプラグインを更新してねメッセージが表示されるので、OKを押して閉じます。 Android SDK Managerもそのまま閉じます。 NDKやAntのインストールを聞かれますが、インストール済みなので n でEnterします。パスもデフォルトままなのでそのままEnterします。

そして再び lime build android でビルドすると、ビルドが完了します。

ビルドがうまくいかない場合

端末の設定

端末側のデバッグやインストール設定を変更します

  • 「提供元不明のアプリケーションの許可」にチェックを入れる
  • 「USB接続時のデバッグモード設定」にチェックを入れる

これで、lime test android コマンドで端末に転送ができます

Project.xmlの記述

Package名の指定

ユニークなPackage名を指定します。それに合わせてモジュールの配置も修正する必要があります

 <meta title="Natsuki3" package="jp.seconddgames.natsukiboost3" version="1.0.0" company="2dgames.jp" />

画面サイズの指定

  <!--Mobile-specific-->
  <window if="mobile" orientation="landscape" fullscreen="true" width="0" height="0" />

iOS と同様に画面サイズには 0 を指定します。上記例は横向きとなっていますが、縦向きにしたい場合は orientation="portrait" を指定します。

APIレベルの指定

  <android target-sdk-version="16" />

android target-sdk-version でAPIレベルを指定できます。現時点(2014/9/20)、HaxeFlixelはAPI16に対応しているので、通常は16を指定します。

高速化の設定

  <window hardware="true" allow-shaders="true" require-shaders="true" if="cpp"/>
  <window vsync="true" antialiasing="4" if="cpp" />

内容はよくわかりませんが、これを書いておくと高速化できるみたいです。

アイコン画像の設定

  <icon path="36.png" size="36" if="android" />
  <icon path="48.png" size="48" if="android" />
  <icon path="72.png" size="72" if="android" />
  <icon path="96.png" size="96" if="android" />

Androidでは上記サイズのアイコン画像を指定します。

なおアイコン画像は以下のリンク先のサービスを利用すると簡単に作れます。

ここから「SELECT IMAGE」で画像をアップロードして、「DOWNLOAD ZIP」でダウンロードできます。なお Safari だとうまくダウンロードできないので Chrome などのブラウザを使う必要があります。

2014/9/13現在、Androidのアイコンは以下のサイズを指定する必要があるようです

Densityアイコンのピクセルサイズ画像リソース比率
xxxhdpi192 x 192400%
xxhdpi144 x 144300%
xhdpi96 x 96200%
hdpi72 x 72150%
mdpi48 x 48100%(基準)
ldpi36 x 3675%

デベロッパー登録

ここからログインして手順に従い登録します。Gmailのアカウントとクレジットカードがないと登録はできません。登録料金は初回のみ必要で$25となります(2014/9/15現在)。

登録が完了すると、ANDROID DEVELOPER CONSOLEに入れるようになります。

アプリ署名

野良アプリとして公開する場合であれば、デジタル署名は不要となります。ですがAndroid Marketに公開する場合は署名が必要となります。

デジタル署名について

デジタル署名は、文書の送信者を証明し、また、改ざんされていないことを保証します

注意点

  • キーストアとは
    • キーストアとは、署名を行うための証明書(秘密鍵)
    • キーストアはパスワードで暗号化されており、パスワードを紛失するとキーストアは復元できなくなる。
    • キーストアは、個々のプロジェクトで作るパッケージ用の電子署名キーを保存しておく領域
  • エイリアスとは
    • エイリアスとは、キーストアに格納されたキー情報
    • パッケージの実際の署名に用いられる
    • キーストアには複数のエイリアスを登録できるが,通常は1つのキーストアに1つのエイリアスが設定される
  • 一度署名したら証明書を変更しないこと
    • 同一の署名キーで署名されていないパッケージでは、ユーザーはプログラムをアップグレードすることができない
    • また、署名キーは後から修正することもできない
    • 署名キーのパスワードはキーストアのパスワードとは別となる

1. 証明書を作成する

keytoolコマンドの文字化けを直す(Mac)

Mac環境だとkeytoolが文字化けするので、以下のコマンドで使用する文字コードを変更します

$ export _JAVA_OPTIONS='-Dfile.encoding=UTF-8'

証明書を作成する

以下のコマンドを実行すると、2dgames_jp.keystoreを2dgames_jpというエイリアス(プロジェクト名でOK)で証明書を作成します

keytool -genkey -v -keystore 2dgames_jp.keystore -alias 2dgames_jp -keyalg RSA -validity 10000
100.png

質問項目は以下のように入力します

項目説明
姓名作者名を入力(デベロッパー名でOK)
組織単位名組織の部署など。個人なら未入力でOK
組織名個人なら未入力でOK
都市名または地域名Tokyo、Saitamaなど。未入力でもOK
州名または地方名Shinjuku-ku、Saitama-shiなど。未入力でもOK
国番号JP

2. Androidアプリケーションに署名を行う

Project.xmlに以下の記述をするとビルド時に署名を行ってくれます。

  <certificate path="証明書への相対パス" password="パスワード" alias="エイリアス名" alias-password="エイリアスのパスワード" if="android" />
 

出力先は、「export/android/bin/bin/プロジェクト名-release.apk」となります。

apkファイルのアップロード

作成した署名つきの *.apk ファイルを ANDROID DEVELOPER CONSOLE からアップロードします。

登録画像のサイズ

  • 高解像度アイコン : 512x512
  • 宣伝用画像 : 1024x500
  • スクリーンショット : 任意のサイズ。最低2枚の登録が必要

Google Playへのリンク作成ツール

そのままだと画像サイズが大きいので、143x46くらいに小さくしておきます。

<img alt="Get it on Google Play" src="https://play.google.com/intl/en_us/badges/images/apps/ja-play-badge-border.png" width="143" height="46" />

参考