Android 概念 (適用於網頁開發人員)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

如果您是 Android 和 Google Play 新手網頁開發人員,請注意以下事項: 注意哪些地方就這方面而言,已經有了許多相關資源和文件了 (感謝 Android 這部影片會特別說明一些重要概念,以及這些概念與 Bubblewrap 有何關聯。

上傳與簽署金鑰

如果您打算使用 Bubblewrap 產生 Android App Bundle (AAB) 格式,請注意:自 8 月起 2021 年,Google Play 要求所有新應用程式都必須採用 Android App Bundle 格式)。 或 APK 上傳及發布至 Google Play,您必須使用簽署金鑰簽署應用程式。Google 敬上 Google Play 提供兩種處理方式的處理方式:

  • Play 應用程式簽署 (強烈建議):Google 將管理及保護您應用程式的簽署金鑰 不必確保憑證管理是否適當 因為 Google Cloud 會為您管理安全性並使用該 ID 簽署您要發布的 APK。Play 應用程式簽署功能使用兩個金鑰。「應用程式」 簽署金鑰」Google 會為您管理「上傳金鑰」因此您應保留 私人檔案。您必須使用上傳金鑰簽署應用程式,以便上傳至 Play 管理中心。這個 萬一您的上傳金鑰遺失或遭到盜用,您的系統仍允許您重設 與 Play 支援團隊聯絡。目前,Google Play 可讓您將應用程式上傳為 AAB 或 APK:
    • Android App Bundle (AAB):何時 您將 AAB 上傳至 Play 管理中心後,就必須將建構和產生的 APK 延後到 Google Play 商店。使用者下載並安裝您的應用程式時,Google Play 會發行 以簽署的 APK 形式提供給使用者因此,簽署 APK 時,也必須透過 Google Play。因此根據預設,如果您以 AAB 形式將應用程式上傳至 Play 管理中心, 您必須使用 Play 應用程式簽署功能。
    • APK:發布 APK 時,您可以選擇採用 Play 應用程式簽署功能。選擇加入 Play 應用程式 強烈建議您簽署,這麼做可提高簽署金鑰的安全性。如先前所述 Google Play 即將要求所有新應用程式都必須以 AAB 格式上傳,因此我們 建議您採用這個方法,而非上傳 APK。
  • 管理自己的簽署金鑰:如果您選擇自行管理金鑰,但不選擇加入 Play 應用程式 簽署後,您必須全權負責應用程式的簽署金鑰。這個 API 和 Play 應用程式簽署功能不同 也無法重設。因此,遺失應用程式的簽署金鑰就代表 也無法再更新應用程式

bubblewrap init 設定期間,當系統顯示「簽署金鑰資訊 (5/5)」部分時, 系統會提示您輸入「Key store location」和「Key name」,或使用預設值。 預設金鑰儲存庫位置為專案目錄中的 android.keystore 檔案,以及預設值 金鑰名稱為 android。如果 Bubblewrap 在 設定完成後,Google 助理就會為您建立一組密碼,並提示您輸入密碼。記下密碼 您需要在建構程序 (bubblewrap build) 中輸入這些資訊,而這些項目會在建構過程中使用 簽署應用程式。如果您���擇加入 Play 應用程式簽署計畫,該簽署金鑰就會成為 Bubblewrap 的簽署金鑰 產生及用於簽署的應用程式,會變成「上傳金鑰」。您是否選擇使用 以 Bubblewrap 產生的金鑰做為簽署或上傳金鑰的金鑰,您應妥善保管並妥善保管金鑰。 我們不建議您實行版本管控。而是限制 可以授予使用者存取權

必須使用 Digital Asset Links,才能聲明網站和 Android 之間的關係 應用程式。為了確保 Bubblewrap 產生的 Android 應用程式已經過正確驗證,並啟動 信任網路活動 (而不是 Chrome 自訂分頁),您需要在 您的 assetlinks.json 檔案。然後上傳到您的網站 (.well-known/assetlinks.json) (相對於根)。您的 assetlinks.json 檔案應採用下列格式:

[{
 "relation": ["delegate_permission/common.handle_all_urls"],
 "target": {
   "namespace": "android_app",
   "package_name": "com.your.package_name",
   "sha256_cert_fingerprints": [
     "XX:XX:XX:..."
   ]
 }
}]

取得 SHA256 憑證指紋

如要建立 assetlinks.json 檔案,您需要相關聯的 SHA 256 憑證指紋 使用應用程式的簽署金鑰進行簽署。請特別注意 簽署和上傳金鑰會有所不同。請務必 這點尤其重要,如果您發現應用程式以 Chrome 自訂分頁的形式啟動 (也就是 瀏覽器列)。那麼,您的 assetlinks.json 檔案可能沒有 對應各種索引鍵的指紋。

