Google play store App ?簽名

內容來自官方文檔

前言

Android 要求所有 APK 在安裝到設備上或更新之前都使用證書進行數(shù)字簽名。
android app bundles 是生成app所有需要的資源文件包,包含代碼,各種res 等等。 android studio直接生成的apk包含各種系統(tǒng)和語言的文件:比如x86 和arm cpu的so 文件,各種操作系統(tǒng)的文件,各種語言的文件等。 如果將android app bundles 提交給google play store,那么apk將在用戶下載安裝之前由google play store從android app bundle(aab) 中抽取適用于用戶設備的資源文件和代碼生成。 相比于android studio直接生成的apk文件,aab 生成的apk只包含適用于用戶設備的so文件,比如只有arm so文件,只適用于用戶設備操作系統(tǒng)和尺碼的資源文件等。會比傳統(tǒng)的apk小不少。
如果將android app bundles 提交給google play store發(fā)布,那么, 在生成apk的時候,需要google play store對apk進行簽名。

使用 Android App Bundles 發(fā)布時,您需要先使用上傳密鑰對應用程序包進行簽名,然后再將其上傳到 Play 管理中心,其余的工作由 Play App Signing 負責。 對于在 Play 商店(2021 年 8 月之前創(chuàng)建)或其他商店使用 APK 分發(fā)的應用,您必須手動簽署您的 APK 才能上傳。
今天講一下android app bundles 在發(fā)布到google play store的過程中的簽名。

Play 應用簽名

借助 Play App Signing,Google 可以為您管理和保護您的應用的簽名密鑰,并使用它來簽署您的 APK 以進行分發(fā)。 而且,由于 app bundle 將構建和簽名 APK 延遲到 Google Play 商店,因此您需要在上傳 app bundle 之前配置 Play App Signing。 這樣做可以讓您從以下方面受益:

  • 使用 Android App Bundle 并支持 Google Play 的高級交付模式。 Android App Bundle 使您的應用程序更小,您的發(fā)布更簡單,并且可以使用功能模塊并提供即時體驗。
  • 提高您的簽名密鑰的安全性,并可以使用單獨的上傳密鑰對您上傳到 Google Play 的應用程序包進行簽名。
  • 新安裝的一次性密鑰升級可讓您更改應用簽名密鑰,以防現(xiàn)有的密鑰遭到破壞或需要遷移到加密更強的密鑰

Play App Signing 使用兩個密鑰:應用簽名密鑰和上傳密鑰。 在上傳到 Google Play 商店之前,需要保留上傳密鑰并使用它來簽署應用程序。 Google 使用上傳證書來驗證開發(fā)者身份,使用應用簽名密鑰對 APK 進行簽名以進行分發(fā),如圖 1 所示。通過使用單獨的上傳密鑰,如果密鑰丟失或丟失,可以請求重置上傳密鑰。
相比之下,對于 2021 年 8 月之前創(chuàng)建的未選擇加入 Play 應用簽名的應用,如果開發(fā)者丟失了應用的簽名密鑰,將無法更新應用。

image.png

開發(fā)者的密鑰存儲的框架與 Google 用來存儲它自身的密鑰的框架是同一個,并受 Google 密鑰管理服務的保護。 可以閱讀 Google Cloud 安全白皮書來了解有關 Google 技術基礎架構的更多信息。

當使用 Play App Signing 時,如果丟失了上傳密鑰,或者它被泄露,可以聯(lián)系 Google 撤銷舊的上傳密鑰,然后生成一個新的。 由于開發(fā)者應用簽名密鑰受 Google 保護,因此即使更改了上傳密鑰,也可以繼續(xù)上傳新版本的應用,來作為對原始應用的更新。

密鑰庫、密鑰和證書

Java 密鑰庫(.jks 或 .keystore)是用作證書和私鑰存儲庫的二進制文件。
公鑰證書(.der 或 .pem 文件),也稱為數(shù)字證書或身份證書,包含公鑰/私鑰對的公鑰,以及標識所有者的其他一些元數(shù)據(jù)(例如,名稱和位置)誰持有相應的私鑰。
以下是我們應該了解的不同類型的key:

  • 應用簽名密鑰:用于對安裝在用戶設備上的 APK 進行簽名的密鑰。作為 Android 安全更新模型的一部分,簽名密鑰在您的應用程序的生命周期內永遠不會更改。應用簽名密鑰是私有的,必須保密。但是,您可以共享使用您的應用簽名密鑰生成的證書。
  • 上傳密鑰:在您上傳應用程序包或 APK 以使用 Google Play 進行應用簽名之前,您使用該密鑰簽署該應用程序包或 APK。您必須對上傳密鑰保密。但是,您可以共享使用上傳密鑰生成的證書。您可以通過以下方式之一生成上傳密鑰:
    -- 如果您選擇讓 Google 為您生成應用簽名密鑰,那么您用于簽署應用以供發(fā)布的密鑰就是您的上傳密鑰。
    -- 如果您在選擇加入新應用或現(xiàn)有應用時向 Google 提供應用簽名密鑰,那么您可以選擇在選擇加入期間或之后生成新的上傳密鑰以提高安全性。
    -- 如果您不生成新的上傳密鑰,您將繼續(xù)使用您的應用簽名密鑰作為上傳密鑰來簽署每個版本。

提示:為確保您的密鑰安全,最好確保您的應用簽名密鑰和上傳密鑰不同。

可以在Android Studio -> Generate Signed Bundle or APK 來為app bundle或者apk 進行簽名,根據(jù)提示可以用已有的key store來簽名,也可以在對話框中新生成一個簽名。 如果你的app以前以前沒有上架過,那么這個簽名的密鑰叫做上傳密鑰。

如果您已經(jīng)有上傳密鑰,請使用它來簽署應用程序。 相反,如果您的應用已使用現(xiàn)有應用簽名密鑰簽名并發(fā)布到 Google Play 商店,請使用它對您的應用(apk)進行簽名,并確保對其進行加密并導出, 用作您的應用在Play 上的應用簽名。 您可以稍后生成單獨的上傳密鑰并在 Google Play 中注冊您的上傳密鑰的公共證書,以對您的應用程序進行簽名和上傳后續(xù)更新。

更多信息查看后續(xù)官方文檔https://developer.android.com/studio/publish/app-signing#sign-apk

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容