如何在Cordova Android 7.0.0 如下版本集成最新插件 極光插件爲例

前提

Cordova Android 7.0.0開始改變了項目安卓平臺的架構。新建一個空項目分別添加Android 6.4.0 和 Android 7.0.0平臺:java

cordova platform add android@6.4.0
cordova platform add android@7.0.0

生成的安卓平臺結構分別爲:android

能夠看到Cordova從7.0.0項目結構開始和原生Android項目保持一致:git

  • 將AndroidManifest.xml,assets,res,libs資源目錄整合到src目錄下
  • 將src放入一個app模塊,app模塊由單獨的gradle文件配置

致使的問題

由於項目結構的改變,不少插件也開始修改集成方式以支持7.0.0的使用,並在此基礎上進行插件更新操做。
而不少針對低版本開發的項目好比Cordova-Android 6.4.0,若是沒法直接升級項目版本,只能選擇集成老版本的插件,得不到最新支持。github

解決辦法

咱們已經知道了7.0.0開始結構的主要變化,而低版本和高版本的插件集成無非就是拷貝文件的路徑不一樣罷了,核心代碼使用都是同一套。
因此低版本項目想要集成只支持7.0.0的新版插件,只要導入插件後,將插件對應文件還原到低版本對應路徑即可。架構

舉例

示例插件app

這裏以jpush-phonegap-plugin爲例,這是極光推送官方支持的PhoneGap/Cordova 插件,插件從 v3.4.0 開始支持 cordova-android 7.0.0。測試

集成gradle

咱們要在低版本的項目集成此插件該怎麼作:ui

  1. 老版本插件符合要求,直接集成v3.4.0如下的插件版本。
  2. 須要集成最新的功能,集成最新版本,本身手動配置。

第一種就不說了,咱們直接進行第二種方式集成:spa

  • 以咱們最開始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 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。

相關文章
相關標籤/搜索