使用 Ionic 和 Cordova 生成针对 API Level 30(Android 11)的 Android bundle。

5
我是一个Ionic开发者,最近在提交更新或新应用时遇到了Google Play的这些新要求:
从2021年8月开始,新的应用需要使用Android App Bundle格式发布。
从2021年11月开始,应用程序更新将需要针对API级别30或更高版本进行调整,并适应Android 11中的行为变化。未收到更新的现有应用程序不受影响,并且可以继续从Play商店下载。Wear OS应用程序必须继续针对API级别28或更高版本进行定位。
我正在使用ionic/cli v6.16.3和cordova v10.0.0,但我无法使用以下命令创建aab包:
ionic cordova build android --prod --release -- -- --packageType=bundle 虽然此前在我的cordova版本(v9)上能够正常工作,但自从我升级到cordova v10后就无法正常工作了。
除此之外,我不确定是否需要使用APKSIGNER方案v2来签署bundle。
3个回答

4

最终,我得出了以下结论,并且这对我非常有效:

只有针对API级别30的APK格式才需要使用APKSIGNER v2方案进行签名。

相反地,如果我们使用App Bundle格式,则不需要使用APSIGNER v2方案对Bundle进行签名。

因此,我成功上传ABB Bundle至Google Play时遵循的步骤如下:

1. 生成Bundle

ionic cordova build android --prod --release - - --packageType=bundle

如果没有使用此命令生成aab,则需要手动生成,操作步骤如下:
前往文件夹 .\platforms\android\ 并执行:
.\gradlew.bat bundleRelease

如果您在lunuex或mac上,请删除.bat。

这将在\platforms\android\app\build\outputs\bundle\release目录下生成一个aab文件。

2. 本地签署aab文件 (这对于支持旧版Android版本是必要的)

我们需要复制位于\platforms\android\app\build\outputs\bundle\release目录下的生成的未签名aab文件到存放密钥库和jarsiner工具的路径(在我的情况下是JDK路径:C:\Program Files\Java\jdk1.8.0_201\bin)。

然后,打开控制台(以管理员权限),进入该目录并执行:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore name-of-keystore.jks app_name.aab keystore-alias

(*重命名参数:name-of-keystore.jks、app_name.aab和keystore-alias)

3. 对齐aab文件

在上传aab文件之前,可以通过运行以下命令对aab文件进行对齐:

zipalign.exe -v 4 signed app_name.aab aligned_app_name.aab

(*重命名参数:app_name.aab和aligned_app_name.aab)

这个已对齐的aab文件必须上传到Google Play。


如果我不对齐它,会发生什么? - M. Mariscal
上传apk/abb到Google Play时可能会被拒绝,但我不确定,因为我从未尝试过不进行对齐上传。在这里,您可以了解更多基础知识:https://developer.android.com/studio/command-line/zipalign它说:“在将APK文件分发给最终用户之前,应使用zipalign进行优化。如果您使用Android Studio构建,则会自动执行此操作。此文档适用于自定义构建系统的维护者。” - Leonardo Nomdedeu

1
我正在使用Cordova v10.0.0,这个命令可以帮助我完成构建: cordova build android --release -- --buildConfig --packageType=bundle 参数的顺序可能很重要。不需要使用gradlew命令。 .aab文件将被创建并存储在platforms\android\app\build\outputs\bundle\release\文件夹中。
请注意,在我更新cordova-android依赖项之前,它无法正常工作:cordova platform rm android,然后是cordova platform add android(基于另一个答案);现在的版本是9.1.0。

这对我有用。谢谢。 - saravana

0

当你要在应用商店发布你的应用时,你可能会被迫使用apksigner而不是jarsigner。同时,使用apksigner时签名和压缩的顺序也发生了改变。

Cordova示例:

构建

cordova build --release android

压缩

cd platforms/android/app/build/outputs/apk/release

~/Library/Android/sdk/build-tools/31.0.0/zipalign -v 4 app-release-unsigned.apk YOUR_APP_NAME_HERE.apk

签名

~/Library/Android/sdk/build-tools/31.0.0/apksigner sign -ks ../../../../../../../THE_NAME_OF_YOUR_KEYS.keystore YOUR_APP_NAME_HERE.apk


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接