自定義cordova插件-入門

環(huán)境準備

安裝android studio請備份一下你的android sdk tools下的templates文件夾,因為安裝android studio有可能會被刪除.導致如下圖打包異常



參考

  • 如果遇到android開發(fā)問題請積極百度,android開發(fā)已經很成熟了,一定能解決問題

項目準備

  • 準備一個cordova項目,用于安裝插件.可以是任何cordova項目不一定是ionic項目
  • 為了方便調試和運行快速,建議創(chuàng)建一個新項目.可以參考這里創(chuàng)建一個ionic新項目
  • 保證此項目可以正常打包,用于說明開發(fā)環(huán)境沒有問題

為了演示我剛剛新建了一個ionic項目ionic start ionic_test tabs --cordova

全局安裝plugman

  • plugman用于創(chuàng)建插件,安裝過程如下圖
cnpm i -g plugman
  • 可以通過plugman -h查看plugman提供的命令及參數(shù).

創(chuàng)建插件

  • 如下圖我在D盤根目錄創(chuàng)建了一個插件并添加了android平臺,也生成了package.json文件. 插件名:nativeLocation,插件id:com.kit.cordova.nativeLocation,版本:0.0.1

package.json是插件描述文件,如果插件只是自己用可以不用生成

plugman create --name nativeLocation --plugin_id com.kit.cordova.nativeLocation --plugin_version 0.0.1
cd nativeLocation\
plugman createpackagejson ./
plugman platform add --platform_name android
plugman platform add --platform_name ios 

安裝插件

  • 安裝插件到準備好的cordova項目中
cordova plugin add D:\nativeLocation
  • 插件結構如下圖


調用插件

  • 查看nativeLocation.js可以看到這個js文件exports了一個coolMethod函數(shù),這個函數(shù)有3個參數(shù).第一個參數(shù)類型不限作為數(shù)組的第一項傳入到插件中,第二個和第三個分別是成功和失敗回調函數(shù)

  • 查看plugin.xml可以看到這個nativeLocation.js對應的cordova調用方法是放到cordova.plugins.nativeLocation命名空間下

  • 調用代碼如下,注意coolMethod()是三個參數(shù)

declare var cordova;
 click(){
    cordova.plugins.nativeLocation.coolMethod(777, res => {
      // 你也可以把res輸出在頁面上  this.data = res;    {{data|json}}
      console.log(res);
    }, err => {
      console.log(err);
    })
  }
 cordova platform rm android
 cordova platform add android
 cordova run android

ionic項目修改了src目錄下的代碼需要先ionic serve或者ionic build或者使用ionic cordova run android運行項目.為了使修改后代碼放到www目錄下

  • 如下圖點擊按鈕,插件成功輸出我們的傳入的參數(shù).說明插件已經成功安裝


  • 以上就是創(chuàng)建并安裝一個最簡單的cordova插件的過程

使用Android Studio打開項目

  • 如下圖用Android Studio選擇你的app項目>platforms>android目錄

  • 如果你是第一次用Android Studio打開項目,可能會像下圖1界面卡很長時間(超過一分鐘),它正在下載gradle,gradle比較大(67M)下載比較慢

  • 你可以在進程殺掉Android Studio,然后手動去這里下載,下載哪個版本?看圖2.打開你的dists目錄,一一點擊每個gradle-*目錄,看哪個目錄gradle*.jar為空(圖3)就下載哪個版本,并把下載的jar放進去(圖4)

  • 然后在用Android Studio打開項目.注意項目是你的app項目>platforms>android目錄

圖1
圖2
圖3
圖4
  • Android Studio打開界面.有時候需要刷新一下如下圖


  • 用usb連接手機和電腦.點擊調試按鈕選擇連接的手機,在真機上運行

  • 運行到真機上后,點擊app頁面上的按鈕可以在Studio控制臺上看到日志信息.這里的控制臺就是輸出android app運行的日志.app插件bug,閃退等常見問題均可以在這里看到錯誤日志


插件優(yōu)化

  • 找到插件文件.發(fā)現(xiàn)包名太長,Java類名以小寫開頭.我們先直接在Studio上修改.(以后的plugman可能會對創(chuàng)建的插件有優(yōu)化 )

  • 修改后類名大寫,刪除一層包名.


  • 如下圖點擊gradle clear


  • 選擇android,繼續(xù)點擊調試按鈕在真機上運行確保修改沒問題


