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 中的簽名相符 檔案。