HOME技術スマホCordovaで開発したAndroidアプリをGoogle Playに掲載する (1)

Cordovaで開発したAndroidアプリをGoogle Playに掲載する (1)

Cordovaで開発したAndroidアプリをGooglePlayに掲載する手順を記します。
Windows10で操作することを前提とします。

1.Cordovaでプロジェクトを作成する

Node.jsを起動して、プロジェクトを生成するルートディレクトリに移動します。
(※Node.jsではなくてCommandPromptでも構いません)

> cd c:\cordova

以下のコマンドでプロジェクトを作成します。

> cordova create [ディレクトリ名] [プロジェクト名] [アプリ名] -d

ディレクトリは予めつくらなくても生成されます。
なお、プロジェクト名は一意のものでなければならないので、「アプリ名.独自ドメイン」のような形にしておくといいでしょう。
※ここではディレクトリ名を「app1」、プロジェクト名を「app.net.kuuur」、アプリ名を「app2」とします。

次に生成したディレクトリに移動します。

> cd app1

Androidネイティブアプリ依存ファイルを生成します。

> cordova platform add android

iOS向けにも開発する場合には以下のコマンドを入れます。

> cordova platform add ios

ブラウザでデバッグできるようにします。

> cordova platforms add browser

ブラウザでデバッグする場合には以下のように入力します。

> cordova serve

この後、「> Static file server running on: http://localhost:8000」と表示されたら、ブラウザから、「http://localhost:8000」にアクセスるとデバッグできるようになります。
Ctrl + cでデバッグモードは終了します。

2.アイコン画像をつくる

アプリの開発が終わったら、リリースビルドする前に、スマホにインストールした時に表示されるアイコンをつくります。これをつくらないと、標準で用意されているcordovaのアイコンになってしまいます。

アイコン画像は以下の6つをつくります。

  • 36 x 36 pixel(ldpi):120dpi
  • 48 x 48 pixel(mdpi):160dpi
  • 72 x 72 pixel(hdpi):240dpi
  • 96 x 96 pixel(xhdpi):320dpi
  • 144 x 144 pixel(xxhdpi):480dpi
  • 192 x 192 pixel(xxxhdpi):640dpi

config.xmlの編集

config.xmlがアプリのルートフォルダにあります。これをテキストエディタで開き、編集します。

<widget>タグ

id属性には、固有ドメインを逆順にしたものを設定します。
例えばドメインが、http://xxx.yyy.comならば、id=”com.yyy.xxx”になります。
ドメインがない場合には、適当に指定してください。

version属性には、バージョンナンバーを入力します。
1.0.0から始まるので、マイナーバージョンアップは1.0.1などと工夫してください。

以下のタグはwidgetタグに内包される形で入力します。

<name>タグ

アプリの名称です。全角、半角カナも使えます。
ここで設定した名称は、スマホで表示されるアイコンの下に表示されます。
アイコン下に表示可能な文字数は、以下の通りです。

  • 全角6文字
  • 半角12文字

なるべくスマホのアイコンの下には読み切れる字数を設定したほうがわかりやすくなります。入りきらない場合には、一部を半角カナにしたり、名称が「あいうえおかきくけこ」ならば、アイコン自体に「あいうえお」と表示して、アプリの名称を「かきくけこ」にする、という方法もあります。

<description>タグ

アプリの説明文。

<author>タグ

email属性には、連絡先eメールを、href属性にはウェブサイトのURLを入力。また、<author></author>の間に作者名を入力。

<content>タグ

src属性に、このアプリが最初に参照するhtmlを指定します。
src=”index.html”など。

アイコンの設定

<platform>タグの間に以下のように入力します。

<platform name=”android”>
<allow-intent href=”market:*” />
<icon density=”ldpi” src=”res/icon/android/ldpi.png” /> …36 x 36
<icon density=”mdpi” src=”res/icon/android/mdpi.png” /> …48 x 48
<icon density=”hdpi” src=”res/icon/android/hdpi.png” /> …72 x 72
<icon density=”xhdpi” src=”res/icon/android/xhdpi.png” /> …96 x 96
<icon density=”xxhdpi” src=”res/icon/android/xxhdpi.png” /> …144 x 144
</platform>

