Cordova Android更新编译SDK版本。

6

我刚接触使用 cordova-android 构建 Android 应用程序。

当我在项目根目录的 config.xml 中更新 compileSdkVersion / buildToolsVersion 时,遇到了问题。

由于 cordova-android 版本 9 支持 API 级别29,但是 Android SDK API 级别30已经可用,而 cordova-android 还没有提供支持。

我尝试像下面这样在 config.xml 中更新偏好设置的 compileSdkVersion / buildToolsVersion:

<?xml version='1.0' encoding='utf-8'?>

有人能帮我更新上述两个属性,以便使用最新的SDK API Level 30构建apk吗?

3个回答

8
Cordova 11.0.0已发布,但要更新此高排名的问题,您需要将以下内容添加到您的config.xml文件中:
<preference name="android-minSdkVersion" value="19" />
<preference name="android-targetSdkVersion" value="31" />
<preference name="android-compileSdkVersion" value="31" />

此外,针对Android 12及以上版本的应用程序必须添加

android:exported="true" 

对于您清单中的所有Activity和Requirement语句--我不得不手动在几个地方添加这些以适应较旧的插件。


1
为什么?你能否添加文档链接或解释一下这两个更改的原因? - Paul Verest
从 https://cordova.apache.org/announcements/2022/07/12/cordova-android-release-11.0.0.html 的公告中,我会认为 android-targetSdkVersionandroid-compileSdkVersion 的值应该是 32。 - Paul Verest
找不到关于 android:exported="true" 的任何信息。 - Paul Verest
1
@paulVerest 之前有一段时间了,但我相信这个问题的最佳答案是我的来源:https://dev59.com/p1EG5IYBdhLWcg3wW7I5#67412314 - brianfit
谢谢提供链接。但是第一部分中2行的“value”值必须为32:...SdkVersion" value="32" /> - Paul Verest

8

基于 Cordova 要求和支持,当前的 cordova-android@9 支持 API 级别 29 及以下。我们可以预期,下一个版本 cordova-android@10 很可能会针对 API 级别 30,并且可能需要等待来自 Cordova 团队的官方更新。 enter image description here

在那之前,我们可以使用来自 npmnightly 版本的 cordova-android@10 进行测试。

根据 Google 最近的截止日期,

2021年8月 - 新应用程序必须针对至少Android 11 (API级别30)进行定位

2021年11月 - 现有应用程序必须为新应用程序更新针对至少Android 11 (API级别30)进行定位

因此,我们可以等到8月份获得官方更新:)。

解决方法:
(可能有效,也可能无效。在实际应用之前请在样例应用中使用)

更改config.xml上的android-targetSdkVersion

<preference name="android-targetSdkVersion" value="30" />

使用以下方法删除平台
cordova platform remove android

然后添加最新的cordova安卓版本:
cordova platform add android@latest

构建项目:
cordova build android

2
以上方法没有升级到最新的Android SDK版本(API级别30),因为cordova-android的最新官方版本是9.1.0,下面是它创建的gradle属性。project.ext { defaultBuildToolsVersion="29.0.2" //字符串 defaultMinSdkVersion=22 //整数 - 最低要求是Android 5.1 defaultTargetSdkVersion=29 //整数 - 我们默认始终针对最新版本 defaultCompileSdkVersion=29 //整数 - 我们默认始终使用最新版本进行编译 } - user2313833
正如我在答案中所说,解决方法可能有效也可能无效。你需要等待cordova 10版本以获取更多更新。你尝试过“nightly”版本吗? - Swaminathan V

3

在您的config.xml中添加/更新targetSdk版本为30,如下所示。

<preference name="android-targetSdkVersion" value="30" />

上述命令将目标SDK版本更改为30。
使用以下命令移除android平台并重新添加。
cordova platform add android@10.0.0

执行上述命令将更新compileSdk版本至30。如果未执行此步骤,则其值将与添加平台时可用版本相同。
同时,请确保安装了最新的SDK和构建工具以进行正确的命令执行。

有没有一种方法可以在packages.json或config.xml中强制使用cordova-android 10? - pauloya
是的,@pauloya,您可以在package.json和package-lock.json中定义“cordova-android”:“10.0.0”。但是,如果它没有添加/更新package.json或lock.json中的条目,则仍应始终运行命令cordova platform add android@10.0.0,然后再手动操作。 - nirmal
我在Play商店中有一个现有的Cordova应用程序,使用API目标级别30。我无法升级到级别31。问题是:在2022年11月之后,我的现有应用程序在使用级别30的情况下能够被用户发现和下载多长时间? - A.W.
1
@August 除非出现安全问题,否则他们不会撤下现有的安卓应用程序。 - nirmal

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