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 项目中的迁移:
- cordova-plugin-androidx 将持续配置 Cordova Android 平台项目以使用 AndroidX。
- cordova-plugin-androidx-adapter 迁移对 Cordova Android 平台项目中遗留支持库的任何引用,以使用 AndroidX 等效名称。
我创建了这些作为我现有插件中 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)
- 添加 https://www.npmjs.com/package/cordova-plugin-androidx-adapter 插件。
- 然后准备android平台
你的构建现在应该可以工作了
顺便说一下@DaveAlden,https://github.com/dpa99c/cordova-plugin-androidx 通过添加倍数的 enable-jetifier 和 enableAndroidX 规则而不是仅仅更改布尔值
来搞乱 gradle.properties 文件
这是我的故事:我已将我的应用程序迁移到 AndroidX,因为我需要从网上找到的库中获取一些新功能。
问题:我目前 运行 遇到了一些问题,因为我现在需要为 Cordova 开发一个插件来实现该应用程序的一部分。
我用我的库生成了一个 .arr 文件并尝试制作一个 Cordova 插件作为使用该库的接口。但是,当我尝试将 cordova-plugin-camera
与使用 AndroidX 的插件一起使用时,出现错误:重复导入,因为 cordova-plugin-camera
使用了支持库。
解决方案:我已经删除了对 AndroidX 的依赖,并用旧的支持库替换它们。
问题:现在切换到 AndroidX 是个好主意还是我最好保留支持库?我执行错了吗?你为你的项目选择了什么?
我创建了几个实用程序插件来协助 AndroidX 在 Cordova Android 项目中的迁移:
- cordova-plugin-androidx 将持续配置 Cordova Android 平台项目以使用 AndroidX。
- cordova-plugin-androidx-adapter 迁移对 Cordova Android 平台项目中遗留支持库的任何引用,以使用 AndroidX 等效名称。
我创建了这些作为我现有插件中 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)
- 添加 https://www.npmjs.com/package/cordova-plugin-androidx-adapter 插件。
- 然后准备android平台
你的构建现在应该可以工作了
顺便说一下@DaveAlden,https://github.com/dpa99c/cordova-plugin-androidx 通过添加倍数的 enable-jetifier 和 enableAndroidX 规则而不是仅仅更改布尔值
来搞乱 gradle.properties 文件