この場合、アイコン画像は、「c:\cordova\app\res\icon\android\」以下に保存します。

3.リリースビルドをする

Node.js command promptを起動します。
起動方法は、nodeで検索すると検索結果候補に出てきます。

まず、開発したアプリのルートフォルダに移動します。
仮にこのフォルダをc:\cordova\appとします。

> cd c:\cordova\app

> cordova build android -release

成功すると未署名のapkファイルが以下の場所に生成されます。

> c:\cordova\app\platforms\android\build\outputs\apk\android-release-unsigned.apk

この場所へのパスは、処理後に表示されます。

4.署名ファイルを生成する(鍵の発行)

Node.js command promptで以下のように入力します。

> keytool -genkey -v -keystore [キーストア名] -alias [エイリアス名] -keyalg RSA -keysize 2048 -validity [日数]

キーストア名は、「.keystore」にしておきます。
エイリアス名はアプリの名前にしておきます。ここでは「app2」とします。
日数は「10000」にします。一般的に10000のようです。
キーストアのパスワードは適当に考えます。ここでは「password」とします。

以下のように質問されるので、答えていきます。

キーストアのパスワードを入力してください:password
新規パスワードを再入力してください:password
姓名は何ですか。:Myoji Namae
組織単位名は何ですか。:[Enter]
組織名は何ですか。:[Enter]
都市名または地域名は何ですか。:[Enter]
都道府県名はまたは州名は何ですか。:[Enter]
この単位に該当する2文字の国コードは何ですか。:JP
CN=Myoji Namae, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=JPでよろしいですか。
[いいえ]:y
<appname>の鍵パスワードを入力してください(キーストアのパスワードと同じ場合はRETURNを押してください):[Enter]
[.keystoreを格納中]

以上でアプリのフォルダのルートに「.keystore」というファイルが生成されます。
このファイルが署名ファイルになります。

5.署名する

Node.js command promptで下記のように入力します。

> jarsigner -verbose -tsa http://timestamp.digicert.com -keystore [署名ファイル名] [apkファイル名] [エイリアス名] -sigalg SHA1withRSA -digestalg SHA1

署名ファイル名は、ここでは.keystoreです。
apkファイル名は、android-release-unsigned.apkです。このファイルは、生成された当初は「platforms\android\build\outputs\apk\」以下に格納されていますが、このままだとパス全部を入力しなければならないので、ルートフォルダ(c:\cordova\app)に予め移動しておきましょう。
エイリアス名は、ここではapp2です。

この後、パスワードの入力を求められます。

キーストアのパスワードを入力してください:password

これで署名は完了です。apkファイル名は変わりませんが、署名されたファイルになっています。

ちなみに以下のように指定しても署名できますが、その場合には警告が表示されます。

> jarsigner -verbose -keystore [キーストア名] [apkファイル名] [エイリアス名]

警告:
-tsaまたは-tsacertが指定されていないため、このjarにはタイムスタンプが付加されていません。タイムスタンプがないと、署名者証明書の有効期限(20**-**-**)後または将来の失効日後に、ユーザーはこのjarを検証できない可能性があります。

6.最適化する

zipalignというツールを使います。このツールはAndroid Studioをインストールした際に一緒にインストールされています。
まずは、zipalignを環境変数に設定して、パスを通しておきます。

環境変数の設定は、「環境変数」で検索すると「環境変数を編集」というものがみつかるので、起動します。

「変数」を「新規」に作成して、zipalign.exeへのパスを指定します。

変数名:「ZIPALIGN_HOME」
変数値:「c:\Android\android-sdk\build-tools\26.0.0\zipalign.exe」

zipalign.exeの場所は、Android Studioをc:\Androidにインストールした場合には、以下のフォルダにあります。