修改插件

  • 回到webstorm,如下圖刪除插件目錄中的nativeLocation.java文件.把Studio上的NativeLocation.java復制進來

  • 修改plugin.xml.如下圖1和圖2分別為修改前后.修改內容看圖2標注

    圖1

    圖2

  • ionic新建的項目id默認是io.ionic.starter.如下圖修改成自己的id保證唯一,我這里修改為com.kit.ionicTest

  • 修改完成在真機運行調試.用cordova命令打包運行,不是用Studio運行

 cordova platform rm android
 cordova platform add android
 cordova run android
  • 注意執(zhí)行cordova platform rm android會刪除你的app項目>platforms>android目錄.所以最好備份一下.如下圖

本次簡單修改可以不備份.以后在Studio上開發(fā)了許多代碼就需要備份

總結

  • 插件開發(fā)步驟

1用plugman創(chuàng)建插件原型并把插件安裝到cordova項目中
2.用cordova生成android項目.cordova platform add android
3用Android Studio編輯android項目.(可以實現(xiàn)任何功能,需要懂Java開發(fā)語言 )
4把在Android Studio上開發(fā)的功能的代碼等資源文件拷貝到插件中
5在插件的plugin.xml文件中"描述“android”資源文件放在android項目中的什么位置

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瘫里,隨后出現(xiàn)的幾起案子因悲,更是在濱河造成了極大的恐慌常侣,老刑警劉巖信柿,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件但两,死亡現(xiàn)場離奇詭異扎即,居然都是意外死亡吞获,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門谚鄙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來各拷,“玉大人,你說我怎么就攤上這事闷营】臼颍” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵傻盟,是天一觀的道長速蕊。 經常有香客問我,道長娘赴,這世上最難降的妖魔是什么规哲? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮诽表,結果婚禮上媳叨,老公的妹妹穿的比我還像新娘。我一直安慰自己关顷,他們只是感情好糊秆,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著议双,像睡著了一般痘番。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天汞舱,我揣著相機與錄音伍纫,去河邊找鬼。 笑死昂芜,一個胖子當著我的面吹牛莹规,可吹牛的內容都是我干的。 我是一名探鬼主播泌神,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼良漱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了欢际?” 一聲冷哼從身側響起母市,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎损趋,沒想到半個月后患久,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡浑槽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年蒋失,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桐玻。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡高镐,死狀恐怖,靈堂內的尸體忽然破棺而出畸冲,到底是詐尸還是另有隱情嫉髓,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布邑闲,位于F島的核電站算行,受9級特大地震影響,放射性物質發(fā)生泄漏苫耸。R本人自食惡果不足惜州邢,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望褪子。 院中可真熱鬧量淌,春花似錦、人聲如沸嫌褪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笼痛。三九已至裙秋,卻和暖如春琅拌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摘刑。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工进宝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枷恕。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓党晋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親徐块。 傳聞我的和親對象是個殘疾皇子未玻,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,789評論 25 707
  • 一、Cordova的基礎點 在混合式應用中蛹锰,我們通過現(xiàn)有的Cordova插件深胳,可以輕松的在 H5 上調用手機nat...
    IT晴天閱讀 6,604評論 3 11
  • 最近我迷上了一個電視節(jié)目绰疤,名字叫《魅力中國城》铜犬,在中央二套播出,每周一期轻庆,每一期由兩個城市參加癣猾。 現(xiàn)在進行的還是初...
    夏日夜閱讀 247評論 0 0
  • 文/霖山 財務部新來的馬經理,是一位個子不高余爆,圓臉纷宇,皮膚白,身材豐滿的中年婦女蛾方。精干的短發(fā)別在耳后像捶,顯得臉更大,兩...
    霖山閱讀 2,398評論 109 108
  • 今天是情人節(jié)桩砰,我爸媽卻打了一架拓春,你沒看錯,是的亚隅,打架硼莽! 我爸左臉頰有兩道指痕,我媽人中有一道斜血痕煮纵。今...
    hucarol閱讀 329評論 6 5