当前位置: 首页 > news >正文

小程序安卓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.lryc.cn/news/599200.html

相关文章:

  • Linux 时间同步的流程
  • 小程序卡顿到丝滑体验:ZKmall开源商城性能优化与兼容修复实战指南
  • 教培机构如何开发自己的证件照拍照采集小程序
  • 【pybind11】 pybind11如何调用python
  • 《整合Spring Cache:本地缓存、Redis与Caffeine对比实践》
  • Python 数据可视化之 Matplotlib 库
  • 【国内电子数据取证厂商龙信科技】谁是躲在“向日葵”后的
  • OSPF之多区域
  • 【ResNet50图像分类部署至RK3588】模型训练→转换RKNN→开发板部署
  • Jmeter的元件使用介绍:(四)前置处理器详解
  • JMeter每次压测前清除全部以确保异常率准确(以黑马点评为例、详细图解)
  • Pytorch中register_buffer和torch.nn.Parameter的异同
  • npm init vite-app runoob-vue3-test2 ,npm init vue@latest,指令区别
  • LIMA:大语言模型对齐的“少即是多”革命——原理、实验与范式重构
  • VR 技术在污水处理领域的创新性应用探索​
  • 华为云DRS实现Oracle到GaussDB数据库迁移的全流程技术方案
  • GTSuite许可与网络安全
  • Android Studio 自带的官方模拟器,ABI这一列是x86_64,xABI这一列是arm64-v8a
  • Apache Ranger 权限管理
  • Android Studio 2024 内嵌 Unity 3D 开发示例
  • Android studio自带的Android模拟器都是x86架构的吗,需要把arm架构的app翻译成x86指令?
  • Oracle数据块8KB、OS默认认块管理4KB,是否需调整大小为一致?
  • 弹性网:基于神经网络的多组分磁共振弹性成像波反演与不确定性量化|文献速递-医学影像算法文献分享
  • LeetCode 127:单词接龙
  • Hive-vscode-snippets
  • Hive【Hive架构及工作原理】
  • Oracle MCP本地部署测试
  • js实现宫格布局图片放大交互动画
  • [python][flask]flask接受get或者post参数
  • 【调试Bug】网络在训练中输出NaN