AndroidX过渡和Cordova,有哪些风险/优势?

时间:2019-04-02 13:15:50

标签: cordova plugins migration androidx

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

例如,请尝试以下测试案例:

cordova create test && cd test
cordova platform add android@8
cordova build android
    => build succeeds
cordova plugin add cordova.plugins.diagnostic
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

答案 1 :(得分:0)

请阅读: 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 规则而不是仅仅更改 bool 值来弄乱 gradle.properties 文件