Generate Signed Bundle / APK(s) & Bundle Tool 基本使用 & .aab安裝方式

前言

首先如果 APP 已經上架到 Google Play,那麼改用 Android Bundle APP 就沒有那麼急迫.

https://developer.android.com/guide/app-bundle

Google Android 官網上的連結主要是針對 2021 下半年,容量超過 150 mb 新的應用程式才需要改成使用新的方式.

mac OS 可以參考以下連結

mac 參考連結

產生 .aab 檔案

透過 Android APP bundle 所產生的檔案不同於原本直接產生簽名檔的 apk,檔案為 .aab 檔案,無法透過手機直接安裝.

再來是使用 .aab 檔案的原因,主要不外乎兩點

1. 幫使用者減少下載下來檔案的容量

2. 可以依據手機的 CPU, 螢幕解析度, 語言等方式等配置下載所需要的部分

概述
可以自行設定,判斷是否打開

產生 .aab 檔案的過程
若只是需要測試使用下圖選中的方式即可

若需要產生簽署過的 .aab 使用紅框的方式進行

註:
若之前有產生過 release key 就使用舊的 key 即可,若沒有就需要產生一個新的 key,填入相關的公司或個人資料,並設定使用年限,最後妥善保存.

.aab 檔案使用及 BundleTool工具

這一個部分官網也有解說,不過沒有把詳細的配置,包含資料夾的設定和環境變數的調整列出來,所以如果照著官網的方式實作,會很不順手甚至失敗,所以這個部分可能跟官網會有些許不同.

首先需要下載 Bundle Tool

路徑是在 github 



下載下來會是一個 .jar 檔,版本號碼會有不同

這邊有一個點的設定是,把檔案放在C槽
並且新增一個資料夾 : BundleTool
將簽名過的 .aab 檔案放進資料夾內

可按照圖上路徑新增
配置電腦的環境變數 PATH
按照 jar檔案放置的路徑

註:可以先把 Android Studio 先關閉,實測時會有透過 cmd 語法無法安裝成功的問題,關閉後再執行就沒有問題.

1. 第一步產生一個沒有簽署過的 .apks
注意:
要切到指定的資料夾目錄才可以正常執行 C:\BundleTool
java - jar 需要加上才可以執行

語法 :
java -jar bundletool-all-1.4.0.jar build-apks --bundle=app-release.aab --output=app-release-nosigned.apks

1.1 bundletool-all-1.4.0.jar 是jar版本
1.2 app-release.aab 產生.aab的檔案名稱
1.3 app-release-nosigned.apks output apks檔案名稱

2. 產生一個簽署過的 .apks

語法 :
java -jar bundletool-all-1.4.0.jar build-apks --bundle=app-release.aab  --output=app-release-sign.apks  --ks=testAppBundle.jks  --ks-pass=pass:12345678  --ks-key-alias=key --key-pass=pass:12345678

2.1 testAppBundle.jks key的名稱
2.2 12345678 key的密碼
2.3 key key的alias
2.4 12345678 key 的 password

執行失敗,要把 key 放到資料夾下

放入.jks

注意要 cd 到指定位置

3. 安裝.apks,可以直接透過 cmd 下語法來安裝到手機
注意:.apks檔案如過放入手機是無法直接安裝的,apks 與 apk不同

// 安裝 app 與電腦連接的裝置連接裝置,要注意手機是否與電腦有連接
java -jar bundletool-all-1.4.0.jar install-apks --apks=app-release-sign.apks
java -jar bundletool-all-1.4.0.jar install-apks --apks=app-release-nosigned.apks


安裝完成後不會有提示,到手機裡查詢就可以看到 APP icon

4. json 生成對應 apk,自行設定要安裝哪些檔案(比較少使用)

// 產生裝置要用的 apk
java -jar bundletool-all-1.4.0.jar build-apks --connected-device --bundle=app-release.aab  --output=app-release-sign-device.apks

// 連接電腦裝置的 json
java -jar bundletool-all-1.4.0.jar get-device-spec --output=config.json

// 產生 app floder (用裝置的 json檔產生 .apks)
java -jar bundletool-all-1.4.0.jar extract-apks --apks=app-release-sign-device.apks --output-dir=app --device-spec=config.json

注意 : 需要新增一個 app 的空資料夾

// 查看apks資訊 此語法為檔案大小,apks 使用,apk 會錯誤
java -jar bundletool-all-1.4.0.jar get-size total --apks=app-release-sign-device.apks

可以查看其他資訊語法

5. 產生通用的 apk,只要把 apk 放進手機即可安裝

// 開放多種設備測試
java -jar bundletool-all-1.4.0.jar build-apks --bundle=app-release.aab --output=aab-common-use.apks  --mode=universal

注意 : mode 可自行設定

// 直接安裝在在手機上,與電腦相連裝置
java -jar bundletool-all-1.4.0.jar install-apks --apks=aab-common-use.apks 

//由此 .apks 分離出來的 apk檔案可以直接安裝
aab-common-use.apks 解壓縮後獲得 universal.apk, toc.pb
universal.apk 可以直接安裝

6. 官網的語法
都會有一個 MyAPP 的資料夾,而以上的語法沒有,都是在同一個資料夾內執行

後記

如果這篇文章對於你有幫助,可以幫忙分享給更多的人.如果文章內容有誤,歡迎在下方告知.

留言

熱門文章

解決選擇 Active Build Variant -> Release 執行錯誤

TourCard 開通全紀錄 台胞證 支付寶

[ 教學 ] 如何使用 Sourcetree 對 Github 進行版本控制 #Mac OS 版本控制