Androidのキーストアについて調べたのでメモ。
キーストアとは
キーストアとは「このアプリはこの人が作ったものですよ!」というのを証明するために使われるファイルで、アプリを作成する段階でアプリに埋め込まれるらしい。
俗に言う「デジタル署名」と呼ばれるもの。
Google Playで公開しているアプリをアップデートする場合は、このキーストアが同じアプリでないと同一のアプリとはみなされない。
金庫の中に金庫が入ってるイメージ
キーストアは「金庫をしまうための金庫」みたいなイメージ。
まずキーストアに開けるには、キーストア自体のパスワードが必要。
そして無事キーストアを開けることができたら、今度はキーストアの中にある「どの金庫(エイリアスまたは秘密鍵などとも言う)を開けるか」を選んで、その金庫のパスワードを入力する。
それでやっとデジタル署名情報が取得できる、みたいな仕組みらしい。
つまり、キーストアを使うには
- キーストアファイル
- キーストアのパスワード
- エイリアス名(これは選択制)
- エイリアス名に対応したパスワード
の4つが最低限必要。
キーストア → 1つのアプリ
基本的に個人で複数のアプリを開発する場合は
- アプリA:キーストアA(エイリアスA)
- アプリB:キーストアA(エイリアスA)
- アプリC:キーストアA(エイリアスA)
という感じで1つのキーストアと1つのエイリアスを使い回すのが普通らしいけど
のちのちアプリを譲渡したりするかもしれない場合は、アプリごとにキーストアを作っておいて、キーストアごと譲渡したりするケースもあるらしい。
キーストア → めちゃ大事
キーストア=めちゃくちゃ重要なファイルなので
絶対になくさないようにしなければいけない。
キーストアはなぜ必要なのか
プログラミング素人のワイ。以下のような疑問が浮かんだ。
そもそもAndroidアプリを配布しようと思ったらGoogle Play経由で配布することになるよね?
てことはGoogle Playにアプリをアップしようと思ったらGoogleアカウント(厳密にいうとGoogle Play Console)にログインする必要があるよね?
それってつまり、Googleアカウントにログインできるのは本人だけなわけでアップロードできている時点で100%本人がアップロードしたアプリという担保が取れるわけだから、キーストアとかいう仕組みいらなくね?
この疑問について調べたところ、以下のような記述を見つけた。
また、Playストアのような公の場にアプリを公開せず、自身のウェブサイトなどで直接apkファイルを公開するような形でアプリを配布する場合、ダウンロードした人はapkファイルから署名内容を確認することができます。それによって、サイトが乗っ取られて改ざんされたapkファイルが公開されているわけではない、という確認にはなるんじゃないですかね。そこまでする人もなかなかいないと思うけど。
あーたしかに自分で配布するという手もあるのか。
たしかフォートナイトとかいうアプリも「Googleに手数料を取られるのがイヤだから」とかいう理由で、自社のウェブサイトで配布したりしてますよね↓。
参考:Android版『Fortnite』、Google Playを利用せず独自配信を発表。「30%の手数料が高すぎるから」 – Engadget 日本版
あと(これは自分の予想だけど)、アプリをアップデートされたAndroid端末側も「すでにインストールされているアプリと同一のものか」を判断するのにAppliction ID以外にキーストアも使ってたりするんじゃなかろうか。
コメント