将Apk转换为Aab(Android-App-Bundle)(如何转换apk格式)(apk转换成app)

访客 237 0

根据Google Play的政策要求,自 2021 年 8 月起,Google Play 将开始要求新应用使用 Android App Bundle(以下简称aab) 进行发布。该格式将取代 APK 作为标准发布格式

通常情况下,只需使用AS的打包功能生成aab文件即可满足要求,并将其上传至Google Play。

然而,存在一个问题,不是每次都能获得游戏工程或源码。如果你收到的是一个apk包,那么你将如何处理呢?

现在,我将向大家详细介绍如何逐步将APK转换为AAB。

需要工具

  • bundletool-all-1.6.1.jar是一个由Google提供的用于生成和测试aab文件的工具。在gradle打包过程中,也使用了这个工具。你可以通过访问github.com/google/bundletool/releases来获取它。关于详细文档和使用方法,请参考developer.android.com/studio/command-line/bundletool。

  • 请下载最新版本的apktool工具,该工具是一款用于反编译安卓apk文件的实用程序。你可以在GitHub上找到获取方式:github.com/iBotPeaches。

  • aapt2是Android资源打包工具的全称,它是Android SDK中的一部分。您可以通过以下方式获取:在ANDROID SDK中找到路径$ANDROID_SDK/build-tools/30.0.3/aapt2。有关详细文档和使用方法,请访问developer.android.com/studio/command-line/aapt2。

  • Android框架提供了系统资源和API,其中包括android.jar。您可以通过以下方式获取:使用ANDROID SDK,路径为$ANDROID_SDK/platforms/android-30/android.jar。

apk生成aab

APK解压操作

使用apktool解压APK包

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

解压apk后 decode_apk_dir 目录结构:
将Apk转换为Aab(Android-App-Bundle)(如何转换apk格式)(apk转换成app)-第1张图片-谷歌商店上架

编译资源

使用aapt2编译资源,生成一个包含*.flat文件的集合。

使用aapt2编译命令,将decode_apk_dir\res目录中的资源编译为compiled_resources.zip文件。 

相关资源

生成base.apk

请执行以下命令解压base.apk文件:aapt2 link --proto-format -o base.apk -I android_30.jar --min-sdk-version 19 --target-sdk-version 29 --version-code 1 --version-name 1.0 --manifest decode_apk_dir\AndroidManifest.xml -R compiled_resources.zip --auto-add-overlay 

解压到base文件夹,目录结构:
将Apk转换为Aab(Android-App-Bundle)(如何转换apk格式)(apk转换成app)-第2张图片-谷歌商店上架

复制资源

建立一个名为base的文件夹,并将其设为根目录。

请将解压后的resources.pb文件复制到./temp/base/resources.pb目录下。

请将解压后的res文件夹复制到./temp/base/res目录下。

请将解压后的AndroidManifest.xml文件复制到./temp/base/manifest目录下,然后创建一个名为manifest的文件夹。

拷贝assets , 将 ./temp/decode_apk_dir/assets 拷贝到 ./temp/base/assets

将lib文件夹复制,将./temp/decode_apk_dir/lib复制到./temp/base/lib。

请将 ./temp/decode_apk_dir/unknown 拷贝到 ./temp/base/root/unknown,以创建root文件夹并复制unknown文件。

拷贝kotlin, 将 ./temp/decode_apk_dir/kotlin拷贝到 ./temp/base/root/kotlin

在根目录下创建一个名为META-INF的文件夹,路径为./temp/base/root/META-INF。

请将 ./temp/decode_apk_dir/ 文件夹中的所有.dex文件复制到 ./temp/base/dex/ 文件夹下,确保多个.dex文件一并复制过来。

base/resources.pb  =>  base/resources.pbbase/res
base/AndroidManifest.xml  =>  base/manifest/AndroidManifest.xml
decode_apk_dir/assets  =>  base/assets
decode_apk_dir/lib     =>   N/A 
base/├── assets├── dex├── lib├── manifest├── res├── resources.pb└── root 经过压缩处理后,资源结构如下: 

请务必将名为base的文件夹压缩成zip格式,并命名为base.zip。

请注意:在压缩后双击打开应用时,将显示所有资源而不是仅显示基本资源。如果需要查看基本资源,请点击“base”。否则,可能会出现找不到AndroidManifest.xml文件的错误提示。

将aab编译

使用bundletool是必要的,以便打包app bundle。

请使用以下命令生成aab签名文件:java -jar bundletool-all-1.6.1.jar build-bundle --modules=base.zip --output=base.aab --ks mykeystore.jks --ks-pass pass:mypassword
请使用以下命令为 base.aab 文件进行签名,不需要使用 apksigner 进行 v2 签名。注意替换 、 和  为实际的值:

```
jarsigner -digestalg SHA1 -sigalg SHA1withRSA -keystore  -storepass  -keypass  base.aab 
```

在对 aab 文件进行签名时,只需使用 JDK 的普通方式即可。 

测试与安装

由于篇幅有限,Aab的测试与安装将在下一篇文章中介绍。请参阅有关Aab(Android App Bundle)测试与安装的详细信息。

结束语

如果在过程中遇到问题或需要交流的同学和独立开发者,都可以私信我,我会拉你进入群聊。请在添加好友时备注“Apk转Aab”或“独立开发俱乐部”,因为这是两个不同的群。

标签: 谷歌商店上架 文件 文件夹

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~