Android の変更点


[[トップに戻る>FrontPage]]

----
#contents
----

* Androidセットアップ手順 [#i0cc7683]
ここではHaxeFlixelをAndroid向けにビルドする手順を説明します。

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

** 各種SDKのインストール [#g04fc8e5]
 ※以下の手順は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」が立ちあがります。
#ref(001.png)
そして更に待ってインストール準備が終わったら「Install packages」ボタンを押してインストールへ進みます。

するとライセンスの同意を求められます。
#ref(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

インストール中に以下のメッセージが表示されることがあります
#ref(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を押して閉じます。

#ref(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します。

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

**プロジェクトのビルド [#x229fe66]
早速プロジェクトを作ってビルドしてみます。
 $ 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」をインストールしてね、というメッセージが表示されます。
#ref(005.png)
Android SDK Managerから「API 16」を選択して Install packages ボタンを押してインストールします。

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

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

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

*** ビルドがうまくいかない場合 [#mf37f2a9]
- [[ネイティブ環境へのビルドがうまくいかない場合>NativeBuild]]

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

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

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

* Project.xmlの記述 [#bd055d88]
** Package名の指定 [#s1c5414a]
ユニークなPackage名を指定します。それに合わせてモジュールの配置も修正する必要があります
#geshi(Actionscript){{
 <meta title="Natsuki3" package="jp.seconddgames.natsukiboost3" version="1.0.0" company="2dgames.jp" />
}}

** 画面サイズの指定 [#p0da8e57]
#geshi(XML){{
  <!--Mobile-specific-->
  <window if="mobile" orientation="landscape" fullscreen="true" width="0" height="0" />
}}
iOS と同様に画面サイズには 0 を指定します。上記例は横向きとなっていますが、縦向きにしたい場合は orientation="portrait" を指定します。

** APIレベルの指定 [#c22bd68e]
#geshi(XML){{
  <android target-sdk-version="16" />
}}
android target-sdk-version でAPIレベルを指定できます。現時点(2014/9/20)、HaxeFlixelはAPI16に対応しているので、通常は16を指定します。

** 高速化の設定 [#ibb90ef4]
#geshi(XML){{
  <window hardware="true" allow-shaders="true" require-shaders="true" if="cpp"/>
  <window vsync="true" antialiasing="4" if="cpp" />
}}
内容はよくわかりませんが、これを書いておくと高速化できるみたいです。

**アイコン画像の設定 [#d85fb975]
#geshi(XML){{
  <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では上記サイズのアイコン画像を指定します。

なおアイコン画像は以下のリンク先のサービスを利用すると簡単に作れます。
- [[Android Asset Studio:http://romannurik.github.io/AndroidAssetStudio/index.html]]

ここから「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%



* デベロッパー登録 [#ceac691d]
- https://play.google.com/apps/publish/signup

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

登録が完了すると、ANDROID DEVELOPER CONSOLEに入れるようになります。
- [[Google Play / ANDROID DEVELOPER CONSOLE:https://play.google.com/apps/publish/]]

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

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

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


** 1. 証明書を作成する [#naa1ab14]
***keytoolコマンドの文字化けを直す(Mac) [#s2f6c110]
Mac環境だとkeytoolが文字化けするので、以下のコマンドで使用する文字コードを変更します
 $ export _JAVA_OPTIONS='-Dfile.encoding=UTF-8'
***証明書を作成する [#o35bb850]
以下のコマンドを実行すると、2dgames_jp.keystoreを2dgames_jpというエイリアス(プロジェクト名でOK)で証明書を作成します
 keytool -genkey -v -keystore 2dgames_jp.keystore -alias 2dgames_jp -keyalg RSA -validity 10000
#ref(100.png);

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

** 2. Androidアプリケーションに署名を行う [#rc9a9184]
Project.xmlに以下の記述をするとビルド時に署名を行ってくれます。
#geshi(xml){{
  <certificate path="証明書への相対パス" password="パスワード" alias="エイリアス名" alias-password="エイリアスのパスワード" if="android" />

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

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

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

* Google Playへのリンク作成ツール [#x6fd0e07]
- [[Google Play Badges>https://play.google.com/intl/en_us/badges/]]

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

#geshi(xml){{
<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" />
}}

* 参考 [#s02b9d22]
- [[AndroidMarketに公開するためにアプリに署名を行う:http://techbooster.org/android/environment/1445/]]
- [[つぎに公開用のAndroidアプリを生成する:https://sites.google.com/site/technoute/android/publish/apk]]
- [[Androidアプリをマーケットに公開する方法の作業手順メモ (リリース時とアップグレード時のチェックリスト):http://d.hatena.ne.jp/language_and_engineering/20120310/AndroidMarketReleaseSteps]]