小程序安卓ApK轉aab文件詳情教程MacM4環境

根據Google Play的政策要求,自 2021 年 8 月起,Google Play 將開始要求新應用使用 Android App Bundle(以下簡稱aab) 進行發布。該格式將取代 APK 作為標準發布格式。
想了解更多關于aab的介紹可以直接閱讀android官方文檔,有詳細的說明developer.android.com/guide/app-b…
但是 前提是我們沒有編譯通過的源碼,怎么辦?怎么辦?只能從apk一步步轉成aab文件了。

第一階段:準備工具

點擊下載準備工具

bundletool-all-1.18.1.jar

bundletool.jar 是google提供生成&測試aab的工具,gradle打包里面也是使用的這個工具。
獲取方式github: github.com/google/bund…
詳細文檔&使用方法: developer.android.com/studio/comm…

aapt2
aapt全稱Android Asset Packaging Tool是Android資源打包工具。
獲取方式ANDROID SDK: $ANDROID_SDK/build-tools/30.0.3/aapt2
獲取方式google maven: dl.google.com/dl/android/…
詳細文檔&使用方法:developer.android.com/studio/comm…
熟悉安卓的同學直接去build-tools 文件夾 找到自己需要的編譯的版本 復制到自己編譯的目錄文件夾就行了。

apktool_2.12.0.jar
反編譯安卓apk工具。
獲取方式github: github.com/iBotPeaches…

android.jar
android framework,提供了系統的資源和api。
獲取方式ANDROID SDK: $ANDROID_SDK/platforms/android-35/android.jar

android.jar

準備好自己的公司的簽名文件
***.jks 文件
下圖所示:
效果如下:

第二步:Apk 轉aab文件


解壓apk
1.通過apktool去解壓apk包

java -jar apktool_2.12.0.jar d test.apk -s -o decode_apk_dir

解壓apk后 decode_apk_dir 目錄結構:
請添加圖片描述
編譯資源

2.編譯資源使用aapt2編譯生成 *.flat文件集合

aapt2 compile --dir "/Users/isurpass/Documents/test/decode_apk_dir/res" -o compiled_resources.zip

生成compiled_resources.zip文件

3.打包文件配置信息設置
版本信息:minSdk targetSdk versionCode verisonName

aapt2 link --proto-format -o android_test.apk -I android_35.jar \
--min-sdk-version 21 --target-sdk-version 35 \
--version-code 30 --version-name 1.0.30 \
--manifest "/Users/isurpass/Documents/test/decode_apk_dir/AndroidManifest.xml" \
-R compiled_resources.zip --auto-add-overlay

4.解壓android_test.apk ==> 需要引用里面的資源

./android_test
├── AndroidManifest.xml
├── res
└── resources.pb

