# Android アプリのビルド

## ビルドの種類

Monaca では、デバッグビルド版、リリースビルド版の 2 種類の Android アプリをビルドできます。これらの相違点は、次のとおりです。

| ビルドの種類      | 説明                                                                  | インストール方法                                                                                                                    |
| ----------- | ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| **デバッグビルド** | <p>パッケージに署名がないため、</p><p>マーケットでの配布は行えません。</p>                        | <ul><li>QR コード</li><li><a href="../../../debugger/features#purojekutoopushon">ネットワーク インストール</a></li><li>サイドローディング</li></ul> |
| **リリースビルド** | <p>コードサイン ( コード署) を使用して、</p><p>署名したパッケージです。</p><p>マーケットで配布できます。</p> | <ul><li>サイドローディング </li><li><p>Google Play ストア経由</p><p>または他のマーケット経由</p></li></ul>                                            |

{% hint style="info" %}
サイドローディング ( Sideloading ) とは、一般的にはファイルのアップロード・ダウンロードを指しますが、ここでは、アプリのパッケージ ( APK 形式 ) を、マーケットを経由せずに、端末にインストールすることを指します。ビルド後、APK ファイルを直にダウロードして、インストールします。
{% endhint %}

## ステップ 1 : Android アプリの設定

1. Monaca クラウド IDE のメニューから、`設定 → Android アプリ設定` を選択します。
2. アプリに関する情報を入力します。

* 一般的な設定

| アプリケーション名          | <p>アプリの名前を入力します。</p><p>マーケット上などで表示されます。</p>                                                                                                                                                                                                                                                                                     |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| パッケージ名             | <p>Android のマーケットへのアップロード時に使用される、一意の名前を入力します。</p><p>逆ドメイン形式を推奨します ( io.monaca.app\_name など )。</p><p>英数字のみ使用でき、各節はピリオドで区切ります ( 1 つ以上のピリオドを使用 )。</p><p>ピリオドで区切られた各節の先頭文字には、英字を使用します。</p><p>また、アンダースコア ( \_ ) も使用可能です。</p>                                                                                                         |
| ビルド種別ごとにパッケージ名を分ける | <p>有効にした場合、リリースビルド版アプリのパッケージ名と</p><p>デバッグビルト版アプリのパッケージ名は、異なる名になります。</p><p>デバッグビルド版アプリのパッケージ名の拡張子は <code>.debug</code> となり、</p><p>プロジェクトのデバッガーのパッケージ名の拡張子は <code>.debugger</code> となります。</p><p>ただし、デフォルトでは、このオプションは無効になっています。</p><p>有効にしてしまうと、</p><p>決まったパッケージ名に紐付けされているプラグインが存在する場合 ( In-App Purchase など )、デバッグができなくなるためです。</p> |
| バージョン              | <p>アプリのバージョン番号を入力します。</p><p>バージョン番号には、ドット区切りの数値を使用します ( 例 : 1.0.0 )。</p>                                                                                                                                                                                                                                                        |
| バージョンコード           | <p>内部処理で使用する、アプリのバージョン番号です </p><p>( バージョンが複数ある同一アプリの処理用 )。</p><p>整数を使用します。このコードを使用して、アプリの更新の有無を決定します。</p>                                                                                                                                                                                                                       |
| フルスクリーン            | 有効にした場合、フルスクリーン ( 全画面表示 ) でアプリを実行します。ステータスバーは非表示になります。                                                                                                                                                                                                                                                                          |

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgdhQXKK-OaE2TQWFfK%2F-MgdjD5ILFdEa5wLkC0C%2Fimage.png?alt=media\&token=86c958f4-b57f-4b49-93e0-c0e372369f2d)

* その他 : ここでは、Android アプリに関する詳細を設定します。

  | 許可する外部 URL         | `*`     | アプリからアクセスできる URL ( 単数または複数 ) を指定します。「 \* 」 に設定した場合、すべてのドメインへのアクセスを許可します。 |
  | ------------------ | ------- | ------------------------------------------------------------------------ |
  | バックグラウンド時もアプリを常に実行 | 有効      | バックグラウンド時にも Cordova を実行したい場合、有効化します。                                     |
  | オーバースクロールを無効       | 有効      | WebView の端を越えたときの挙動 ( オーバースクロールの有無 ) を設定します。                             |
  | 画面の向き              | Default | Landscape または Portrait を指定できます ( アプリ実行時の画面の向き )。                         |

