GooglePlay登録用apkを手動で作る

Cordovaを使う場合など、イレギュラーな方法でAndroidアプリを制作する場合は、apkファイル(アプリのデータ)を手動で作る局面もあるものと思われます。

この記事ではWindowsとCordovaの組み合わせを例にして、一連の流れを解説しています。

スポンサードリンク
↓ 記事の続きはこちらから

証明書の発行

コマンドラインでkeytoolのパスが通っている様子
keytoolというJavaの開発環境に付属しているツールを使います。

JDKのインストール(Windwsなら環境変数の書き換えも)を終わらせて、パスが通っているなら、コマンドライン上でkeytoolと入力するだけで呼び出せます。

一番後ろの「-keyalg RSA -keysize 2048」は、暗号化形式の規格を指定している記述なので、そのまま入力してください。

証明書の発行

入力が終わると、いろいろと「これに答えんね!」と質問してくるので答えます。
この時に入力するパスワードは後で必要なので、ちゃんと覚えておきます。

最後にこれで良いか聞かれるので、yを押してEnterで作成。

パスワード以外は空欄でも先に進めますが、あくまでも証明書ですので、ちゃんと書いた方が身のためだと思います。

インターネットで使っている証明書と同じなら日本語で書いても構わない気がしましたが、マルチバイト文字を使う事自体が余計なトラブルの元のような気がするので、自分は念のためローマ字で記入しました。

apkに発行した証明書を署名する

cordovaのプロジェクトディレクトリ内でリリース用の書き出しコマンドを入力するとapkが出力されます。

このコマンドを入力すると、

{プロジェクトのトップ}\platforms\android\build\outputs\apk

という、深すぎる場所にandroid-release-unsigned.apkが作成されます。
これからの作業の主戦場(?)となりますので、特に指定していない場合はここでコマンドを入力します

「ちょっと実機でテストしてみよう」とかのデバッグ作業時に作られるapkもここに出力されています。
ファイル名を間違わないようにしてください。
ファイル名を見てわかる通り、リリース用の設定で書きだしてはいますが、署名がされていない為、GooglePlayに登録もできません。

そういう訳でjarsignerというツールで署名します。

これもkeytoolと同じくJava開発環境に付属するツールなので、正しく準備できていればコマンドラインの好きな場所から呼べます。

「そろそろ勘弁してください」感が満載っすね。

この辺りはもっと楽にできるっぽいですが、一度うまくいくと体が慣れてそれでよくなるものです・3・;

実行すると署名作成時に決めたパスワードを聞かれるので入力します。
君の証明書は不親切だな的な警告が出ますが、私は特に問題なくGooglePlayで公開できています。

apkのファイル名がそのままなのでわかりにくいですが、「jarは署名されました」と無事に表示されれば終了です。

圧縮処理

apkの圧縮にはzipalign.exeというツールを使います。
これだけはAndroid Studioのツールです。

この作業をしていないと、例え署名の終わったapkであってもGooglePlayで登録できません。
(未圧縮でアップすると、圧縮しろと怒られる)

Android Studioのインストール場所(地味にわかりにくい)の、build-toolsディレクトリ内にあります。

もし存在しない場合は、Android StudioのSDK ManagerからインストールすればOKです。
バージョンがいっぱいありますが、好きなのを1つ落とせば十分です。

Android SDK のBuild-toolをインストール

これでやっとGoogle Playに登録できるapkになりました。

実際に登録する前に、

のコマンドを使って、apkを実機にインストールできるか試してみると良いです。

「GooglePlay登録用apkを手動で作る」への5件のフィードバック

  1. Androdのapkに署名する段階でつまずいています。jarは署名されましたとは出ずに、次のjarファイルを開く事ができませんと表示されます。フォルダーを確認したところapkはきちんと作成されています。署名できず困っています。お忙しいと思いますが助言をお願いします。

    1. ちょっと調べてみたところ、jarsignerがapkを見つけられない場合や、データを書き換えられない場合に表示されるメッセージのようです。
      同じ状況になった事が無いので推測でしか答えられませんが、下記の点を確認し直してみてください。

      ・コマンドプロンプトを管理者として実行しているか(もしくは管理者権限のあるアカウントでOSにログインしているか)
      ・コマンドを入力するカレントディレクトリはandroid-release-unsigned.apkのある場所になっているか
      ・コマンドのファイル名や記号、スペース(半角)、keystore関連の情報に抜けや間違いが無いか

      アカウント側の権限に関しては盲点だったので、時間があるときに調べて影響がありそうなら関連する記事にも書き足しておきます。

      1. ご丁寧にありがとうございます。私は、ちなみにMacで作業をしているのですが、iphonの方は問題なくツクールMVが動く状態です。しかし、Androidに関してはApkに署名できないという状態です。
        ・コマンドプロンプトを管理者として実行しているか(もしくは管理者権限のあるアカウントでOSにログインしているか)
        ・コマンドを入力するカレントディレクトリはandroid-release-unsigned.apkのある場所になっているか
        ・コマンドのファイル名や記号、スペース(半角)、keystore関連の情報に抜けや間違いが無いか
        を助言して頂き試してみたのですがうまくいきませんでした。あと時間があるときにでもまた挑戦してみたいと思います。わざわざご丁寧に本当にありがとうございます。他にも有益な情報があるので度々サイトの方に訪れようと思います^^

  2. なるほど。Macでそういった状況になる場合があると心に留めておきますね。
    役に立つ記事とアホ記事が混在しているサイトですが、たまに様子を見に来て楽しんでもらえたらと思います。

  3. あ、言い方が紛らわしかったです。キーストアのフルパスとapkのフルパス入れたら署名できました。なんども本当すいません。さっき投稿したコメント消しておいてください。間違った情報書き込んでました。

コメントを残す

メールアドレスが公開されることはありません。