マシンが変わったらAndroidのアップデートが出来なくなった

業務系でGooglePlayにアップせずに野良的に運用しているアプリがあった。
使用している人はITリテラシーの低い方々なので導入する時は大変苦労した。
アプリをバージョンアップする時はサーバーにapkを置く。
そしてアプリ側は起動時に最新のapkが存在しているか確認して、
あれば自動アップデートを行っていた。
そんな中担当者が変わって別マシンでapkを作成した。
そしたら自動アップデートが出来ないという問題が発生した
前提としてAndroidの「release」版をGoogle Playにアップするには
署名付きのapkをアップロードする必要がある。
そして更新を行うには最初に行った署名のキーとパスワードが同一のものでないと
同パッケージとして扱われない
もし署名ファイル(.jksや.keystore)を紛失、もしくはパスワードを忘れてしまった場合は
別パッケージとしてアップロードしなくてはならない。
という認識だったのだが今回のアプリはGoogle Play上に公開は行われない。
その為署名であったりパスワードを掛けたりは行っていない。
なので何故出来ないかで相当躓いた。
結論はdebug.keystoreが初期開発者と異なっていたからである。
署名なしのapkであっても署名がされている。
というかdebugビルドだろうがreleaseビルドだろうがkeystoreによる署名は必要となる。
署名なしといいつつdebug.keystoreを見てビルドされている。
debug.keystoreは「C:\Users\\.android\」に格納されている。
この結論に至るまでに既存のapkとこちらで作成したapkを比較した

比較方法

SDKのビルドツールにて下記コマンドを実行するとDNや暗号化の詳細がわかる
apksigner verify --print-certs app-release-13.apk

そこで作成apkと旧apkを比較した
---------------------------------------------------------------------------------------------------
C:\android\sdk\tools\bin\build-tools\29.0.2>apksigner verify --print-certs app-release-14.apk
Signer #1 certificate DN: C=US, O=Android, CN=Android Debug
Signer #1 certificate SHA-256 digest: 384ecb570f1da87b47b17f3d6a9b6ad8eca9ef1ef1f8200e11519be4696fa09e
Signer #1 certificate SHA-1 digest: b6b9546626e602a076f4993c4facc14eb83f03f1
Signer #1 certificate MD5 digest: e7767df929fd2213d49e7271961348f7
---------------------------------------------------------------------------------------------------

C:\android\sdk\tools\bin\build-tools\29.0.2>apksigner verify --print-certs app-release-13.apk
Signer #1 certificate DN: C=US, O=Android, CN=Android Debug
Signer #1 certificate SHA-256 digest: 235b3b8200c332e0af12c4d54183fcdd0ce28d0abcc7a595142f3dd5210766fc
Signer #1 certificate SHA-1 digest: 3950a94a9fb1e30689a5317689a5304fe6e2fd2
Signer #1 certificate MD5 digest: ea3ff31793f8352de4f8f1ca1fa77e44
---------------------------------------------------------------------------------------------------

C:\android\sdk\tools\bin\build-tools\29.0.2>apksigner verify --print-certs app-release-12.apk
Signer #1 certificate DN: C=US, O=Android, CN=Android Debug
Signer #1 certificate SHA-256 digest: 235b3b8200c332e0af12c4d54183fcdd0ce28d0abcc7a595142f3dd5210766fc
Signer #1 certificate SHA-1 digest: 3950a94a9fb1e30689a5317689a5304fe6e2fd2
Signer #1 certificate MD5 digest: ea3ff31793f8352de4f8f1ca1fa77e44
---------------------------------------------------------------------------------------------------

デバッグモードではkeystoreは指定できない(勝手に指定される)。
上記の結果よりdebug.keystoreが異なると結論づけた

なのでdebug.keystoreの共有って大事だよねってお話