設定後、`保存する` をクリックします。

{% hint style="info" %}
現在、iOS の \[ App ID ] または Android の \[ パッケージ名 ] のいずれかを変更すると、両方とも同じ名前に更新されます。それぞれに別の名を設定する場合には、[ App ID ( iOS 側 ) と パッケージ名 ( Android 側 ) にそれぞれ異なる値を設定するには？ ](https://docs.monaca.io/ja/faq/application/#app-id-ios-%e5%81%b4-%e3%81%a8-%e3%83%91%e3%83%83%e3%82%b1%e3%83%bc%e3%82%b8%e5%90%8d-android-%e5%81%b4-%e3%81%ab%e3%81%9d%e3%82%8c%e3%81%9e%e3%82%8c%e7%95%b0%e3%81%aa%e3%82%8b%e5%80%a4%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b%e3%81%ab%e3%81%af)をご確認ください。
{% endhint %}

&#x20;   3\. アダプティブ アイコンの設定

Cordova 9.0 以降の Monaca プロジェクトを使用している場合は、Android 8.0 以降にアダプティブ アイコンを設定することができます。

アダプティブ アイコンを設定する場合は、`res` フォルダー配下に画像ファイルをアップロードし、config.xml の `icon` タグに `background` 属性と `foreground` 属性を追加します。これまでの `src` 属性が設定されている場合は、src 属性の値は使用されません。

アダプティブ アイコンに対応していない OS バージョン場合は、`foreground` 属性に設定された画像が表示されます。これまでの `src` 属性を設定した場合は、src 属性の値が優先されます。

以下は、`/res/android/icon/` 配下に画像を配置している例になります。

```markup
<platform name="android">
 <icon density="ldpi" background="/res/android/icon/ldpi-background.png" foreground="/res/android/icon/ldpi-foreground.png"/>
 <icon density="mdpi" background="/res/android/icon/mdpi-background.png" foreground="/res/android/icon/mdpi-foreground.png"/>
 <icon density="hdpi" background="/res/android/icon/hdpi-background.png" foreground="/res/android/icon/hdpi-foreground.png"/>
 <icon density="xhdpi" background="/res/android/icon/xhdpi-background.png" foreground="/res/android/icon/xhdpi-foreground.png"/>
 <icon density="xxhdpi" background="/res/android/icon/xxhdpi-background.png" foreground="/res/android/icon/xxhdpi-foreground.png"/>
 <icon density="xxxhdpi" background="/res/android/icon/xxxhdpi-background.png" foreground="/res/android/icon/xxxhdpi-foreground.png"/>
</platform>
```

以下は、src 属性を設定した例になります。

```markup
<platform name="android">
 <icon src="/res/android/icon/ldpi.png" density="ldpi" background="/res/android/icon/ldpi-background.png" foreground="/res/android/icon/ldpi-foreground.png"/>
 <icon src="/res/android/icon/mdpi.png" density="mdpi" background="/res/android/icon/mdpi-background.png" foreground="/res/android/icon/mdpi-foreground.png"/>
 <icon src="/res/android/icon/hdpi.png" density="hdpi" background="/res/android/icon/hdpi-background.png" foreground="/res/android/icon/hdpi-foreground.png"/>
 <icon src="/res/android/icon/xhdpi.png" density="xhdpi" background="/res/android/icon/xhdpi-background.png" foreground="/res/android/icon/xhdpi-foreground.png"/>
 <icon src="/res/android/icon/xxhdpi.png" density="xxhdpi" background="/res/android/icon/xxhdpi-background.png" foreground="/res/android/icon/xxhdpi-foreground.png"/>
 <icon src="/res/android/icon/xxxhdpi.png" density="xxxhdpi" background="/res/android/icon/xxxhdpi-background.png" foreground="/res/android/icon/xxxhdpi-foreground.png"/>
</platform>
```

{% hint style="info" %}
現在、Androidアプリ設定画面からはアダプティブ アイコン用アイコン画像の表示・アップロードができません。上記の方法で直接config.xmlファイルに設定を加えてください。
{% endhint %}

## ステップ 2 : Android キーストア ( KeyStore ) の設定

キーストアは、バイナリーファイルです。このファイルには、秘密鍵 ( 単数または複数 ) が格納されています。秘密鍵は、組織または個人を表す 「 判子 」 の役割をします。キーストアは、パスワードを使用して、暗号化されます ( パスワードを紛失した場合には、復旧できません )。キーストアを紛失した場合、または、別のキーストアで上書きされてしまった場合、同じ鍵を使用しても、署名済みパッケージを再署名することはできません。\[ 翻訳者メモ ： キーストアの内容に関しては、いろいろな説明方法があるようで、人によっては、「 キーストアには秘密鍵と証明書の情報がセットで格納されている 」、「 キーストアとは証明書そのものであり、そこには鍵情報が格納されている 」 としています。なお、このキーストアを apk ファイルに添えれば、「 署名 」 完了となります ]

リリースビルド版の Android アプリをビルドするときに、キーストアが必要となります。Monaca では、新規のキーストアを作成するか、または、既存のキーストアをインポートできます。ここでは、新規に作成することを前提に解説します。次の手順に従います。

1. Monaca クラウド IDE のメニューから、`設定 → Android キーストア設定`を選択します。
2. 「 キーストアとエイリアスの管理 」 画面が表示されます。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgdhQXKK-OaE2TQWFfK%2F-Mgdjpx_A0FiAy7i-ckN%2Fimage.png?alt=media\&token=8ebde3e1-918f-4815-a6b6-f86392f43eaa)

