如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例
前提
Cordova Android 7.0.0开始改变了项目安卓平台的架构。新建一个空项目分别增加Android 6.4.0 和 Android 7.0.0平台:
cordova platform add android@6.4.0cordova platform add android@7.0.0
生成的安卓平台结构分别为:
image.png
可以看到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
image.png
导入最新插件后我们再看项目结构,多出了两个目录,这就是新插件
image.png
这时假如我们直接跑sample,无法获取到registrationID,而且原生log中抛出ClassNotFoundException错误,无法成功集成推送
image.png
接下来我们复原插件文件对应低版本路径:
- 将android/app/src/main/java下的cn.jiguang.*拷贝到android/src/目录下
- 将android/jniLibs下的所有文件拷贝到android/libs/目录下
- 删除android/app和android/jniLibs目录
image.png
再次编译运行成功获取registrationID,并且能够成功接收推送,完美。
image.png
此例适使用所有极光cordova插件,比方jmessage-phonegap-plugin,cordova-plugin-janalytics
总结
- 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。
image.png
以上,谢谢。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例