Xamarinで作ったAndroidアプリをGoogle Playストアにリリースする

Xamarinアプリを作ってみたは良いものの、アプリをどうやってGoogle Playストアへリリースするのかわからなかったので、調べたことをまとめてみました。

参考は以下のXamarin本家のサイト
https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_application/


# はじめに

Androidアプリの配布には方法がいくつかあります。

* Webサイトからダウンロードする
* Eメールで配布する
* Google Playストアにリリースする
* Amazon Android Appストアにリリースする

<img width="600" alt="スクリーンショット 2016-12-23 19.54.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/110216/6dfd99d4-21e1-6617-3ce4-7fa6a542c450.png">

今回はGoogle Playストアにリリースすることをメインに解説しますが、
上記のようにベースの配布までの準備処理はどの配布方法でも一緒です。

# 事前準備

[Google Play developer console](https://play.google.com/apps/publish)にアクセスして、登録料$25 USD払って、アプリ登録可能ユーザになる必要があります。
$25 USDは全然安い＆一回登録すればOK。
りんごマークのほうは登録に１万２〜３千円かかるし、年更新で更新料が発生します。りんごマークよりは全然おすすめ！

# 準備編概要

1. アプリケーションアイコンの作成
2. アプリケーションのバージョン指定
3. リンカーの設定
4. ProGuardの設定
5. Debugの無効化
6. コンパイル
7. アーカイブ

## 1. アプリケーションアイコンの作成

### ベースとなるアイコンの作成

今回私は以下を参考にアイコン作成しました。
http://www.mayoinu.com/entry/2014/11/15/155916

keynoteで以下のような簡単なアイコンを作りました。
あとはこれをコピーしてToyViewerというツールを使って画像化するだけ。
あっという間でしたねー。

![image](https://qiita-image-store.s3.amazonaws.com/0/110216/30939671-45c2-0752-d734-d3204ee4a549.png)

#### ツール

* [keynote](https://itunes.apple.com/jp/app/keynote/id361285480?mt=8)
* [ToyViewer](https://itunes.apple.com/jp/app/toyviewer/id414298354?mt=12&ign-mpt=uo%3D4)

### アイコンのサイズ変更

Androidはアイコンの実際の大きさに基づいて、最適なサイズの画像を表示します。
そのためResourcesフォルダ以下にはさまざまなサイズ用のdrawableフォルダがあります。
そこにサイズごとのアイコンを配置します。

サイズごとのアイコンはどうやってつくるかというと、WEB上にサイズ変更してくれるサイトが多くあります。
今回はこのサイトを使いましたが、他にもあるので調べてみてください。
https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html#foreground.space.trim=1&foreground.space.pad=0&foreColor=607d8b%2C0&crop=0&backgroundShape=square&backColor=ffffff%2C100&effects=none

## 2. アプリケーションのバージョン指定

AndroidManifest.xmlを開き、`android:versionCode`,`android:versionName`を指定します。
ここでは`android:versionCode="1"`,`android:versionName="1.0.0"`とでも指定しておきましょう。

## 3. リンカーの設定

ビルド構成がReleaseでのリンカーを'SDKアセンブリのみをリンクする'に設定します。
以下は本家のサイト（英語バージョン）

<img width="447" alt="スクリーンショット 2016-12-23 21.47.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/110216/2c42cebb-3aca-b8c3-53ed-2925a512c300.png">

## 4. ProGuardの設定

ProGuardはJavaコードを難読化してくれるツールです。
詳しく[Proguardのサイト](https://www.guardsquare.com/en/proguard)を参考にしてください。
ProGuard以外にも難読化ツールはありますが、ProGuardのいいところはOSSで無料なところです。

一応'ProGuard'を有効にするで、有効化できますが、それだけだと意味がないみたいです。
ただ今回は重要なアプリではないので（課金もしないです）、有効化もせずに行こうかと。

<img width="429" alt="スクリーンショット 2016-12-23 22.31.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/110216/39250c25-52b2-1c61-5771-d667cc0969ff.png">

他にもセキュリティ関連での設定は多くありますが、長くなるのでここではあえて触れません。
商用として売り出す場合などはもっと強いセキュリティ設定が必要になります。

## 5. Debugの無効化
AssemblyInfo.csに以下の設定を入れて、リリース時にはデバッグを無効化しておきます。

```
// Must be no debuggable on production.
#if DEBUG
[assembly: Application(Debuggable = true)]
#else
[assembly: Application(Debuggable=false)]
#endif
```

## 6. コンパイル

ここはビルド構成をReleaseにした状態でコンパイルするだけです。
'ビルド => すべてビルド'を選択します。

## 7. アーカイブ

'ビルド => 発行のためのアーカイブ'を選択します。


# アプリケーションリリース編概要

ここで[Xamarinの公式ページ](https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_application/part_3_-_publishing_an_application_on_google_play/)にそって実施しましたが、

> Google Play requires you to manually upload your first APK for this app. You can use an ad-hoc APK for this.

というメッセージが表示されてしまったため、手動アップロードを行いました。
（さっきのページを最後までやって、一番下に補足みたいに「これでできないなら手動アップロードしろ！」って書いてありました。。。最後までやって損した気分です。。。）

それでは手動アップロードによるアプリケーションリリースの解説です。

1. アドホックでapkファイルの作成
2. 署名を作成
3. Google Playストアに手動でapkのアップロード
4. 画像などアップロード

## 1. アドホックでapkファイルの作成
さきほどのアーカイブをした後に現れる画面で、今回リリースしたいアプリを選択して'Sign And Distribute...'を選択します。
今回は手動でアップロードするために、まずはアドホックで選択してapkファイルを作成します。

<img width="352" alt="スクリーンショット 2016-12-28 13.43.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/110216/324eabba-3c7e-8f3d-d993-a6f139d9f51d.png">

### 注意！
ここで気をつけてほしいのですが、以下のようなときは署名ができずにエラーも出ずに「署名と配布」画面がクローズします！何が起きたからわからず、はまってしまうので注意が必要です！！
（私は１日ほどハマりました。。。）

* パッケージ名に不適切な記号（例えばハイフンなど）がある

## 2.署名を作成

Xamarin.Studioには署名の'キーの新規作成'があるので、誰でもすぐに署名が作成できます。
必要な情報を入力します。※印が付いている必須項目だけで十分です。

<img width="436" alt="スクリーンショット 2016-12-28 13.50.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/110216/140826f8-02bc-cd78-94cf-4b6d870aae5e.png">

## 3. Google Playストアに手動でapkのアップロード
[Google Play Developer Console](https://play.google.com/apps/publish)にアクセスし、新しくアプリを作成しましょう。

<img width="851" alt="スクリーンショット 2016-12-28 13.52.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/110216/27b18a10-4bfe-2a03-1075-e07b0771dc29.png">

さきほど作成したapkファイルを実際にアップロードしましょう。
版はどれを選んでも構いません。適用されるユーザ数が異なります。

* 製品版 ->　Google Playストアで全員に配布される。
* ベータ版テスト -> テストユーザの方の多くに配布される。
* アルファ版テスト ->　テストユーザの一部の方に配布される。

<img width="703" alt="スクリーンショット 2016-12-28 13.53.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/110216/44a1c2f3-61d0-061f-6d97-f6ebe7fe451d.png">

## 4. 画像などアップロードしたりして公開
あとは通常のAndroidのリリースと同じく、アプリのアイコンやスクリーンショットを作ってアップロードしたり、説明文言を追加したりしましょう！
ここはGoogle Play Developer Consoleで必要とされる作業をしていけばよいので、説明は不要かと思います。

すべての作業が完了したらアプリを公開できるようになります！！

# まとめ

やっぱりまだまだXamarinに関する日本語記事は多くないので、メインは公式ページですね。
これからどんどんXamarinに関する記事が増えていけば、利用者も増えていくのかなぁと思います。

Xamarinの勉強がてらリリースしたアプリは以下です。もうホントしょぼい機能だけなのでお恥ずかしい限りですが。。。
https://play.google.com/store/apps/details?id=kumasuzu.aha.oretama