我们很高兴地宣布,我们刚刚发布了 Cordova Android 9.0.0
!这是 Cordova 支持的用于构建 Android 移动应用程序的平台之一。
升级
cordova platform remove android
cordova platform add [email protected]
版本亮点
-
添加了 Kotlin 支持
Kotlin 是最新的用于开发 Android 应用程序的静态类型语言之一。它被设计为与现有语言 Java 完全兼容。
默认情况下,Cordova 禁用了 Kotlin,但可以通过在
config.xml
中使用GradlePluginKotlinEnabled
配置项 来启用它。此外,Kotlin 的编码风格和版本是可配置的。默认情况下,Cordova 将编码风格设置为
official
,并使用1.3.50
版本。以下是启用和配置 Kotlin 的
config.xml
示例。<preference name="GradlePluginKotlinEnabled" value="true" /> <preference name="GradlePluginKotlinCodeStyle" value="official" /> <preference name="GradlePluginKotlinVersion" value="1.3.50" />
对于插件开发人员,建议确保将 Kotlin 文件放置到平台
src/main/kotlin
目录中。 -
添加了 AndroidX 支持
AndroidX 是 Android 支持库的新的、改进的命名空间。原始的支持库不再维护。
建议使用 AndroidX,以便您的应用程序运行最新的支持库,但是默认情况下,Cordova 禁用了 AndroidX 支持,以兼容现有的插件。
许多 Android 支持的插件仍然使用旧的支持库,当使用 AndroidX 支持库时,这些插件无法构建。建议您在启用此功能之前,先研究每个插件是否支持 AndroidX。
建议插件开发人员开始迁移以支持 AndroidX。应用程序开发人员也可以使用 Jetifier 自动迁移其现有的第三方库以使用 AndroidX。
您可以通过在
config.xml
中将AndroidXEnabled
配置项 设置为true
来启用此功能。<preference name="AndroidXEnabled" value="true" />
如果您之前使用 cordova-plugin-androidx 插件来启用 AndroidX 支持,那么此配置项不再需要此插件。
cordova-plugin-androidx-adapter 插件可用于将旧的引用迁移到新的 AndroidX 引用。
-
添加了 Google 服务支持
要使用 Google API 或 Firebase 服务,在构建 Android 应用程序时,需要启用 Gradle 插件 Google Services。
对于插件开发人员,可以通过将
GradlePluginGoogleServicesEnabled
preference
配置项设置到应用程序的config.xml
中来启用此功能。从plugin.xml
文件中,可以通过添加以下行来完成此操作<config-file target="config.xml" parent="/*"> <preference name="GradlePluginGoogleServicesEnabled" value="true" /> <preference name="GradlePluginGoogleServicesVersion" value="4.2.0" /> </config-file>
-
Android 版本支持更新
- 默认的目标 SDK 版本设置为 29。
- 最低 SDK 版本设置为 22。
- 最低支持的 Android 版本是 5.1。
注意:由于 Cordova 已将最低 SDK 版本提高到 22,因此我们不再支持或测试 Android 5.0 或更低版本。
-
Gradle 和 Gradle 插件版本支持更新
- Cordova 已将默认 Gradle 版本提高到 6.5。
- Cordova 已将 Gradle 插件版本提高到 4.0.0
请在 issues.cordova.io 上报告您发现的任何问题!
完整更新日志
- GH-1005 chore: 默认关闭 AndroidX
- GH-971 fix: 接受文件输入中的多种 MIME 类型
- GH-1001 fix: 同时支持自适应图标和标准图标
- GH-985 fix: 安装预览版 SDK 时插件安装失败
- GH-994 chore: 清理 yaml 文件
- GH-999 chore: 从 Java 源代码中删除尾随空格
- GH-992 chore: 更新一些依赖项
- GH-998 chore: 从框架构建文件中删除尾随空格
- GH-997 chore: 从项目模板中删除尾随空格
- GH-996 chore: 从 bat 文件中删除尾随空格
- GH-995 从 markdown 文件中删除尾随空格
- GH-993 chore: 更新
devDependencies
- GH-987 breaking: 将组合响应的截止值减少到 16 MB
- GH-988 major: Gradle 6.5 & Android Gradle 插件 4.0.0 更新
- GH-990 chore: 从
app/build.gradle
中删除尾随空格 - GH-989 breaking: 从模板中删除
legacy/build.gradle
- GH-978 fix:
wait_for_boot
永远等待 - GH-965 fix: 增加了
detectArchitecture()
超时时间 - GH-962 breaking: 将 Android gradle 插件升级到 3.6.0
- GH-948 feature: JVM Args 标志
- GH-951 fix:
ANDROID_SDK_ROOT
变量 - GH-959 test: 将 AndroidX gradle 版本与 Android 测试的版本同步
- GH-960 feat:
com.android.tools.build:gradle:3.5.3
- GH-956 chore(npm): 添加
package-lock.json
- GH-958 chore(npm): 添加忽略列表
- GH-957 chore: 各种清理
- GH-955 chore(eslint): 更新包并应用 eslint 修复
- GH-954 breaking(npm): 更新包
- GH-953 chore(npm): 在
package.json
中使用简短表示法 - GH-823 fix: 防止退出全屏模式关闭应用程序
- GH-950 fix: 删除了冗余的 logcat 输出
- GH-915 breaking: 将 minSdkVersion 提升至 22 并删除 Lollipop 之前的特定代码
- GH-941 fix: GH-873 应用包构建遵守命令行参数
- GH-940 ci: 删除 travis 并将 codecov 移动到 gh-actions
- GH-929 chore: 更新
README
以更准确地反映 Android 的要求,即 Java 8,而不是更低或更高的版本。需要 Java 1.8.x。 - GH-937 fix: GH-935 用原生排序方法替换
compare-func
- GH-939 fix:
rewired
文件中带有 shebang 解释器的测试失败 - GH-911 refactor: 使用 es6 类
- GH-910 refactor (eslint): 使用
cordova-eslint
- GH-909 chore: 删除 appveyor 残留
- GH-895 feat: 添加 github actions
- GH-842 refactor: 删除
shelljs
依赖项 - GH-896 feat: 添加 Kotlin 支持
- GH-901 feat: 添加 AndroidX 支持
- GH-849 fix: cordova requirements 考虑
android-targetSdkVersion
- GH-904 fix (adb): shell 返回预期的 stdout
- GH-792 feat: 将
gradle
升级到 6.1 & gradle 构建工具升级到 3.5.3 - GH-902 chore: 删除
.project
文件 & 将.settings
添加到gitignore
- GH-900 refactor: 简化
doFindLatestInstalledBuildTools
- GH-751 feat: 使用 Java 包名加载
BuildConfig
- GH-898 chore: 重命名 gradle 插件 google services
preference
选项 - GH-893 feat: 添加 Google 服务支持
- GH-709 feat: 添加
version-compare
库以正确比较build-tools
版本。 - GH-831 chore: 忽略自动生成的 eclipse buildship 文件
- GH-848 breaking: 将默认目标 sdk 提高到 29
- GH-859 breaking: 删除不必要的项目名称限制
- GH-833 chore: 删除
q
模块 - GH-862 chore: 使用
execa
替换superspawn
&child_process
- GH-860 feat: 不再过滤 gradle 的 stderr
- GH-832 chore: 删除 node 6 和 8 的支持
- GH-890 chore: 将版本提升至 9.0.0-dev
- GH-697 chore: 代码优化
- GH-863 chore: 删除无意义的注释
- GH-861 chore: 将
jasmine
更新到 3.5.0 - GH-858 chore: 使我们的一个 E2E 测试现代化
- GH-854 chore: 确保尽可能多地 lint 文件