c:\Android\android-sdk\build-tools\26.0.0\zipalign.exe

上記の26.0.0は、インストールしているバージョンにより変わります。常に一番大きい数字のフォルダを選択してください。

さらに、PATHという変数名を選択して、「編集」を押し、「新規」をクリックして、以下のように入力します。

%ZIPALIGN_HOME%

これで完了です。

環境変数に設定したら、Node.js command promptで以下のように入力します。

> zipalign -v 4 [署名したapkファイル] [新たに生成するapkファイル]

署名したapkファイルは、ここでは「android-release-unsigned.apk」になります。
新たに生成するapkファイルは任意の名前で構いません。ここでは、「android-release-signed.apk」にします。

成功すると、アプリのルートフォルダに「android-release-signed.apk」ができあがります。
このファイルをGooglePlayにアップロードします。

次回はGoogle Playにアップロードする方法を記載します。

関連:CordovaでAndroid/iOSアプリ開発環境の構築

関連記事

auガラホ GRATINA G4のMACアドレスを調べる

auガラホのGRATINA G4のMACアドレスを調べる方法です。 MACアドレスを調べる必要性 普段、携帯のMACアドレスを調べることはありませんが、例えば、MACアドレスフィルタリングを無線ルータ…続きを読む

サイトマップ生成ツール

ウェブサイトをつくりウェブサーバーにアップデートした後にやるべきことは、サイトマップを更新して、検索エンジンに送信することです。 サイトマップを送信することにより、検索エンジンにウェブサイトのページ構…続きを読む

スマホを接続していないのに「デバイスが応答しなくなっているか、デバイスとの接続が解除されています」というエラーメッセージが出る

スマホをPCにUSB接続して外すと、「デバイスが応答しなくなっているか、デバイスとの接続が解除されています。」という警告メッセージが表示され続けてしまう、という現象が発生したので、その解決法を調べまし…続きを読む

AndroidスマホをPCに認識させる

AndroidのスマートフォンをコンピュータにUSB接続しても、認識されずにそのままになってしまったので、認識させる方法を調べました。 OS:Android 5.1 機種:富士通Arrows FX F…続きを読む

スマホで辞書登録をする

わたしはGalaxy S9(SC-03K)を使っています。 スマホの文字入力の際には、一文字入力したら変換して記号などを出せるように辞書登録をしていますが、Galaxyに変えたときに手間取ったので記録…続きを読む

USB接続トランスコーダー「GV-TRC/USB」で地デジ番組を圧縮して持ち出す

以前の記事「地デジ番組をスマホに持ち出して外出先で番組を見る」で録画した地デジ番組をスマホに入れてみる方法を紹介しました。 しかし、一つ大きな問題がありました。それは、地デジ番組のサイズ調整ができない…続きを読む

Androidスマホに入れておくべきアプリ

先日スマホを水没しました。 最新のスマホに買い替えたのですが、SDカードのデータは全滅し本体にもどんなアプリを入れていたのかあまり思い出せません。 やはりクラウドにデータを保存しておいた方が便利だなと…続きを読む

Android6.0でスマホのフォルダが表示されない

Androidスマホを使っていて、Android6.0にアップデートしたら、USBでPCにスマホを接続しても、中身(フォルダ)が表示されなくなりました。 外付けデバイスとしてスマホの機種名は表示されま…続きを読む

地デジ番組をスマホに持ち出して外出先で番組を見る

スマートホンを持つようになると、録画した地デジ番組をスマートホン上で観たいという欲求が膨れ上がってきました。そこで、どのようにすればスマホで地デジ録画番組を見ることができるか調べてみました。 用意する…続きを読む

auガラホ GRATINA 4Gでスクリーンショットを撮る

auのガラホ「GRATINA 4G」でスクリーンショットを撮る方法です。 左下の「F1」キーと右側面の「マナー/シャッター」キーを同時押しすると、スクリーンショットが撮れます。同時に押さないとF1に設…続きを読む