android 7.0 jdk版本,如何在 Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例...

前提

Cordova Android 7.0.0 开始改变了项目安卓平台的架构。新建一个空项目分别添加 Android 6.4.0 和 Android 7.0.0 平台:

cordova platform add android@6.4.0

cordova platform add android@7.0.0

生成的安卓平台结构分别为:

23b117ca27a6

可以看到 Cordova 从 7.0.0 项目结构开始和原生 Android 项目保持一致:

将 AndroidManifest.xml,assets,res,libs 资源目录整合到 src 目录下

将 src 放入一个 app 模块,app 模块由单独的 gradle 文件配置

导致的问题

因为项目结构的改变,很多插件也开始修改集成方式以支持 7.0.0 的使用,并在此基础上进行插件更新操作。

而很多针对低版本开发的项目比如 Cordova-Android 6.4.0,如果无法直接升级项目版本,只能选择集成老版本的插件,得不到最新支持。

解决办法

我们已经知道了 7.0.0 开始结构的主要变化,而低版本和高版本的插件集成无非就是拷贝文件的路径不同罢了,核心代码使用都是同一套。

所以低版本项目想要集成只支持 7.0.0 的新版插件,只要导入插件后,将插件对应文件还原到低版本对应路径便可。

举例

示例插件

这里以 jpush-phonegap-plugin为例,这是极光推送官方支持的 PhoneGap/Cordova 插件,插件从 v3.4.0 开始支持 cordova-android 7.0.0。

集成

我们要在低版本的项目集成此插件该怎么做:

老版本插件符合要求,直接集成 v3.4.0 以下的插件版本。

需要集成最新的功能,集成最新版本,自己手动配置。

第一种就不说了,我们直接进行第二种方式集成:

以我们最开始 Cordova-Android 6.4.0 的空项目为例,并使用官方 sample 作为测试依据

通过 Cordova Plugins 安装

cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey

23b117ca27a6

导入最新插件后我们再看项目结构,多出了两个目录,这就是新插件

23b117ca27a6

这时如果我们直接跑 sample,无法获取到 registrationID,而且原生 log 中抛出 ClassNotFoundException 错误,无法成功集成推送

23b117ca27a6

接下来我们还原插件文件对应低版本路径:

将 android/app/src/main/java 下的 cn.jiguang.* 拷贝到 android/src/ 目录下

将 android/jniLibs 下的所有文件拷贝到 android/libs/ 目录下

删除 android/app 和 android/jniLibs 目录

23b117ca27a6

再次编译运行成功获取 registrationID,并且能够成功接收推送,完美。

23b117ca27a6

总结

Cordova Android 7.0.0 结构调整主要体现在资源文件和 src 目录,目录结构开始贴近原生。

Cordova Android 7.0.0 以下版本集成最新插件只需将插件对应文件还原到低版本对应路径便可。

同理,如果项目是 7.0.0 往上的,而插件还没针对 7.0.0 进行升级,又需要在项目中使用插件怎么办?是否可以根据这篇文章反其道行之呢?留给读者去验证

补充

为何文中 JniLibs 文件要拷贝到 libs 下呢?

因为 Cordova Android 7.0.0 以下的版本在根目录 build.gradle 中配置了JniLibs 引用路径为 libs。

23b117ca27a6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值