在部署之前修改Android应用程序包(aab)内容

在部署之前修改Android应用程序包(aab)内容,android,apk,android-app-bundle,Android,Apk,Android App Bundle,我们有一个构建和发布管道(Azure Devops),将我们的APK Android应用程序部署到各种appcenter.ms环境中。在发布过程中,我们解包apk,使用特定于环境的配置修改内容,然后重新打包apk 现在我们正试图通过Android应用程序包(AAB)实现这一点,我们不能再使用apktool了。我们如何使用AAB实现与使用APK相同的目标 这是我们正在使用的apk版本脚本的一个片段 ##注意,东西被截断了!!!这不是一个完整的脚本!!!不要抄袭 brew列表apktool&>/de

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

现在我们正试图通过Android应用程序包(AAB)实现这一点,我们不能再使用apktool了。我们如何使用AAB实现与使用APK相同的目标

这是我们正在使用的apk版本脚本的一个片段

##注意,东西被截断了!!!这不是一个完整的脚本!!!不要抄袭
brew列表apktool&>/dev/null | | |自制|否(自动)更新=1 brew安装apktool
brew列表xmlstarlet&>/dev/null | | |自制|否(自动)更新=1 brew安装xmlstarlet
# ... 截断的。。。
echo“反编译$zipPath”
apktool d$zipPath-o“apk”
cd-apk
# ... 已截断/修改androidmanifest.xml。。。
unalignedPath=“$apkPath.unaligned”
unsignedPath=“$apkPath.unsigned”
光盘
echo“将apk重新打包到$unsignedPath”
apktool b apk-o$unsignedPath
回音“符号”
jarsigner-keystore$keystorePath-storepass$keystorePass-keypass$keystorePass-verbose-sigalg MD5withRSA-digestalg SHA1-signedjar$unalignedPath$unsignedPath$keyalis
jarsigner-verify-verbose-certs$unalignedPath
回音“Zipalign”
$ANDROID_HOME/build tools/27.0.3/zipalign-f-v4$unalignedPath$apkPath
当我们简单地将文件扩展名从
apk
更改为
aab
并运行相同的apktool时,我们的文件夹结构有点混乱。


另外,资源和清单已经转换为protobuf,我认为我无法对它们进行反向工程。

要编辑AAB的清单,您需要从AAB中提取文件
base/manifest/AndroidManifest.xml
,例如

unzip -p app.aab base/manifest/AndroidManifest.xml > AndroidManifest.pb
在这个阶段,尽管清单进行了扩展,但它是一种协议缓冲区格式(这就是为什么我给它上面的扩展名
.pb
)。因此,您需要找到一个协议缓冲区解析器/编辑器来进行所需的更改

要解析proto,您需要协议缓冲区的定义,可以在这个JAR中找到:请参阅
参考资料中的message
XmlNode
。proto

对解析后的proto进行更改后,重新序列化proto,并在AAB中的同一位置以相同的名称重新注入它(它只是一个zip文件)

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


也许将来有一个工具可以让你自动完成转换,就像apktool一样。同时,您可以通过这种方式手动完成。希望这能有所帮助。

我正试着采纳你的建议。你有其他的链接或指南吗?我很难找到一个好的资源来完成这项工作。因此,我的回答是:“然后你需要找到一个协议缓冲区解析器/编辑器来进行你需要的更改。”@Pierre你能帮我一下吗?或者分享一下使用proto-jar的命令吗?@Valdeto你有什么进展吗?@jgm我有了一些进展,但仍然找不到proto-parser。我只是呆在APKs。你在这方面有进展吗?我也在寻找类似的东西@蔡斯·弗洛雷尔