くろニャァ ~ リリースビルド

前置き

ClojureでAndroidアプリを開発するシリーズ。今回は、リリースビルドについて説明します。いざとなったら直ぐにリリースできるよう、準備しておきましょう。

鍵ペア

apkファイルに署名するため、鍵ペアを作りましょう。鍵ペアは、JDKかJREに入っている keytool というツールを使って作ることができます。作成例を以下に示します(JDKかJREにパスを通しておく必要があります)。

鍵ペアを作る
D:\>keytool -genkeypair -v -keystore my-keys.keystore -alias android -keyalg RSA -keysize 2048 -validity 10000

コマンドの意味は以下の通りです。

  • 鍵ペアを作る(-genkeypair)
  • 経過を詳しく表示(-v)
  • 作成した鍵ペアは、my-keys.keystore というファイルに格納(-keystore)
  • 作成する鍵ペアの別名を android とする(-alias)
  • 鍵のアルゴリズムはRSA(-keyalg)
  • 鍵長は2048ビット(-keysize)
  • 鍵ペアの有効日数は10000日(-validity)

10000日は、約27年です。

コマンドを実行すると、パスワードとか名前とかを聞かれるので、最後まで順に答えていけば鍵ペアの完成です。

  • キーストアのパスワード ...2回聞かれる
  • 姓名 ...本名を入れる必要は無い(メアドでも良いと思う)
  • 組織単位名 ...会社の部署名かな(デフォルトのままで良い)
  • 組織名 ...会社名
  • 都市名または地域名 ...デフォで良い
  • 都道府県名 ...デフォ
  • 国コード ...JP
  • 中間確認 ...y
  • 鍵ペアのパスワード ...2回

パスワードは、鍵ファイル(keystore)に1つと、鍵ペアごとに1つずつ設定することができます。

作った鍵を見るには、以下のようなコマンドを使います。

鍵ペアの確認
D:\>keytool -list -keystore my-keys.keystore -v

Leiningen

Leiningenに鍵ペアの情報を教えてあげます。コンフィグファイルは、%LEIN_HOME%\profiles.cljです。環境変数LEIN_HOMEを定義してない場合は、%USERPROFILE%\.lein\profiles.cljになります。

profiles.clj
{
  :user {
    :plugins [[lein-droid "0.2.0"]
              [lein-midje "3.1.1"]]
    :android {:sdk-path "c:/misc/adk/"}
  }
  :release {            ; これがリリースビルド用の情報。
    :android {
      :keystore-path "c:/the/path/to/your/my-keys.keystore"
      :key-alias "android"
      :keypass "yourKeyPass"
      :storepass "yourStorePass"
      :ignore-log-priority [:debug :verbose]
      :aot :all
    }
  }
}

パスワードを書くのはオプションです。書かなければ、ビルド時に聞いてきます。ただ私が試したときは、うまく読み取ってくれず、署名できませんでした。Windows環境の改行コードを処理できてないような気がします。そういうわけで、署名が終わったら、profiles.cljから:keypassと:storepassエントリを削除した方が良いでしょう。

また、同じ内容を、profiles.cljではなくproject.cljに書いても良いでしょう。両方に書いた場合は、project.cljが優先されるはずですが、キーが混在する場合(例えば :keystore-pathはprofiles.cljに書いて、:aotはproject.cljに書くとか)、マップのマージがうまくいかないみたいです。なので、profiles.cljに書く場合は、project.cljの :releaseエントリは削除しましょう。

project.clj
  :profiles {:dev {:dependencies [[android/tools.nrepl "0.2.0-bigstack"]
                                  [compliment "0.0.3"]]
                   :android {:aot :all-with-unused}}}
             ; :releaseエントリを削除。

リリースビルド

releaseコマンドでビルドします。

D:\etude\clj\lein\clonya>lein clean
D:\etude\clj\lein\clonya>lein droid release
Generating R.java...
Compiling 2 source files to D:\etude\clj\lein\clonya\target\classes
Compiling Clojure files...
Build type: release, dynamic compilation: disabled, remote REPL: disabled.
Compiling clojure.core.protocols
Compiling neko.init
... 以下、省略 ...

成功すると、targetフォルダの下にapkファイルが生成されます。

target\default+release\clonya.apk

releaseコマンドは、デバッグビルドのdoallコマンドに相当するので、端末をつないでおけば、インストールと起動までやってくれます。もしデバッグビルドのアプリがインストール済みなら、あらかじめアンインストールしておきましょう。デバッグ版が残っていた場合、署名者が食い違うためリリース版のインストールに失敗します。

また、一度リリースモードでビルドしたら、次にデバッグ版でビルドするときは、まずcleanするのを忘れないようにしましょう。

公開する

アプリを公開するには、まだいくつか足りないものがあります。

  • スクリーンショット(PNG)
  • ハイレゾアイコン(512x512のPNG)

これらを用意したら、GooglePlayにサインアップして、アプリを公開できます。「くろニャア」も公開しておきました。今のところ実用性は全く無いですが、今後バージョンアップしていくかもしれません。

clo

Last modified:2014/01/28 16:44:22
Keyword(s):
References:[Clojure meets Android]
This page is frozen.