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」が立ちあがります。
そして更に待ってインストール準備が終わったら「Install packages」ボタンを押してインストールへ進みます。
するとライセンスの同意を求められます。
「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
インストール中に以下のメッセージが表示されることがあります
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を押して閉じます。
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」をインストールしてね、というメッセージが表示されます。
Android SDK Managerから「API 16」を選択して Install packages ボタンを押してインストールします。
再びライセンス同意を求められるので、「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 | アイコンのピクセルサイズ | 画像リソース比率 |
xxxhdpi | 192 x 192 | 400% |
xxhdpi | 144 x 144 | 300% |
xhdpi | 96 x 96 | 200% |
hdpi | 72 x 72 | 150% |
mdpi | 48 x 48 | 100%(基準) |
ldpi | 36 x 36 | 75% |
デベロッパー登録
ここからログインして手順に従い登録します。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
質問項目は以下のように入力します
項目 | 説明 |
姓名 | 作者名を入力(デベロッパー名で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" />