&#x20;   3\. `クリアして新規作成`ボタンをクリックすると、キーストアの設定画面が表示されます。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgdhQXKK-OaE2TQWFfK%2F-MgdjzMujQfFyzVyGzbF%2Fimage.png?alt=media\&token=619e38d1-00ac-4967-9a13-e48f49b9bf3a)

&#x20;   4\. 上のスクリーンショットに表示されている項目に、必要な情報を入力します。

* エイリアス : アプリの署名時に使用する秘密鍵の名前です。1 つのキーストア内に、複数のエイリアスを格納できます。
* エイリアスのパスワード : エイリアス ( 秘密鍵 ) 用のパスワードです。
* キーストアのパスワード : キーストア用のパスワードです。このキーストアをインポートするときに、このパスワードが必要となります。

&#x20;   5\. 次に、`キーストアとエイリアスを作成する` ボタンをクリックして、キーストアを作成します。

{% hint style="info" %}
キーストアを紛失した場合、同じ鍵を使用しても、署名済みのパッケージに再署名を行うことはできなくなります。よって、アプリの署名に使用したキーストアの取り扱いには注意しましょう。バックアップを取ることを推奨します。キーストアをダウンロードする場合には、`エクスポート` ボタンをクリックします。
{% endhint %}

## ステップ 3 : アプリのビルド

1. Monaca クラウド IDE のメニューから、`ビルド → Android アプリのビルド` を選択します。
2. 目的に応じたビルドの種類を選択して、 `ビルドを開始する`ボタンをクリックします。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgdhQXKK-OaE2TQWFfK%2F-MgdkByCaDw7jsxJ8YEo%2Fimage.png?alt=media\&token=c487317e-b4c6-4d7d-bc82-005322e7a922)

&#x20;   3\. 「 リリース向けビルド 」 の 「 リリースビルド 」 を選択した場合、ビルドを開始する前に、署名用エイリアスの選択とパスワードの入力を行います。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgdhQXKK-OaE2TQWFfK%2F-MgdkIUPenYqaKBwpni9%2Fimage.png?alt=media\&token=813f1543-e601-4299-ae71-eee1a219790a)

&#x20;   4\. ビルドが完了するまで、しばらく待ちます。ビルドが成功した場合には、次のような画面が表示されます。ビルドの完了後、ビルド済みアプリをインストールまたはダウンロードできます。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgdhQXKK-OaE2TQWFfK%2F-MgdkKXYJfpTtFI8FnWD%2Fimage.png?alt=media\&token=ff77353d-b897-4eba-8215-8a5718ef80af)
