Qt for Androidでアプリを配布する(apkを作る)

Qt for Android試してみた」で、アプリが作成出来るのがわかったので続きです。

プロジェクトを作成しただけの状態でもとりあえず端末で動かすことは可能ですが、マーケットには出せません。
デバッグ用のキーでサインされているとか、パッケージ名が共通のモノになっているなど。

今回の記事の内容はAndroidのアプリ開発の経験がある前提で書いてますスミマセン。
その割にまだまだ完璧じゃないですけど。


/// 用意するもの ///
・アイコン画像(3種+1)
・スプラッシュの画像

/// やることまとめ ///
・マニフェスト設定
 ・SDKバージョンの設定
 ・パッケージ名の変更
・アプリケーション設定
 ・アプリ名
・パーミッションの設定
・Qtライブラリの選択
・AndroidManifest.xmlでminSdkVersionを編集
・サインの設定
 ・keystoreの作成
・デプロイ中のapkのファイル名の設定の修正

ここから実際の手順的な内容です。


/// 画像の用意 ///
 1. アイコン画像
  用意しないとNecessitasのデフォルトアイコンになるので頑張りましょう。
  1-A. ldpi : 「36x36」 : icon.png (低解像度用)
  1-B. mdpi : 「48x48」 : icon.png (中解像度用)
  1-C. hdpi : 「72x72」 : icon.png (高解像度用)
  1-D. ? : 「128x128」 : icon.png (これはNecessitasが標準で用意してて使い道は不明)
 2. スプラッシュ画面の画像
  これも用意しないとデフォルトになるので頑張りましょう。
  2-A. 「480x818」 : logo.png
 3. 以下のディレクトリに配置
  <project dir>/android/res/drawable/icon.png (1-D)
  <project dir>/android/res/drawable/logo.png (2-A)
  <project dir>/android/res/drawable-hdpi/icon.png (1-C)
  <project dir>/android/res/drawable-ldpi/icon.png (1-A)
  <project dir>/android/res/drawable-mdpi/icon.png (1-B)

 「ldpi」とかが「?」な場合は以下のリンクの内容を確認してください。
 Androidを実装したデバイスには様々なサイズの液晶を採用しているのでそれに対応する仕組みです。
  公式リファレンス「Supporting Multiple Screens

 << ポイント >>  
  もともと別の環境用に作っていたプロジェクトをAndroid用にする場合は上記の画像ファイルをあらかじめ用意してもOKです。
  画像ファイルは無いとデフォルトが配置されますが、すでにあるとコピーはされないようです。


/// マニフェスト設定 ///
 
 ・SDKバージョンの設定
  Androidのどのバージョンを最低に併せてビルドするかの設定です。
   Androidの公式リファレンス「Android API Levels
  お好みやターゲットに併せてどうぞ。
  後述のAndroidManifest.xmlの設定に影響します。
 ・パッケージ名の変更
  普段お使いのパターンで指定してください。


/// アプリケーション設定 ///
 
 ・アプリ名
  ここで設定したアプリ名がランチャやアプリのタイトルバーに表示されます。
 ・アイコン
  左から「ldpi」「mdpi」「hdpi」用になります。
  用意の段階で所定の場所に置いてあれば変更の必要はありません。


/// パーミッションの設定 ///
 
 必要そうなものを選んでください。
 Qtでこの辺の機能使ったらこのパーミッション必要だよって対応表あるといいですね。
  公式リファレンス「Manifest.permission


/// Qtライブラリの選択 ///
 
 必要なものを選択してください・・・。
 何が必要かってどうやってしらべるんでしょうか?
 いきなりAndroidで作ったら調べようがあるのかな?
 WindowsだとDependencyWalkerで調べろとか書いてあるし。


/// AndroidManifest.xmlでminSdkVersionを編集 ///
 
 この設定が抜けてるとマーケットでちゃんと設定しなさいと怒られるので追記します。
 1. ツリーの「Project->Other files->android->AndroidManifest.xml」を開く
 2. 「manifest」タグの中に「<uses-sdk android:minSdkVersion="4" />」を追記
  バージョン番号は環境に合わせて修正してください。


/// サインの設定 ///
 
 「Create」->「キー情報入力」->「Sign package」->「パスワード入力」をします。
 keystoreの情報は下記の感じでOK
 


/// デプロイ中のapkのファイル名の設定の修正 ///
 
 「<sdk dir>/tools/ant/build.xml」を編集すれば対処できそうな気はするのですが中身を見るかぎりあってそうだし謎なので、暫定対処します。
 1. デプロイ使用とすると、サインする対象のapkが見つからなくて開けないエラーとともに「Certificate password」を聞かれます。
 2. シェルからapkのエラーの内容を参考ファイル名を変更します。
  ディレクトリ:「<project name>/android/bin/」
  誤:「<name>-release-unsigned.apk」
  正:「<name>-unsigned.apk」
 3. パスワードを入力
 4. 「<name>-signed.apk」ができて完成


以上でマーケットへの登録準備OKです。


/// 注意 ///
・サインの設定
 一度プロジェクトを閉じると設定が解除されてまたデバッグ用のapkがデプロイされるようになります。サインはリリースする時だけって考えなのかもしれませんが、毎度keystoreを作り直さないといけないようなので面倒です。