gpt4 book ai didi

android - 部署前修改 Android App Bundle (aab) 内容

转载 作者:行者123 更新时间:2023-12-03 19:13:18 34 4
gpt4 key购买 nike

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

现在我们正在尝试使用 Android App Bundle (AAB) 执行此操作,我们不能再使用 apktool。我们如何使用 AAB 实现与使用 APK 相同的效果?

这是我们脚本的工作 apk 版本的 fragment

## 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

此外,资源和 list 已经转换为 protobuf,我不认为我可以对它们进行逆向工程。

最佳答案

要编辑 AAB 的 list ,您需要提取文件 base/manifest/AndroidManifest.xml来自 AAB,例如

unzip -p app.aab base/manifest/AndroidManifest.xml > AndroidManifest.pb
在这个阶段,尽管有扩展名,但 list 是 Protocol Buffer 格式(这就是我在上面给它的扩展名 .pb 的原因)。因此,您需要找到一个 Protocol Buffer 解析器/编辑器来进行所需的更改。
要解析 proto,您需要定义 Protocol Buffer ,您可以在此 JAR 中找到它: https://maven.google.com/com/android/tools/build/aapt2-proto/3.6.3-6040484/aapt2-proto-3.6.3-6040484.jar 见留言XmlNodeResources.proto
对已解析的 proto 进行更改后,重新序列化 proto 并将其重新注入(inject) AAB 中具有相同名称的相同位置(它只是一个 zip 文件)。
最后,您不需要压缩对齐 AAB,因此删除此步骤。
也许在 future ,一个工具会允许你自动为你转换,类似于 apktool 所做的。同时,您可以通过这种方式手动完成。希望有帮助。
Lionscribe 编辑
简单的分步说明。
  • 按照上述说明从 AAB 文件中提取 AndroidManifest.xml 文件。对于此用途,将名称保留为“AndroidManifest.xml”。
  • https://developers.google.com/protocol-buffers/docs/downloads 下载 protoc 二进制文件并将二进制文件提取到路径或工作文件夹。
  • 下载以上引用jar file ,使用任何 zip 程序打开 jar,然后将文件“Resources.proto”和“Configuration.proto”从 jar 根文件夹复制到您的工作文件夹。
  • 运行命令protoc --decode=aapt.pb.XmlNode Resources.proto < AndroidManifest.xml > output.txt解码文件。
  • 根据您的需要编辑“output.txt”。
  • 运行protoc --encode=aapt.pb.XmlNode Resources.proto < output.txt > AndroidManifest_new.xml对新版本进行编码。
  • 关于android - 部署前修改 Android App Bundle (aab) 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61462822/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com