Xamarin.FormsのAndroidアプリのAPKファイルの生成
ストアに上げるにしてもテスト用にデバイスに配置(デバッグではなく)するにしても,APKに対して署名する必要があるようだ?
こちらも参考に.
で,テスト用のAPKを生成する際は「Ad hoc」を選ぶようだ?
ちょっとやってみよう.
Androidプロジェクトのプロパティを開く.
これはソリューションエクスプローラでAndroidプロジェクトを右クリックしてコンテキストメニューから「Properties」を選択する.
Android Manifest
左側のメニューからAndroid Manifest
を選ぶ.
アプリケーションのアイコンを指定する
Application iconでpngファイルを指定する.
ここにはAndroidプロジェクトのResources > drawable
やResources > mipmap-**
内に配置されたpngファイルが候補として表示される.
バージョンを指定する
バージョン番号
- これはビルドのたびにインクリメントされていく.
- ユーザーに見せるものではない.
- AndroidManifest.xmlに
android:versionCode
として記述される.
バージョン名
- ユーザーに見せる「バージョン」情報.
- ストアなどでも表示されるもの.
- 内部的には使われない.
- ユーザーが使っているバージョンの特定ができるのであれば,どんな文字列であってもよい.
- AndroidManifest.xmlに
android:versionName
として記述される.
Android Options
左側のメニューからAndroid Options
を選択する.
この設定はビルド設定毎に異なるので,対象のビルド設定を選択していることを確認する.今回はRelease
を選択している.
Code shrinker
サイズを小さくしてくれるのか?
r8
とかProGuard
とかわかんない.
James Montemagnoさんのアプリの設定がr8
だったので,とりあえずr8
にしておく
Code Generation and Runtime
これもよくわかっていない.
JamesさんのアプリではEnable Startup Tracing
とUse the concurrent garbage collector
の両方にチェックがついているので,そのようにした.
わかった.DotNetConf2020 Xamarin回のメモに書いてた.
事前コンパイラ(AOT)を有効にするオプションだった.
Linker
静的な解析によって,実行時に使用されるアセンブリ,型,メンバーなどを検出し,それ以外の使用されないものをパッケージから除外する.
デフォルトでSdk Assemblies Only
が選択されているので,そのままにする.
このあたりの設定は,James Montemagnoさんのアプリの設定を参考にするとしよう.これはストアにも公開している有料アプリで,そこで使われている設定なので大いに参考になるはず.
てか,ビルド設定の種類がたくさんあるなぁ.
とりあえずこのへんで.
Archive化する
ソリューションエクスプローラで,Androidプロジェクトで右クリックしてコンテキストメニューからArchive
を選択する.
もしくはVisual StudioのメニューからTools > Archive Manager
を選択する.
Archive Manger
タブが開く.
Archive化が実行され,以下のように表示されるので,完了するまで待つ.
成功したら,Distribute...
ボタンを押す.
このようなダイアログ(Distribution Channel )が表示される.
ここでは2つの選択肢がある.
Androidデバイスにインストール(サイドローディング)可能な署名されたAPKをローカルに保存する.
詳しくはこちら.
Google Playに署名されたAPKを発行する.
詳しくはこちら.
Ad Hoc
Ad Hoc
ボタンを押すと次の画面(Signing Identity)が表示される.
APKを発行するためには署名キー(または証明書)で署名する必要がある.
既存の署名キーがある場合はImport
ボタンを押す.
新規作成する場合は+
ボタンを押す.
ここでは新規作成する.
以下のダイアログが開く. Visual Studio opens dialog as shown in the next screenshot.とかdialog is displayedとか.
Androidアプリへの署名に必要な情報をここで入力する.
AliasとPasswordを設定し,後半の情報は少なくとも1つ入力すれば良いので,Organization(組織)だけ入力した.
Aliasはまあこの署名キーを区別するための名前だと思うので,適当に決めた.
Createボタンを押す.
すると以下のように,リストにアイテムが追加された.
harusoft
という名前で署名キーが作成されたということか.
この署名キーの保存場所は,以下のとおりである.
C:\Users\{USERNAME}\AppData\Local\Xamarin\Mono for Android\Keystore\{ALIAS}\{ALIAS}.keystore
この{ALIAS}
の部分が,先程設定したAliasの文字列になる.つまりさっきAliasにharusoft
という文字列を指定したので,私の場合は以下のようになる.
C:\Users\hoge\AppData\Local\Xamarin\Mono for Android\Keystore\harusoft\harusoft.keystore
注意!
この署名キーをなくさないこと! ぐぬぬ.どこに保管しておくのが良いのだろうか. プライベートなリポジトリか?
続いて,その署名キーを選択した状態で,ダイアログ下部のSave as
ボタンを押す.
APKファイルの保存先を指定するダイアログが開くので,好きな場所を指定する.今回はデスクトップにした.
Save
ボタンを押す.
パスワードを訊かれるので,先程設定した署名キーのパスワードを入力する.
OKボタンを押すと,指定したディレクトリに以下のようにAPKファイルが作成される.
APKのサイドローディング
署名されたAPKファイルが無事生成できたので,これをAndroid端末にインストールする.
AndroidアプリのサイドローディングについてはGoogleの公式サイトを参考にする.
このページの説明によると,サイドローディングとは、Google Play などのアプリストアを使用せずに手動でアプリをデバイスにインストールすることを指します,とのこと.
なるほど.
PCとAndroid端末をつないで,Android内のいずれかのフォルダにAPKファイルをコピーし,Android側でそのファイルを開けば,インストールが始まる.
色々警告されるが,自分で作ったものなので自信を持って進んでいけばよい.