使用ionic和cordova生成针对API 30级(Android 11)的Android捆绑包



我是一名离子开发者,在提交更新(或新应用程序)时,我一直在处理Google Play的这些新要求:

从2021年8月开始,新应用程序将需要使用Android应用程序捆绑包格式。

从2021年11月开始,将需要针对API进行应用程序更新级别30或以上,并根据Android 11中的行为变化进行调整。未接收更新的现有应用程序不受影响,并且可以继续从Play Store下载。必须佩戴操作系统应用程序继续以API 28级或更高级别为目标。

我使用的是ionic/cli v6.16.3和cordova v10.0.0,无法使用以下命令创建aab捆绑包:

ionic cordova构建android产品发布包类型=捆绑

它曾经在我的previos cordova版本(v9)中运行良好,但自从我升级到cordova v10后,它就停止了工作。

除此之外,我不确定是否必须使用APKSIGNER方案v2签署捆绑包。

最后,我得出了这个结论,这就是它对我的作用:

APKSIGNER方案v2必须仅在针对API级别30的APK格式中使用。

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

因此,我所遵循的步骤,以成功上传一个abb捆绑包目标API级别30到谷歌播放是:

1.生成绑定

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

如果aab不是用这个命令生成的,那么我们必须手动生成它,如下所示:

转到文件夹。\平台\android\和执行:

.gradlew.bat bundleRelease

如果你在午餐或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

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

3.对齐abb

在上传aab之前,您可以运行以下命令对其进行对齐:

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

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

这个对齐的aab是必须上传到Google Play 的

我使用的是Cordova v10.0.0,这个命令对我有效:

cordova build android --release -- --buildConfig --packageType=bundle

参数的顺序可能很重要。无需使用gradlew命令。创建.aab文件并将其存储在platformsandroidappbuildoutputsbundlerelease文件夹中。

注意,直到我更新了cordova android依赖项:cordova platform rm android,然后是cordova platform add android(基于另一个答案),它才起作用;版本现在是9.1.0。

当你在play商店上发布应用程序时,你可能会被迫使用apksigner而不是jarsigner。同样有了apksigner,签名和拉绳的顺序也发生了变化。

Cordova示例:

构建

cordova build --release android

zip

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

相关内容

最新更新