在 assetlinks.json 中同時保留簽署和上傳憑證的指紋,會非常有幫助 ,方便您在本機對應用程式進行偵錯。詳情請參閱下方的「新增更多金鑰」一節。 瞭解如何在 assetlinks.json 檔案中新增這兩個金鑰。

你可以透過多種方式取得指紋,詳情請參閱後��章節。 各組指紋都應獲得相同的指紋,因此你可以自由選擇 非常便利

透過 Play 管理中心

視您是否加入 Play 應用程式簽署計畫而定,可能會有一或兩個金鑰。擷取 為每個金鑰輸入適當 SHA256 指紋:

  1. 前往 Play 管理中心
  2. 選取感興趣的應用程式
  3. 在左側導覽選單的「版本」下方,依序前往「設定」->應用程式完整性
  4. 請複製適當金鑰的 SHA256:

針對簽署或上傳金鑰擷取適當的 SHA256 憑證指紋

  • 簽署金鑰:複製「應用程式簽署金鑰憑證」的 SHA256 指紋。這個 從 Google Play 商店下載應用程式的指紋,就會是 Google Play 發布了經過簽署金鑰簽署的應用程式。

  • 上傳金鑰:複製「上傳金鑰憑證」的 SHA256 指紋。這個 如果你在本機安裝 (透過 USB 透過 USB 使用 ADB), 範例)。該 APK (在您的本機電腦) 是由 Bubblewrap 建立,因此簽署人: 系統在 init 設定期間也會為您建立金鑰。請注意,這可能是 本機安裝版應用程式的簽署金鑰,但這實際上會變成「上傳金鑰」一次 以及您透過 Play 發布應用程式

keytool

keytool 是鍵 憑證管理工具您可以使用 keytool 擷取與 才會產生 APK 或 AAB Bubblewrap。請注意,這個指紋是用於本機簽署金鑰, 您將應用程式上傳至 Play 並選擇加入 Play 應用程式簽署計畫後,這組金鑰就會成為「上傳金鑰」。

keytool -printcert -jarfile [path to APK or AAB] | grep SHA256

您也可以使用 Asset Link Tool 為應用程式取得正確的 Digital Asset Links 檔案:

  1. 前往 Play 商店安裝素材資源連結工具
  2. 在同一部裝置上透過 Google Play 商店下載應用程式,或是在本機安裝。
  3. 開啟 Asset Link Tool 應用程式,即可查看已安裝在 依套件名稱排序裝置按照��早時選擇的應用程式 ID 篩選清單 bubblewrap init,然後按一下該項目。
  4. 系統隨即會顯示一個頁面,列出應用程式簽章和系統產生的 Digital Asset Link。按一下 複製或分享畫面底部的「分享」按鈕,可視需要匯出內容 (例如「儲存至 Google Keep」、 透過電子郵件傳送給自己)。

同樣的概念也適用於簽署或上傳金鑰的情況。如果您是從 Google Cloud 控制台 Google Play 商店,Asset Link Tool 會提供應用程式簽署金鑰的指紋。如果 如果你是直接從本機電腦安裝應用程式,則指紋就可用來辨識金鑰 已產生對話框。

上傳完成後,請確認可在瀏覽器中存取素材資源連結檔案。 檢查 https://example.com/.well-known/assetlinks.json 是否解析到您剛剛上傳的檔案。

Jekyll 網站

如果您的網站是由 Jekyll 產生的網站 (例如 GitHub 網頁),您就必須新增一行 設定,以便在輸出內容中加入 .well-known 目錄。 GitHub 說明提供有關這個主題的更多資訊。 在網站的根目錄建立名為 _config.yml 的檔案 (如果已有檔案,請將其新增至該檔案中) 輸入:

# Folders with dotfiles are ignored by default.
include: [.well-known]

新增更多金鑰

一個 Digital Asset Link 檔案可包含多個應用程式,而每個應用程式都能包含多個應用程式 只要用到一個金鑰即可 舉例來說,如要新增第二個鍵,只要使用 素材資源連結工具: 找出該鍵,並將其新增為第二個項目。 Chrome 中剖析此 JSON 的程式碼非常嚴格,因此請確認您不會意外將 清單結尾多出半形逗號。

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
},{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
}]

疑難排解

Chrome 會記錄 Digital Asset Links 驗證失敗的原因,您可以前往 搭載 adb logcat的 Android 裝置。 如果您在 Linux/Mac 上進行開發,可以查看已連結裝置的相關記錄 取代為:

> adb logcat -v brief | grep -e OriginVerifier -e digital_asset_links

舉例來說,如果您看到 Statement failure matching fingerprint. 訊息,則應使用 Asset Link Tool 可查看應用程式的簽名,並確認其與 assetlinks.json 中的簽名相符 檔案。