# .aab轉.apks轉.apk 以下說明適用於windows環境 ## 1.環境設定 1-1.請確認電腦是否有安裝java 下載網址: https://www.oracle.com/tw/java/technologies/downloads/ 1-2.請下載對應系統版本。 1-3.下載完成後 1-4.安裝 1-5.安裝完成後:windows鍵+R->輸入CMD->CMD模式下->java -version 1-6.如果安裝正確會出現java版本。 ## 2.設定建立KEY時環境設定。 在windows內搜尋進階系統設定->進階->環境變數 2-1.系統環境變->新增 變數 值 JAVA_HOME C:\Program Files\Java\jdk-22(java安裝位置資料夾。) 2-2.尋找系統環境變數內的Path變數,然後點擊編輯,會跳出另外一個畫面,點擊新增: %JAVA_HOME%\bin 按下確定->套用。 ## 3.下載解碼工具 3-1.請至github下載:bundletool.jar 網址連結: https://github.com/google/bundletool/releases 下載後放到要解碼的資料夾內。(請記住放置路徑,資料夾不能是中文。) ## 4.創建一個keystore(要完成第二步,才能進行此步驟。) 4-1.CMD模式下先CD至你要的資料夾。 輸入以下指令: keytool -genkeypair -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias **想了解意思請看,註1** 4-2.接下來會出現以下畫面。 Enter keystore password: (輸入您的 keystore 密碼) Re-enter new password: (再次輸入您的 keystore 密碼) What is your first and last name? [Unknown]: (輸入您的名字和姓氏) What is the name of your organizational unit? [Unknown]: (輸入您的組織單位名稱) What is the name of your organization? [Unknown]: (輸入您的組織名稱) What is the name of your City or Locality? [Unknown]: (輸入您的城市或所在地) What is the name of your State or Province? [Unknown]: (輸入您的州或省) What is the two-letter country code for this unit? [Unknown]: (輸入您的國家代碼) Is CN=Your Name, OU=Your Unit, O=Your Organization, L=Your City, ST=Your State, C=Your Country code correct? [no]: yes 注意:這邊我全部都輸入12345678,最下面的[no]:yes指確認資料正確,才會生成檔案。 會生成一個my-release-key.jks檔案,恭喜KEY製作成功。 ## 5.製作設備規格表: 5-1.創建一個device-spec.json檔案。 5-2.進入檔案內輸入: ```json { "supportedAbis": ["arm64-v8a", "armeabi-v7a"], "supportedLocales": ["en"], "screenDensity": 480, "sdkVersion": 30 } ``` 按下存檔。 **如需了解意思請看註2** ## 6.開始進行轉檔,會先將.add轉成,.apks再轉成,.apk。 ### 6-1.CMD模式下CD至位置資料夾。在CMD模式下輸入。 ### 6-2.aad文件轉.apks指令 ```json java -jar "C:\apk\bundletool-all-1.17.0.jar" ////協助解碼文件位置 build-apks --bundle="C:\apk\oinapp_pre_6.0.44(3).aab" //被解碼文件位置 --output="C:\apk\oinapp_pre_6.0.44(3).apks" //生成apks文件位置 --ks="C:\apk\my-release-key.jks" //KEY位置 --ks-key-alias=my-key-alias //KEY文件名稱 --ks-pass=pass:your-keystore-password //KEY文件密碼:我預設12345678 ``` 為了方便閱讀有進行斷行。 --- ### 6-3.apks文件轉apk 同樣cmd模式下 ```json java -jar "C:\apk\bundletool-all-1.17.0.jar" //協助解碼文件位置。 extract-apks --apks="C:\apk\oinapp_pre_6.0.44(3).apks" //要被解碼文件位置。 --output-dir="C:\apk\output" //APK檔案建立位置,請先建立好output資料夾。 --device-spec="C:\apk\device-spec.json" //設備設定文件位置。 ``` 為了方便閱讀有進行斷行。 --- ### 6-4.取出APK檔案。 <h3> 會生成4個檔案,請選擇base-master.apk文件儲存入手機即可。 # 註 ## 註1: 這個命令使用 keytool 工具來生成一個新的密鑰對並將其存儲在一個 keystore 文件中。以下是命令中每個參數的詳細解釋: ### 參數解釋 #### 1.keytool: 這是 Java SDK 提供的一個命令行工具,用於管理密鑰和證書。它允許用戶生成密鑰對、管理 keystore 文件以及處理證書等操作。 #### 2.-genkeypair: 這個參數告訴 keytool 生成一個新的密鑰對(包含公鑰和私鑰)。 #### 3.-v: 啟用詳細模式,讓 keytool 在執行過程中顯示更多的信息,便於用戶了解命令的執行狀況。 #### 4.-keystore my-release-key.jks: 指定 keystore 文件的名稱和位置。在這個例子中,my-release-key.jks 是 keystore 文件的名稱。如果文件不存在,keytool 將創建一個新的 keystore 文件。 #### 5.-keyalg RSA: 指定用於生成密鑰對的算法。在這裡,使用的是 RSA 算法(Rivest-Shamir-Adleman),這是一種常用的公鑰加密算法。 #### 6.-keysize 2048: 指定密鑰的大小(以位為單位)。在這裡,密鑰大小設置為 2048 位。密鑰越大,安全性越高,但生成和使用的速度會稍慢。 #### 7.-validity 10000: 指定證書的有效期(以天為單位)。在這裡,有效期設置為 10000 天。 #### 8.-alias my-key-alias: 指定密鑰對的別名。在這個例子中,my-key-alias 是密鑰對的別名。別名是用來區分 keystore 中的不同密鑰對的標識符。 ## 註2. ### 各參數解釋 #### 1.supportedAbis: 表示設備支持的 CPU 架構。這個參數是個數組,包含了設備所支持的所有 ABI(Application Binary Interface)。 在這個例子中,設備支持以下兩種 ABI: arm64-v8a:64 位的 ARM 架構,現代 Android 設備常用的架構。 armeabi-v7a:32 位的 ARM 架構,較舊的 Android 設備常用的架構。 #### 2.supportedLocales: 表示設備支持的語言或地區。這個參數是個數組,包含了設備支持的所有語言或地區。 在這個例子中,設備支持 en(英文)。 #### 3.screenDensity: 表示設備的屏幕密度,通常以 dpi(dots per inch,像素每英寸)為單位。這個參數用於確定設備的屏幕密度,從而選擇適合的資源。 在這個例子中,設備的屏幕密度是 480 dpi,這通常對應於 xxhdpi(超高像素密度)設備。 #### 4.sdkVersion: 表示設備所運行的 Android SDK 版本號。這個參數用於確定設備所運行的 Android 系統版本。 在這個例子中,sdkVersion 是 30,對應於 Android 11。 #### 總結 這段 JSON 文件描述了一個支持以下配置的 Android 設備: 支持 arm64-v8a 和 armeabi-v7a 兩種 CPU 架構。 支持英文(en)語言。 屏幕密度為 480 dpi。 運行 Android 11(SDK 版本 30)。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up