5.替換資源拼接aab文件目錄:
以android_test文件夾為根目錄
創建 android_test/manifest 將 android_test/AndroidManifest.xml 剪切過來
拷貝assets , 將 ./temp/decode_apk_dir/assets 拷貝到 ./temp/android_test/assets
拷貝lib, 將 ./temp/decode_apk_dir/lib 拷貝到 ./temp/android_test/lib
拷貝unknown, 將 ./temp/decode_apk_dir/unknown 拷貝到 ./temp/android_test/root
拷貝kotlin, 將 ./temp/decode_apk_dir/kotlin拷貝到 ./temp/android_test/root/kotlin
拷貝META-INF,將./temp/decode_apk_dir/original/META-INF 拷貝到 ./temp/android_test/root/META-INF (刪除簽名信息***.RSA**、.SF、.MF)
創建./android_test/dex 文件夾,將 ./decode_apk_dir/*.dex(多個dex 編譯后代碼塊) 都要一起拷貝過來 )

android_test/manifest                ============> android_test/AndroidManifest.xml
decode_apk_dir/assets                ============> android_test/assets
decode_apk_dir/lib                   ============> android_test/lib
decode_apk_dir/unknown               ============> android_test/root
decode_apk_dir/kotlin                ============> android_test/root/kotlin
decode_apk_dir/original/META-INF     ============> android_test/root/META-INF
decode_apk_dir/*.dex                 ============> base/dex/*.dex

查看目錄:
請添加圖片描述
6.壓縮資源
將android_test文件夾,壓縮成android_test.zip 一定要zip格式

cd android_test && zip -r ../android_test.zip *

7.編譯aab
打包app bundle需要使用bundletool

java -jar bundletool-all-1.18.1.jar build-bundle \
--modules=android_test.zip --output=android_test.aab

8.abb簽名

jarsigner -keystore AndroidappKeyiSupper.jks \
-signedjar android_test_signed.aab \
android_test.aab key

注意 : key 是你的密鑰 別名哦!

第三步.檢測打包好的abb文件是不是可以用Apk文件。

1.執行bundletool命令 ,從 aab 生成一組 APK

java -jar bundletool-all-1.18.1.jar build-apks \
--bundle=android_test_signed.aab \
--output=android_test_signed.apks \
--ks=AndroidappKeyiSupper.jks \
--ks-pass=pass:123456 \
--ks-key-alias=key \
--key-pass=pass:123456

2.提取 apk文件:

unzip android_test_signed.apks universal.apk

對應的apk文件 : universal.apk

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90525.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90525.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90525.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

率先通過自動制冰性能認證,容聲冰箱推動行業品質升級

日前,容聲冰箱“電冰箱自動制冰性能認證”由中國家用電器研究院測試并通過,該認證為行業首次。這標志著中國家電行業在冰箱自動制冰功能的技術規范與品質保障領域樹立了全新里程碑,也將潔凈、高效的制冰體驗帶入中國家庭日常生活。目前&#…

大模型-batch之continuous batching

一、ORCA1.1 ORCA 概覽看下Continuous Batching 技術的開山之作ORCA,這個其實是融合的思路。ORCA:把調度粒度從請求級別調整為迭代級別,并結合選擇性批處理(selective batching)來進行優化。Sarathi[2] :利用Chunked P…

主要分布在背側海馬體(dHPC)CA1區域(dCA1)的時空聯合細胞對NLP中的深層語義分析的積極影響和啟示

時空聯合細胞(Spatiotemporal Conjunctive Cells)主要分布在背側海馬體CA1區(dCA1),其核心功能是??同步編碼空間位置、時間信息和行為意圖??,形成動態的情景記憶表征。這種神經機制為自然語言處理&…

操作系統:系統程序(System Programs)

目錄 常見的系統程序類型 1?? 文件管理(File Management) 2?? 狀態信息(Status Information) 3?? 編譯器和程序開發(Program Language Support) 4?? 程序執行控制類(Program Load…

【知識圖譜】Neo4j Desktop桌面版中國區被禁(無法打開)問題解決方法

【知識圖譜】Neo4j Desktop桌面版進程運行無法打開,UI 界面無法顯示問題解決辦法 前言 1.問題形式 2.原因分析 3.解決方法 3.1 方法一,斷網 3.2 方法二,手動設置代理 4.啟動Neo4j Desktop 前言 Neo4j Desktop桌面版安裝教程參考鏈接: https://zskp1012.blog.csdn.net/artic…

安裝acunetix軟件之后改www.ddosi.org.bat文件

安裝環境:windows11 通過網盤分享的文件:Acunetix_15.2.221208162_www.ddosi.org.zip 鏈接: https://pan.baidu.com/s/1FPFFr583FFFj6hxWB-Ygng?pwdjpim 提取碼: jpim 下載后文件是: 解壓之后,如下圖: 安裝步驟如…

pycharm安裝教程-PyCharm2023安裝詳細步驟【MAC版】【安裝包自取】

pycharm安裝教程-PyCharm2025安裝詳細步驟【MAC版】安裝安裝包獲取(文章末尾)今天來給大家分享 Mac 系統安裝 PyCharm,附帶安裝包資源安裝, PyCharm 相關就不敘述了,直接開始安裝! 安裝 2024版本、2025年…

Linux(centos7)安裝 docker + ollama+ deepseek-r1:7b + Open WebUI(內含一鍵安裝腳本)

windows版本的 ollama :https://blog.csdn.net/YXWik/article/details/143871588 環境:centos7 文中各個腳本 1.docker安裝 或者 需要重新安裝: install_docker.sh 2.docker已安裝只需要安裝 ollama deepseek-r1:7b Open WebUI &#xff1…

深度解析:在Odoo 18中基于原生Owl框架為PWA定制功能豐富的底部導航欄

本文旨在提供一個從架構設計、核心功能實現到高級用戶體驗優化的全面指南,詳細闡述如何在Odoo 18中,完全利用其原生的Owl前端框架,為漸進式網絡應用(PWA)從零開始開發一個功能完備、數據驅動且高度可定制的底部導航欄。…

Java泛型初始化ArrayList<String>()和ArrayList<>()的區別

文章目錄前言Java 泛型初始化&#xff1a;ArrayList<String>() vs ArrayList<>() 的區別1. 語法差異1.1 顯式泛型初始化 (ArrayList<String>())1.2 鉆石操作符初始化 (ArrayList<>())2. 編譯與運行時的區別3. 使用場景對比3.1 顯式泛型初始化的適用情況…

ubuntu25.04+4070+cuda+docker安裝

目錄 1.4070nvidia驅動安裝 2.CUDA安裝 3.docker安裝 4.docker的GPU支持 1.4070nvidia驅動安裝 首先從軟件源獲取最新的軟件包信息&#xff0c;然后升級一下安裝好的軟件包 #從軟件源獲取最新的軟件包信息 apt update -y #將已安裝的軟件包升級到最新版本 apt upgrade -y 然…

Mac m系列 VMware Fusion虛擬機安裝ARM contos

一、下載虛擬機 VMware Fusion和 CentOS 安裝 VMware Fusion下載地址下載好鏡像文件CentOS-Stream-9-20230516.0-aarch64-boot.iso下載地址 二、打開VMware Fusion新建虛擬機 選擇從光盤或映像中安裝點擊繼 選擇剛才下載的鏡像&#xff0c;點擊繼續選擇 Linux > 其他Linu…

MYSQL中NOT IN和NOT EXISTS

NOT IN 和 NOT EXISTS 是 MySQL 中用于排除某些數據的兩種常見查詢方式。它們的功能相似&#xff0c;都用于返回不滿足某一條件的結果&#xff0c;但是它們在內部的實現方式以及某些特定場景下的行為有所不同。1. NOT INNOT IN 是用來排除在指定值集合中存在的值。通常用來與子…

數據庫關系運算之連接

在數據庫理論中&#xff0c;關系連接&#xff08;Join&#xff09; 是將兩個或多個關系&#xff08;表&#xff09;中的元組&#xff08;行&#xff09;根據一定條件組合成新關系的操作&#xff0c;是關系型數據庫中核心且高頻使用的操作。其本質是通過共享的屬性&#xff08;列…

npm全局安裝后,依然不是內部或外部命令,也不是可運行的程序或批處理文件

雖然通過 npm install -g yarn 安裝了 Yarn&#xff0c;但系統無法識別 yarn 命令。這通常是因為 npm 的全局安裝目錄沒有添加到系統的 PATH 環境變量中C:\Users\Administrator>npm install -g yarnadded 1 package in 518msC:\Users\Administrator>yarn yarn 不是內部或…

C++ Proactor 與 Reactor 網絡編程模式

&#x1f9e0; C Proactor 與 Reactor 網絡編程模式&#x1f4cc; 核心區別概述特性Reactor 模式Proactor 模式事件驅動核心監聽 I/O 就緒事件 (可讀/可寫)監聽 I/O 完成事件 (讀完成/寫完成)I/O 執行者用戶線程 主動執行 I/O 操作操作系統 異步執行 I/O 操作控制流同步非阻塞 …

從手動操作到自動化:火語言 RPA 在多系統協作中的實踐

在企業日常運營中&#xff0c;很多業務流程需要在多個系統間來回切換&#xff1a;從 A 系統導出數據&#xff0c;到 B 系統校驗格式&#xff0c;再到 C 系統錄入信息…… 這些跨系統操作步驟繁瑣、邏輯固定&#xff0c;卻往往依賴人工完成&#xff0c;不僅效率低下&#xff0c;…

Spring Security 實踐之登錄

前言Spring Security是一個功能強大且高度且可定制的身份驗證和訪問控制框架&#xff0c;包含標準的身份認證和授權。 本文主要介紹SpringBoot中如何配置使用 Spring Security 安全認證框架并簡述相關原理和步驟。核心認證流程解析請求過濾 用戶提交登錄表單AbstractAuthentica…

華為云開發者空間 × DeepSeek-R1 智能融合測評:云端開發與AI客服的協同進化

前言&#xff1a; 華為開發者空間&#xff0c;是為全球開發者打造的專屬開發者空間&#xff0c;致力于為每位開發者提供一臺云主機、一套開發工具和云上存儲空間&#xff0c;當普惠云資源遇見推理大模型&#xff0c;企業服務與開發效能的范式革命正在加速。華為云開發者空間&am…

二分查找----4.搜索旋轉排序數組

題目鏈接 /** 升序數組在某個位置被分割為前后兩部分,前后兩部分整體互換;在被改變后的數組中找到目標值 O(log n)---> 二分查找 特點: 旋轉后的數組被分割為兩個獨立的遞增區間 左半區的最小值,大于右半區的最大值(mid所在區間的判斷依據) 二分策略: 首先判斷mid落在左區間…