RPGツクールMVのAndroidアプリ化(Cordova)

# RPGツクールMVのAndroidアプリ化(Cordova)

## はじめに

本書は、RPGツクールMVで作成したプロジェクトをCordovaを使用してAndroidアプリ化する手順を記述した物である。
Windows環境での記述となる。
2019年3月25日記述。

## 全体の流れ

以下のフローチャートが全体の流れである。

![dev_101.png](https://qiita-image-store.s3.amazonaws.com/0/373498/ceaf15b9-2986-14e0-9138-0cf64af21133.png)

## デベロッパー登録

Google Playで公開する場合、Androidのデベロッパー登録が必要である。
初回登録時に＄25必要である。

また、Androidアプリ作成時にパッケージ名を指定するが、このパッケージ名は重複を避けるためにドメイン名を使用するのが通例である。ドメインを持っていない場合、ドメイン取得を行う。尚、無料でドメイン名を取得する方法もあるので適宜利用すること。

他に、Androidアプリで広告を表示する場合、AdMobなどの登録が必要である。この場合、住所や入金先口座の登録が必要である。

尚、Google Playを経由しない場合、Android端末側(つまりユーザー側)で「提供元不明のアプリ」のインストールを許可する事でAndroidアプリのインストールが可能である。

![dev_102.png](https://qiita-image-store.s3.amazonaws.com/0/373498/e3155c49-c637-d369-f5c2-d03e9721037b.png)

## 開発環境の構築

開発環境の構築は以下の流れで行う。

![dev_103.png](https://qiita-image-store.s3.amazonaws.com/0/373498/ef6346dd-d77b-132f-def4-2363cbe9a964.png)

### JDKのインストール

JDK (Java SE Development Kit 8) をインストールする。
AndroidはJavaアプリを動かすのでJDKが必要である。

### Android SDKのインストール

AndroidのSDK (Software Development Kit) をインストールするために、Android Studioをインストールする。
尚、Android Studioのデフォルトでは、ユーザーフォルダ配下にSDKがインストールされるので、「C:\Android\sdk」などに変更してもよい。
また、AndroidのSDKはNTFS圧縮により効率よく圧縮できるので、ストレージ容量に余裕がない場合はNTFS圧縮するとよい。

Android Studioのインストール後、Android Studioで、Androidの新規プロジェクトを作成する。これにより、必要なSDKがダウンロードされる。

### Node.jsのインストール

Node.jsをインストールする。
これは、npmというツールを使うために必要である。

### Cordovaのインストール

Cordovaのインストールは、コマンドプロンプト(またはパワーシェル)を使用し、npmコマンドでインストールする。

```text
npm install -g cordova
```

Cordovaの詳細については、Cordova公式サイトにドキュメントがあるので以下を参照すること。  
<https://cordova.apache.org/docs/en/latest/>

### 環境変数の設定

まず、以下の変数を追加する。
ここには、「jdk1.8.0_201」などのJDKのフォルダを指定する。

```text
JAVA_HOME
```

次に、以下の環境変数を追加する。
ここには、Android SDKをインストールしたフォルダを指定する。

```text
ANDROID_HOME
```

その後、Pathに以下を追加する。

```text
%JAVA_HOME%\bin
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools
%ANDROID_HOME%\tools\bin
%ANDROID_HOME%\build-tools
```

### 開発環境のバージョン

作成した開発環境のバージョン確認は、コマンドプロンプトを使用し、以下のコマンドで行う。

```text
java -version

npm --version

cordova --version
```

また、npm および Cordova のアップデートが必要な場合、以下のコマンドでアップデートする。

```text
npm update -g npm

npm update -g cordova
```

## 作品別環境の設定

開発環境が構築できたら作品別のCordovaの環境を設定する。

![dev_104.png](https://qiita-image-store.s3.amazonaws.com/0/373498/1d9b7054-7299-c459-d9ad-bbda688496d2.png)

### Cordovaで作品別フォルダを作成

コマンドプロンプトで以下のコマンドを順に入力し、Cordovaの作品別フォルダを作成する。

```text
cordova create 作品別フォルダ名 パッケージ名 アプリ名 -d

cd 作品別フォルダ名

cordova platform add android
```

### RPGツクールMVでデプロイメント

RPGツクールMVのデプロイメントで、「Android / iOS」を選択してデプロイメントする。
デプロイメントして出来た「www」フォルダを作品別フォルダのwwwフォルダと置き換える。
この時、作品別フォルダ側にあるサンプルデータは不要なので、上書きではなく削除するとよい。

### config編集

作品別フォルダ内にある config.xml を編集する。
以下の設定が不要な場合、編集しなくても構わない。

#### アプリバージョンの指定

config.xml の2行目にアプリバージョンを設定する箇所があるので、バージョンアップ時に値を更新する。

```text
<widget ... version="1.0.0" ...>
```

Androidアプリにはアプリのバージョンが2つある。1つは作者が任意に設定するバージョンで、もう1つが最新バージョンのチェックに使うバージョンである。後者は基本的に1ずつ増やすのだが、Cordovaでは上記のバージョンに応じて設定されるらしいので値を増やしておけばよい。

#### 作者情報

config.xml に「author」という項目があるので、作者情報に書き換える。

#### Androidバージョンの指定

RPGツクールMVのCordovaでのAndroidアプリ化では、Android 5.0(バージョン21)より古いバージョンでは動作しないので、インストール対象から除外する。
また、「targetSdkVersion」はなるべく最新バージョンを指定する。

```text
<platform name="android">
  <allow-intent href="market:*" />
  <preference name="android-targetSdkVersion" value="28" />
  <preference name="android-minSdkVersion" value="21" />
</platform>
```

Androidバージョンの指定は config.xml に元々以下の記述があると思われるので、ここに記述を加える。

```text
<platform name="android">
  <allow-intent href="market:*" />
</platform>
```

#### 画面の自動回転

Android端末を傾けると画面が自動回転するが、以下の設定をする事で回転しないように出来る。
以下のいずれかを設定する。

```text
<!-- 縦固定 -->
<preference name="Orientation" value="portrait" />

<!-- 横固定 -->
<preference name="Orientation" value="landscape" />
```

設定する箇所はXMLファイルの階層に気を付ければよいのだが、分からない場合は、以下の記述の「次の行」に記述しておくとよい。

```text
<content src="index.html" />
```

#### アイコンの変更

Androidアプリのアイコンを指定する事が出来る。
作品別フォルダ内の相対パスを書く。
以下の例では、デプロイメントしたRPGツクールMVの「icon」フォルダを指している。

```text
<icon src="www/icon/icon.png" />
```

設定する箇所はXMLファイルの階層に気を付ければよいのだが、分からない場合は、以下の記述の「次の行」に記述しておくとよい。

```text
<content src="index.html" />
```

### prepare

作品別フォルダ内で何らかの変更を行った場合、コマンドプロンプトで以下のコマンドを実行すること。

```text
cordova prepare
```

## デバッグビルド

以下のコマンドでデバッグ用のAndroidアプリをビルドする。
デバッグビルドでは署名はしない。

```text
cordova build android
```

## テスト

作成されたapkファイルをAndroid端末に送り、動作確認する。
USBケーブル経由でも、クラウド経由でも構わないが、Android端末側で「提供元不明のアプリ」のインストールを許可しておくこと。

## リリースビルド

```text
cordova build android --release
```

## 署名

### キーストアの作成

Androidアプリに署名するキーストアを作成する。
以下のコマンドで作成する。
同じアプリでは、キーストアは同じファイルを以降も使い続けるので、作成は1回である。

注意点としては、パスワードを2つ設定するので忘れないようにすること。

コマンド入力後に、いくつか設定する項目がある。
その中で「この単位に該当する2文字の国コードは何ですか。」という項目があり、日本は「81」である。

```text
keytool -genkey -v -keystore キーストアファイル名 -storepass ストアのパスワード -alias 別名 -keypass キーのパスワード -keyalg RSA -validity 10000
```

コマンドの解説

```text
-genkey -v
新しいキーファイルを作るよう指定する。

-keystore
作成するキーストアファイルのファイル名を指定する。

-storepass
ストアのパスワードを指定する。

-alias
キーの別名を指定する。

-keypass
キーのパスワードを指定する。

-keyalg
暗号化アルゴリズムを指定する（ここではRSA）。

-validity
鍵ファイルの有効期間（日数）を指定する。十分な長さにしておく。
```

### キーストアによる署名

キーストアが用意できていれば、以下のコマンドで署名する。
コマンドを入力するとパスワード入力を求められるのでパスワードを入力する。

```text
jarsigner -verbose -keystore キーストアファイル名 アプリファイル.apk エイリアス名
```

### アラインの設定

署名後、以下のコマンドを実行する。
Androidアプリは4ビットずらしてデータを持っているらしく、その設定を行う。

```text
アラインを設定する
zipalign -v 4 元ファイル.apk 変更後ファイル.apk

アラインが正しく設定されたか確認する
zipalign -c -v 4 変更後ファイル.apk
```

## 公開

Google Playに登録する。
もしくは、何らかの方法でapkファイルをダウンロードさせる。

## 追記

Androidアプリには、100MBの制限があり、超える場合は分割しないといけない。

以上。