如果我使用 jarsigner 签署 AAB,我是否需要在部署之前签署 APKS 以及生成的 APK?

If I sign an AAB with jarsigner, do I need to sign the APKS and also the resulting APKs before deploying?

在 Azure DevOps 中,我正在解压缩 aab,修改 aab 中的一些文件(图标、资源、清单),并使用 bundletool 构建模块。我的下一步是:

  1. 使用 jarsigner 对 aab 进行签名
  2. 使用 bundletool 生成 APKS 并传递签名信息
  3. Unzip/extract里面的通用APK
  4. 使用 jarsigner 签署 APK 并将其发送到测试设备

我假设我签名的次数超过了必要的次数,因为我做了 3 次(AAB、APKS 和 APK)。哪些签名是必要的?每个签名任务只需要不到 10 秒,但每个任务都会增加额外的复杂性,我希望它尽可能简单以实现可重用性。

以下是所需签名的摘要:

App Bundle (.aab)

在上传到 Play 商店之前需要签名(jarsigner)。

开发或测试期间无需签名。

APK 集 (.apks)

不需要签名。曾经.

APKs (.apk)(APK 集中的那些)

始终需要签名(除非您不打算安装这些 APK)。

当传递 --ks 标志时,Bundletool 会自动为他们在 .apks 中生成的 APK 签名,因此大多数开发者永远不必自己做。

但是,您提到您修改了“某些文件”:如果您修改了 APK,则需要再次对它们进行签名(最好使用 apksigner 而不是 jarsigner -- 更多安全,并使 APK 安装速度更快)。

这是一个如何使用 Xamarin 和 Azure DevOps 生成 Android App Bundle 的示例:https://damienaicheh.github.io/xamarin/azure/devops/2020/02/03/generate-android-app-bundle-xamarin-azure-devops-en.html

以及关于 Xamarin.Android app-bundles 的文档 https://github.com/xamarin/xamarin-android/blob/master/Documentation/guides/app-bundles.md 说:“App Bundle 只能用 jarsigner 签名(而不是 apksigner)。App Bundle 不需要使用 zipalign。Xamarin.Android 应该继续签名 .aab 文件与当前对 .apk 文件所做的相同。com.company.app-Signed.aab 文件将在 $(OutputPath) 中生成,以匹配我们当前与 APK 文件的行为。"