AmazonアプリストアにAndroidアプリを登録してみた

# 概要

[Amazonアプリストア](https://www.amazon.co.jp/Android%E3%82%A2%E3%83%97%E3%83%AA/b?node=2381130051)に自作アプリ[CIFS Documents Provider](https://f-droid.org/packages/com.wa2c.android.cifsdocumentsprovider/)を登録してみたので、その内容について書きます。

# Fire OSとAmazonアプリストアについて

Amazonでは、[Fire タブレット](https://www.amazon.co.jp/Fire-タブレット-ファイア-Amazon/b?ie=UTF8&node=3933931051)という、電子書籍リーダ向けのタブレット端末が販売されています。これはE-ink画面のKindleとは異なり、Fire OSというAndroidをベースとしたOSが搭載されています。AndodroidとFire OSのバージョンの対応関係は、次のページに書かれています。

[Fire OSの概要 \| Amazon Fire TV](https://developer.amazon.com/ja/docs/fire-tv/fire-os-overview.html)

抜粋すると、次のようになります。

> * Fire OS 7： Android 9ベース（Pie、APIレベル28）。
> * Fire OS 6： Android 7.1ベース（Nougat、APIレベル25）。
> * Fire OS 5： Android 5.1ベース（Lollipop、APIレベル22）。

Fire OSではAndroidアプリを動作させることができますが、Google Playは入っておらず、代わりにインストールされているアプリ配信プラットフォームがAmazonアプリストアになります。

なお、Fire OSでAndroidアプリを動作させることは出来ると言っても、Googleに依存した各種サービスを利用することはできません。例えば、Google MapやFirebaseのSDK等は使えませんし、Googleアカウントと紐付いた機能(例えば自動パスワード入力等)も使えなくなります。これにより、アプリで出来る事は出来る事は大幅に制限されますので、利用できなくなるアプリも数多くあります。

ちなみに、通常のAndroid端末でも[アプリをインストール](https://www.amazon.co.jp/gp/mas/get/android)することで、Amazonアプリストアを使えるようになります。

# アプリ登録方法

## 開発者アカウント

まず、Amazonの開発者アカウントを作成する必要があります。私は既に持っていたのでここでは省略します。詳細は次のページを参照。

[Amazon開発者アカウントと権限の管理方法 | Amazonアプリストアへの申請](https://developer.amazon.com/ja/docs/app-submission/manage-account-and-permissions.html)

Amazonの開発者アカウントは、通常のAmazonアカウントに紐付く形で作成されますが、ここで注意する点は、Amazon.co.jpで作った場合とAmazon.comで作った場合では、開発者アカウントが異なるという点です。検索すると多数情報が出てきますが、色々ややこしい仕様になっているようです。Amazon.co.jpとAmazon.comを同じメールアドレスで運用している人は注意が必要かと思います。
自分の開発者アカウントは既にAmazon.com側で作ってしまっていたため、Amazon.comで運用していますが、日本であればAmazon.co.jpで作った方が良いかと思います。
ちなみに、Amazonストアアプリを公開する分には、Amazon.comでも大丈夫そうでした。


## 申請方法

申請の詳細ついては、次のページに書かれています。

[アプリの申請について \| Amazonアプリストアへの申請](https://developer.amazon.com/ja/docs/app-submission/getting-started.html)

申請は、[Amazon開発者ポータル](https://developer.amazon.com/settings/console/home)の[アプリ一覧](https://developer.amazon.com/apps-and-games/console/apps/list.html)から行います。
申請時の入力内容は、Google Playに登録する物と大体同じです。ただし、標準が英語なので、英語のテキストは用意した方が良いかと思います。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78503/df9279a7-6f87-7396-cb65-d0f1835879c2.png" width="640px" />

申請時の留意点をいくつか書いておきます。

* Google Playと異なり、登録するアプリのAPKファイルを用意する必要があります(AABファイルは対応していません)。
* APKに付与されている署名は削除され、ストア側で再署名されるため、アップロード時の署名は特に問われないようです。新しくビルドしたものや、(Google Play登録済みなら)Google PlayコンソールのApp Bundleエクスプローラ画面からダウンロードしたもの等が使えます。
* Fire OSのバージョンとAndroidのAPIバージョンを確認し、目的の端末で動かせるかどうかのチェックはした方が良いと思います。
* 申請後に審査が行われますが、私の場合は大体4,5日程度の日数がかかりました。(開発者画面に表示されている公開の予想時刻はあまりアテにならなかったです。)

## テスト

アプリ審査前に、特定のユーザをテスターとして登録してアプリのテストを行うことができるようになっています。アプリの申請画面の「APK」タブにある以下のボタンを押すと、ライブアプリテスト画面に遷移するので、そこでテスターを追加して、公開前のアプリをテストすることができるようです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78503/b5199b9a-30db-73e2-cfc6-b59acbe07909.png" width="640px" />

「ようです」と曖昧に表現しているのは、私が実際にやったことが無いためです。
正確には、「やろうとしたけどできなかった」です。ライブアプリテストの登録を行うとテスターに招待メールが届くのですが、そのアプリのリンク先のストア画面でエラーが出てしまい、アプリのダウンロードが出来ませんでした。そのため、これについては一旦保留です。
(ちなみにこの件については、私のアカウント周りが原因である可能性を疑っていますが、実際の原因は不明。)

## リジェクト対応

私の場合、申請した後に審査が通らずリジェクトされました。その際の審査結果画面は以下のようになります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78503/c1b87ba0-27cb-9996-f619-ee394aac2564.png" width="640px" />

理由は次のように書かれていました。

「We are unable to test your app as it does not function as intended. The app exits/ force closes/ freezes/ displays an error message after being launched. Please fix the issue and re-submit the app.」

要するに、何らかの理由でアプリが落ちるということのようです。正直な所、これの原因が結局よく分らなかったです(一度も遭遇していなかったので)。とりあえず、いくつかのコードを修正して再提出したらそのまま審査が通ってしまったので、結局何だったのかよく分かっていません。
ただこの審査のタイミングによって結果が異なる様子から、アプリの審査は人の手で動かして行われているであろうと推測されます。なので、Google Play同様に審査には多少ブレが生じる可能性がありそうです。

## アプリの公開

審査が通ると、ストアにアプリが公開されます(通過の通知が来てから公開されるまでに1日程度のタイムラグがありました)。今回、公開されたページは次になります。

[CIFS Documents Provider:Amazon\.co\.jp:Appstore for Android](https://www.amazon.co.jp/dp/B09D4264PB)

## アプリの更新

アプリをバージョンアップする場合は、開発者ページのアプリのメニューにある「次期バージョン」から行います。更新画面は登録画面とほぼ一緒で、ほとんどの入力項目に既存のバージョンの内容が入力済みとなっていますが、次の入力だけは必ず行う必要があります。

* 「アプリの説明」タブにある「リリースノート」を記述する。
* 「APKファイル」タブで新バージョンのAPKを登録する。

他、必要な情報を更新したら、「アプリの申請」ボタンから申請を行います。バージョンアップ時も、登録時と同様に審査が行われます。

ちなみに、現在のストアに表示されているテキストや画像の内容だけを更新したい場合は、開発者ページのアプリのメニューにある「現行バージョン」から行うことができます。ただ、これも申請すると審査が終わるまで結構時間がかかる点に注意です。

# 最後に

Amazonアプリストアへの登録について、ザックリとした説明は以上になります。
Amazonアプリストアに登録するメリットは、Kindle Fire端末でストアからアプリがインストールできるという点です。ただ、Kindle Fireのユーザ自体がAndroidに比べてかなり少ないようなので、わざわざアプリをKindle対応させる手間をかけてまで登録する必要性は薄いと感じました。
今回、「何となくやってみたかった」という理由で試しにやってみましたが、個人的には、Google Play以外の配信プラットフォームに登録するための知見を得られた点は良かったと思います。
既にGoolge Playに登録済みでアプリであれば、その登録情報が再利用できるため、Amazonアプリストアの登録自体はそれほど手間ではないです。英語対応済みかつ、Goolgeサービスに強く依存したアプリでなければ、登録してみても良いかと思います。