0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Android】アプリをGooglePlayにリリースする時の署名について整理してみた

Posted at

はじめに

自作のアプリをGoogle Play Consoleに登録して、内部テストをしようとしていましたが、その時に、Googleがアプリに署名してくれる「 Play アプリ署名」とGoogle Play Consoleにか自PCからアプリをアップロードする際に使用する「キーストアの署名」の違いがよくわかっておらず、大変な目にあったので、美貌の意味を込めて記事に残します

違いを理解しておらず困ったこと

自作アプリの特徴としては以下です。

  1. DBはfirebaseを使用
  2. 自作アプリのログインはGoggleアカウント認証を利用

下の画像の対応関係を理解していなかったが故に
AndroidStudioのエミュレータでは問題なく動作していましたが、
GooglePlayConsoleから実機に自作アプリをインストールした際に、
2のGoogleアカウントを利用したログインができない。 という事象にぶち当たりました。
アプリ.jpg

アプリからGoogle認証でログインする際の流れ

アプリ (3).jpg

  1. アプリでGoogleでログインボタンを押す
  2. アカウントを選択すると、Googleのバックグランドで認証が実施
  3. Googleが認証結果をトークンで返却
  4. 受け取ったトークンをfirebaseに送付
  5. firebaseでトークン結果を検証
  6. firebaseが検証結果を返す
  7. アプリ側で6の結果を元にログイン画面からホーム画面に遷移

という感じだと思います。
この認証フローの時にもう一つ理解しておきたいのがアプリのフィンガープリントです

Androidにおけるフィンガープリント

フィンガープリントはAPIプロバイダ(今回はfirebase)が接続してくるアプリの身分を確認するために使用されます(下の図でいうと、吹き出しに登録された内容とアプリが提示する内容が一致していれば通信を許可)

アプリ (4).jpg

firebaseにアプリ名とフィンガープリントを登録する画面
アプリ (2).jpg

リリース時にはフィンガープリントは2種類生まれる

それでは、AndroidStudioのエミュレータでは問題なく動作していたが、GooglePlayConsoleから実機にアプリをインストールした際に、Googleアカウントを利用したログインができない。 という事象について、原因を考えてみました。

雑な図ですが、以下を見てください

アプリ (5).jpg

何となくお分かりでしょうか??
そうです。GooglePlayConsoleからアプリをインストールすると、Google側がアプリに署名するため、firebaseにGoogleが署名するキー情報(フィンガープリント)を登録しなければいけないのです

Play アプリ署名を使用すると、アプリ署名鍵の管理と保護、APK 配信時の署名を Google に委託することができます。App Bundle では、APK のビルドおよび署名が Google Play ストアで行われるため、App Bundle をアップロードする前に Play アプリ署名を設定する必要があります。

Androidアプリの署名

なので、GooglePlayConsoleのApp siginingからSH1のフィンガープリントを確認して、firebaseに登録してあげれば事象が解消しました!
アプリ (6).jpg

おわりに

誰かの役に立てば嬉しいです。
誤り等あれば、ご指摘ください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?