遺失 Android upload keystore 向 Google Play 申請更換


#Android#Play App Signing#keytool

最近換了新 Mac,但忘記把上一台的 Android upload-keystore.jks 傳過來就格式化了,導致無法上傳更新 APP。

您的 Android App Bundle 使用的簽署金鑰錯誤。請務必使用正確的簽署金鑰簽署您的 App Bundle,然後再試一次。您的 App Bundle 應由具有以下指紋的憑證簽署:
SHA1: EB:4A:............:DA:9E
,而您為簽署 App Bundle 所上傳的憑證具有以下指紋:
SHA1: 79:61:............:11:F2

好在有參加 Google Play 應用程式簽署計畫,讓 Goolge 幫我保管真實的簽署金鑰,否則就要改套件名稱(bundle ID)並重新上架了。

Google Play 應用程式簽署計畫


只要您使用 Play 應用程式簽署功能,Google 就會為您管理及保護應用程式的簽署金鑰,並使用該金鑰簽署您要發布的 APK。此外,由於應用程式套件會延遲建立 Google Play 商店簽署及簽署 APK,因此您必須設定 Play 應用程式簽署功能,然後再上傳應用程式套件。

申請方法


如果您遺失了私密上傳金鑰,或者私密金鑰遭到盜用,請先建立新的金鑰,然後請您的帳戶擁有者與支援團隊聯絡以重設金鑰。請提醒您的帳戶擁有者,聯絡支援團隊時務必要附上 upload_certificate.pem 檔案。
Google 支援團隊註冊新的上傳金鑰後,系統會傳送電子郵件通知給您,接著您就可以更新 KeyStore,並向 API 供應商註冊您的金鑰。
重要事項:重設上傳金鑰並不會影響 Google Play 向使用者發布應用程式前用於重新簽署 APK 的應用程式簽署金鑰。

重新產生一組上傳金鑰

keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
輸入金鑰儲存庫密碼:  
重新輸入新密碼: 
您的名字與姓氏為何?
  [Unknown]:  Joymap
您的組織單位名稱為何?
  [Unknown]:  TWDD  
您的組織名稱為何?
  [Unknown]:  TWDD
您所在的城市或地區名稱為何?
  [Unknown]:  Taipei, Taiwan
您所在的州及省份名稱為何?
  [Unknown]:  Taiwan
此單位的兩個字母國別代碼為何?
  [Unknown]:  TW
CN=Joymap, OU=TWDD, O=TWDD, L="Taipei, Taiwan", ST=Taiwan, C=TW 正確嗎?
  [否]:  Y

針對 CN=Joymap, OU=TWDD, O=TWDD, L="Taipei, Taiwan", ST=Taiwan, C=TW 產生有效期 10,000 天的 2,048 位元 RSA 金鑰組以及自我簽署憑證 (SHA256withRSA)

輸入 <upload> 的金鑰密碼
        (RETURN 如果和金鑰儲存庫密碼相同):  
重新輸入新密碼: 
[儲存 /Users/mtsung/upload-keystore.jks]

Warning:
JKS 金鑰儲存庫使用專有格式。建議您使用 "keytool -importkeystore -srckeystore ~/upload-keystore.jks -destkeystore ~/upload-keystore.jks -deststoretype pkcs12" 移轉成為使用 PKCS12 (業界標準格式)。
mtsung@MTsung-Toby-MacBook hello_flutter % 

匯出成 PEM 格式的憑證

keytool -export -rfc -alias upload -file ~/upload_certificate.pem -keystore ~/upload-keystore.jks

與支援團隊聯絡

Google Play Console > 發布 > 設定 > 應用程式完整性 > 應用程式簽署 > 上傳金鑰憑證 > 與支援團隊聯絡
或直接前往連結:https://support.google.com/googleplay/android-developer/contact/key

欄位填寫

欄位不知道填寫什麼的話右上角都有問號可以前往查詢,勾選「我遇到和上傳金鑰相關的問題」、「我的上傳金鑰遺失了」,並將剛剛產生的 ~/upload_certificate.pem 上傳上去,問題說明我寫「因更換電腦 upload-keystore.jks 遺失」。

送出

送出後會收到完成信件

很快的 Google 回信了,表示需要使用開發者帳號擁有者的電子郵件申請才行,所以必須轉寄再轉寄。


參考:
https://developer.android.com/studio/publish/app-signing?hl=zh-tw
https://support.google.com/googleplay/android-developer/answer/9842756?hl=zh-Hant#lost
https://support.google.com/googleplay/android-developer/answer/9842756#create