AndroidX 过渡和 Cordova,risks/benefits 是什么?

AndroidX transition and Cordova, what are the risks/benefits?

这是我的故事:我已将我的应用程序迁移到 AndroidX,因为我需要从网上找到的库中获取一些新功能。

问题:我目前 运行 遇到了一些问题,因为我现在需要为 Cordova 开发一个插件来实现该应用程序的一部分。

我用我的库生成了一个 .arr 文件并尝试制作一个 Cordova 插件作为使用该库的接口。但是,当我尝试将 cordova-plugin-camera 与使用 AndroidX 的插件一起使用时,出现错误:重复导入,因为 cordova-plugin-camera 使用了支持库。

解决方案:我已经删除了对 AndroidX 的依赖,并用旧的支持库替换它们。

问题:现在切换到 AndroidX 是个好主意还是我最好保留支持库?我执行错了吗?你为你的项目选择了什么?

我创建了几个实用程序插件来协助 AndroidX 在 Cordova Android 项目中的迁移:

我创建了这些作为我现有插件中 AndroidX 支持的通用解决方案,这些插件引用了 Android 支持库,例如cordova-diagnostic-plugin against which AndroidX support issues has been raised.

这意味着通过在 Cordova 项目中安装这两个插件,该项目已经包含引用遗留支持库名称 and/or 或 AndroidX 名称的插件,现在构建将成功。

例如,试试这个测试用例:

cordova create test && cd test
cordova platform add android@8
cordova build android
    => build succeeds
cordova plugin add cordova.plugins.diagnostic@5
cordova build android
    => build succeeds
cordova plugin add cordova-plugin-androidx
cordova build android
    => build fails
cordova plugin add cordova-plugin-androidx-adapter
cordova build android
    => build succeeds

请阅读: https://cordova.apache.org/announcements/2020/06/29/cordova-android-9.0.0.html

确定:

  • 清除您的 gradle 缓存目录(在 home/.gradle/caches)
  • 删除和添加 android 平台
  • 按照上述文章检查您的要求

然后:

在您的 config.xml 中添加以下内容:

<preference name="AndroidXEnabled" value="true" />
<preference name="GradlePluginKotlinEnabled" value="true" />
<preference name="GradlePluginKotlinCodeStyle" value="official" />
<preference name="GradlePluginKotlinVersion" value="1.3.50" />

(AndroidXEnabled 偏好在 gradle.properties 中添加 jetifyer 和 androidX)

你的构建现在应该可以工作了


顺便说一下@DaveAlden,https://github.com/dpa99c/cordova-plugin-androidx 通过添加倍数的 enable-jetifier 和 enableAndroidX 规则而不是仅仅更改布尔值

来搞乱 gradle.properties 文件