前提

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

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

可以看到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。

集成

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

  1. 老版本插件符合要求,直接集成v3.4.0以下的插件版本。
  2. 需要集成最新的功能,集成最新版本,自己手动配置。

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

  • 以我们最开始Cordova-Android 6.4.0的空项目为例,并使用官方sample作为测试依据
  • 通过 Cordova Plugins 安装
 cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey

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

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

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

    • 将android/app/src/main/java下的cn.jiguang.*拷贝到android/src/目录下
    • 将android/jniLibs下的所有文件拷贝到android/libs/目录下
    • 删除android/app和android/jniLibs目录

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

  • 此例适用所有极光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。

如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例相关推荐

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

    2019独角兽企业重金招聘Python工程师标准>>> 前提 Cordova Android 7.0.0开始改变了项目安卓平台的架构.新建一个空项目分别添加Android 6.4.0 ...

  2. 迷你世界 Java_迷你世界0.42.1版本

    快猴小编为大家带来迷你世界0.42.1版本的最新下载,在这里可以在这个新的沙盒世界中和爱丽丝一起冒险,超多新的地图等你来解锁,享受这个3D世界带给你最独特的乐趣. 迷你世界0.42.1版本游戏介绍 精 ...

  3. Android Studio 3.0 下 Cordova 打包时 Gradle 兼容性问题解决

    为什么80%的码农都做不了架构师?>>>    升级到 Android Studio 3.0, Gradle 升级为 4.3.1 版本,使用 cordova build androi ...

  4. android xwalkview 截屏,如何在Cordova中为你的应用创建屏幕截图

    本文概述 尽管要求在应用程序中创建屏幕截图并不常见, 但是创建详细的错误报告(由用户甚至自动生成)可能会很有用.在本文中, 你将学习如何在cordova应用程序中轻松创建屏幕截图. 要求 为了在你的应 ...

  5. Android 6.0-13.0系统兼容

    一.Android 6.0系统  官方文档:Android 6.0 1.新增运行时权限. 权限分为普通权限和危险权限,危险权限除了在清单文件即AndroidManifest.xml文件中注册,还需要在 ...

  6. Android SDK 1.0 Chn.

    from www.androidin.com Android SDK 中文1.0 版本 目录 来源:... 4 SDK 内容... 5 什么是 Android?. 5 特性... 5 Android ...

  7. Android(Lollipop/5.0) Material Design(七) 自定义动画

    Material Design系列 Android(Lollipop/5.0) Material Design(一) 简介 Android(Lollipop/5.0) Material Design( ...

  8. ERROR: Failed to resolve: com.android.support:appcompat-v7:29.0.0

    错误内容如下 ERROR: Failed to resolve: com.android.support:appcompat-v7:29.0.0 Show in Project Structure d ...

  9. No cached version of com.android.tools.build:gradle:2.0.0 available for offline mode.

    异常场景 从AS2.0升级到2.1,重新编译工程后,抛出了如下异常 Error:A problem occurred configuring root project 'AndroidStudioPr ...

最新文章

  1. java开发webservice_Java WebService开发详解
  2. linux中cp:overwrite提示的问题
  3. Linux C 实现文件传输
  4. candy算子python_Python-计算机视觉中的Canny边缘检测方法
  5. jQuery常用的方法
  6. 在html中引入css内部样式表使用,CSS样式学习笔记(三)html文件引入CSS的方法(2)...
  7. android 自定义控件(FloatLabelLayout)
  8. linux c之用fwrite和fread实现文件的复制
  9. android tv 帮助,android TV端各类焦点问题
  10. flex接收java返回集合,前台的的flex对Java返回list类型的处理
  11. CodeForces - 1612A Distance
  12. 计算机录屏幕和声音的软件是什么,电脑录屏软件带声音哪个好用 电脑录屏软件带声音软件...
  13. 零极点分布对系统频率响应的影响
  14. java web需要学多久_java框架都有哪些 要学多久
  15. 计科实训 餐馆点菜系统
  16. Mac上关闭Microsoft AutoUpdate的升级弹窗
  17. win10注册mysql到windows服务报错:Install/Remove of the Service Denied
  18. JAVA Stream的collect用法与原理(详解)
  19. centos8部署一个单点ceph
  20. pmp--责任分配矩阵,资源分解结构,工作分解结构

热门文章

  1. 用python画玫瑰花简单-利用python的turtle库画一朵简单的玫瑰花,并添加文字
  2. 2021人工智能年度评选结果揭晓!AI落地最佳参考在此奉上
  3. 皮克斯技术指导辞职读博:研究AI设计怪物,从《游戏王》卡牌开始
  4. 为什么有些画面让你终生难忘?GAN来告诉你原因
  5. NeurIPS 2019放榜:华人作者贡献42%,谷歌170篇屠榜;国内清华第一,腾讯领衔产业界...
  6. DeepMind开源强化学习环境,灵活可配置,计算资源有限的小型实验室也能用
  7. 负载均衡器之 Haproxy
  8. Redis+keepalived 主从搭建
  9. Mac OS Terminal 几个快捷键
  10. usaco dec 2012 first!