GoogleのPlay Storeで配信したアプリの署名を実際にインストールされたデバイス上のapkから確認する方法【Android】

GoogleのPlay StoreでAndroidアプリを配信するときに最近だとapkファイルをアップロードするのではなくてaabファイルをアップロードする。

そしてこのアプリへの署名はPlay Store側でやってくれるけれども、その署名された証明書のフィンガープリントを別の何かに登録するケースがある。例えばFirebase AuthenticationでGoogleサインインを実装したい場合とか。

その署名自体はGoogle Play Console上で確認できる。リリースの『アプリの完全性』にある『アプリの署名』タブに表示されている。

今回はそのフィンガープリントを実際にデバイスへPlay Storeからインストールされたapkから確認したい場合の手順。

基本的には実機をPCにつないだ上での話ですが、そのあたりは割愛。

まずはデバイスにadbで接続して取り出したいapkのパスを見つける。

$ adb devices //接続されているデバイスを確認
$ adb -s <デバイス名> shell
$ pm list packages -f | grep <パッケージ名>

package:ファイルパス=パッケージ名という文字列を含むレスポンスがあるのでこのファイルパスを指定してapkファイルを手元のPCにコピー。

ファイルパスは意味のわかりにくい文字列だったりすると思うが問題ない。自分の環境ではファイル名自体はbase.apkとなっていた。

$ adb -s <デバイス名> pull <ファイルパス>

これで手元にapkがコピーできたはず。あとはこのapkを指定して署名を確認するんだけど、多くのページでは以下のコマンドが紹介されている。

keytool -list -printcert -jarfaile ./base.apk

だが残念ながら自分の環境(Mac)では-list-printcertは同時に指定できないって言われてしまった。

というわけでapksignerを使って表示する。こんな感じ。

apksigner verify --print-certs -v ./base.apk 

これでお目当てのフィンガープリントが確認できただろう。

なお、adbとかapksignerは実際にはパスを通すかフルパスを指定する必要がある。自分のMacな環境だと以下にある。

adbのパス: /Users/<ユーザ名>/Library/Android/sdk/platform-tools/

apksignerのパス: /Users/<ユーザ名>/Library/Android/sdk/build-tools/32.0.0/

apksignerのパスにある32.0.0はバージョンなので環境によって違うはず。なので読み替えてもらえれば。

©Keisuke Nishitani, 2023   プライバシーポリシー