在線將 AAB 轉換為 APK:此工具的實際用途
Android App Bundle (.aab) 是 Google Play 要求開發人員上傳的格式,但它不能安裝在手機上。如果您有來自建置伺服器、CI 管道或同事的 .aab 文件,您首先需要將其轉換為可安裝的 .apk。此頁面為您提供了完成這項工作的兩個工具:一個互動式 AAB 到 APK 命令產生器,它為您的作業系統編寫準確的捆綁工具命令;另一個 AAB 檔案瀏覽器,它在瀏覽器中打開捆綁包,以便您可以在轉換之前看到裡面的內容。
轉換本身是透過Google官方的bundletool運行,這是一個Java程式。因為bundletool需要Java執行時間並存取您的金鑰庫,所以實際的建置步驟發生在您自己的機器上,而不是我們的伺服器上。您的 .aab 檔案永遠不會上傳到任何地方。建構器只是消除了猜測,因此您可以複製正確的、準備運行的命令,而不是記住標誌名稱。
AAB 與 APK:為什麼不能只重命名文件
很多人搜尋如何透過重命名擴展名將 AAB 更改為 APK,但從來沒有成功過。 .apk 是 Android 可以直接安裝的單一獨立套件。 .aab 是一個發佈容器:它保存已編譯的程式碼和分成模組的資源,並且期望 Google Play 或 bundletool 從中產生最終的裝置最佳化 APK。重新命名檔案不會解壓縮這些模組或簽署任何內容,因此 Android 拒絕安裝它。轉換 Android 應用程式套件到 APK 的唯一可靠方法是讓 bundletool 為您建立 APK 集。
如何在 Windows、Mac 和 Linux 上將 AAB 轉換為 APK
每個平台上的步驟都是相同的,只有檔案路徑樣式發生變化,這就是上面的命令產生器具有 Windows、macOS 和 Linux 開關的原因。以下是從開始到結束的完整流程:
- 安裝 Java JDK 8 或更高版本。 在終端機中執行 java -version 以確認 Java 位於您的 PATH 中。
- 下載捆綁工具。 從 Google 官方 GitHub 發布頁面取得最新的 bundletool-all.jar。
- 建構 APK 集。 將bundletool指向您的捆綁包並讓它產生.apks存檔:java -jar bundletool-all.jar build-apks --bundle=app.aab --output=app.apks --mode=universal
- 開啟 .apks 存檔。 它只是一個ZIP文件,因此解壓縮它,你會在裡面找到universal.apk。
- 安裝在您的裝置上。 將 APK 複製到您的手機並旁加載,或將 bundletool install-apks 與透過 USB 連接的裝置一起使用。
通用 APK 與拆分 APK:您應該建立哪一個?
如果您想要一個可以安裝在任何手機上的文件,請使用 --mode=universal。這建構了一個 來自 AAB 的通用 APK,將每個 CPU 架構、螢幕密度和語言捆綁到一個套件中。它更大,但它是在 Play 商店之外測試、存檔或共享構建的最簡單選項。如果您忽略該模式,bundletool 會產生針對某一特定裝置進行修剪的分割 APK,因此它們下載的檔案較小,但您必須一起安裝相符的集合。對於大多數只需要轉換 .aab 以便快速安裝的人來說,通用 APK 是正確的選擇。
簽署從 AAB 獲得的 APK
Android 不會安裝 APK,除非它有簽名。對於測試,bundletool 可以自動使用偵錯金鑰進行簽名,這正是建構器中的「使用偵錯金鑰庫」選項的作用。如果您正在準備發布版本,例如要在您自己的網站上分發,請透過填寫金鑰庫路徑、金鑰庫密碼、金鑰別名和金鑰密碼字段,使用您自己的金鑰庫對其進行簽名。然後,構建器添加 --ks、--ks-pass、--ks-key-alias 和 --key-pass 標誌,以便您獲得的 APK 帶有真正的生產簽名,而不是一次性的調試簽名。
常見的bundletool錯誤以及如何修復它們
有兩個問題一再出現。訊息“bundletool:找不到命令”意味著您嘗試像運行內建命令一樣運行bundletool。它是一個 JAR 文件,因此您始終使用 java -jar bundletool-all.jar 來呼叫它。 「無金鑰/憑證」錯誤表示缺少簽名詳細資訊:為未簽署的測試版本新增 --mode=universal,或提供如上所述的金鑰庫標誌。頁面上方的「故障排除」標籤涵蓋了更多內容,而 AAB 資源管理器可讓您在花時間偵錯命令之前確認您的捆綁包確實包含您期望的模組。
什麼時候真正需要轉換 AAB?
通常的原因是在發布之前在真實設備上測試發布版本,將版本交給不使用 Google Play 的測試人員,保留您自己的應用程式的可安裝副本作為記錄,或者在 Play 商店內部測試未達到的硬體上運行 QA。無論出於何種原因,僅轉換您有權使用的應用程式包,例如您自己的建置版本或您有明確使用權限的應用程式包。