[部署前修改Android应用捆绑包(aab)内容

问题描述 投票:0回答:1

[我们有一个构建和发布管道(Azure Devops),可将我们的APK Android应用部署到各种appcenter.ms环境。在发布过程中,我们将apk打包,使用特定于环境的配置修改内容,然后重新打包apk。

现在,我们正在尝试使用Android App Bundle(AAB)进行此操作,因此我们将无法再使用apktool。如何使用AAB实现与APK一样的效果?

这是我们的脚本的[[working apk版本的摘要

## NOTE STUFF IS TRUNCATED!!! THIS IS NOT A COMPLETE SCRIPT!!! DO NOT COPY brew list apktool &>/dev/null || HOMEBREW_NO_AUTO_UPDATE=1 brew install apktool brew list xmlstarlet &>/dev/null || HOMEBREW_NO_AUTO_UPDATE=1 brew install xmlstarlet # ... truncated ... echo "Decompiling $zipPath" apktool d $zipPath -o "apk" cd apk # ... truncated / modify androidmanifest.xml ... unalignedPath="$apkPath.unaligned" unsignedPath="$apkPath.unsigned" cd .. echo "Repackage apk to $unsignedPath" apktool b apk -o $unsignedPath echo "Sign" jarsigner -keystore $keystorePath -storepass $keystorePass -keypass $keystorePass -verbose -sigalg MD5withRSA -digestalg SHA1 -signedjar $unalignedPath $unsignedPath $keyAlias jarsigner -verify -verbose -certs $unalignedPath echo "Zipalign" $ANDROID_HOME/build-tools/27.0.3/zipalign -f -v 4 $unalignedPath $apkPath
[当我们简单地将文件扩展名从apk更改为aab并运行相同的apktool时,我们的文件夹结构有点混乱。folder structure when extracting apk from aab file

而且,资源和清单已经转换为protobuf,我认为我不能对其进行反向工程。

android apk android-app-bundle
1个回答
2
投票
要编辑AAB的清单,您需要从AAB中提取文件base/manifest/AndroidManifest.xml,例如

unzip -p app.aab base/manifest/AndroidManifest.xml > AndroidManifest.pb

[在此阶段,清单仍是协议缓冲区格式(这就是为什么我在上面给它扩展名.pb的原因)。因此,您将找到一个协议缓冲区解析器/编辑器来进行所需的更改。

要解析原型,您需要定义协议缓冲区,您可以在此JAR中找到它的定义:https://maven.google.com/com/android/tools/build/aapt2-proto/3.6.3-6040484/aapt2-proto-3.6.3-6040484.jar

请参见XmlNode中的消息Resources.proto

一旦对解析后的原型进行了更改,请重新序列化该原型,然后将其重新插入到AAB中相同名称的同一位置(这只是一个zip文件)。

最后,您不需要将AAB压缩对齐,因此请删除此步骤。

也许将来某个工具会自动允许您进行转换,类似于apktool所做的那样。同时,您可以通过这种方式手动进行操作。希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.