iOS Cordova插件開發(fā)(一)之plugin.xml文件編寫

iOS Cordova插件開發(fā)之plugin.xml文件編寫

plugin.xml文件的編寫對于新手來說,是我覺得最難搞的赃阀。

閱讀目錄

一绍赛、plugin.xml文件的作用
二、必要元素的解釋
三溃槐、依賴文件的引入格式

一、plugin.xml文件的作用

Cordova插件中覺文件定義了你的插件所需的結(jié)構(gòu)和設(shè)置科吭。

  • 例如:

    1)最終形成文件的結(jié)構(gòu)昏滴。說白了,就是文件最后分布層次

    2)插件名对人、插件版本谣殊、作者信息、適用平臺(iOS或andirod)

    3)js或ts文件的指向和綁定牺弄,js或ts文件主要是給前端人員調(diào)用
    姻几、、势告、蛇捌、、咱台、

二络拌、必要元素的解釋

栗子:(下面我會一一解釋它們的作用)

<?xml version="1.0" encoding="UTF-8" ?>
<plugin xmlns="http://phonegap.com/ns/plugins/1.0"
    id="com.will.cordovaPlugin"
    version="1.0.0">
    <engines>
       <engine name="cordova" version=">=3.3.0" />
    </engines>

    <name>XFPlugin</name>
    <description>測試插件</description>
    <author>Will</author>
    <keywords>voice,video,record</keywords>
    
    <js-module src="www/willPlugin.js" name="WillModel">
        <clobbers target="testModel" />
    </js-module>

    <platform name="ios">
      <config-file target="config.xml" parent="/*">
        <feature name="XFPlugin">
            <param name="ios-package" value="XFPlugin" />
        </feature>
      </config-file>
    </platform>
</plugin>
plugin

這個plugin元素是插件清單的頂級元素。

  • xmlns:Required該插件的命名空間
  • id:A npm-style 標(biāo)識符插件
  • version:該插件的版本號
engines

在<engines>元素的子元素指定此插件支持基于Cordova的Apache框架版本回溺。該CLI中止與任何插件春贸,其目標(biāo)項(xiàng)目不符合engines的約束非零代碼。如果沒有指定標(biāo)簽遗遵,則CLI嘗試安裝到指定的cordova項(xiàng)目目錄萍恕。

  • name:引擎的名稱。默認(rèn)的引擎名可以在網(wǎng)上查到瓮恭,當(dāng)然也可以自定義
  • version:框架必須擁有安裝的版本雄坪,也可以使用'>','>='等屯蹦,以避免重復(fù)指定模糊匹配
name

name元素用于指定插件的名稱

description

描述元素用于指定插件的描述维哈,此元素不處理本地化。

author

元素包含了插件作者的姓名登澜。

keywords

元素的內(nèi)容包含逗號分隔的關(guān)鍵字來描述該插件阔挠。

js-module

正常來說插件都會包括一個或多個js/ts文件。每個js-module標(biāo)簽對應(yīng)一個js/ts文件脑蠕,會自動生成到你指定的目錄下购撼。吸入js-module在platform聲明特定平臺的js/ts文件綁定的模塊元素跪削,同時前端可直接通過js/ts輸出的接口或?qū)ο笾苯诱{(diào)用插件功能。

  • src:寫入文件路徑及文件名
  • name:定義的對象名迂求,可以參考我上傳的測試插件
  • clobbers:JS-module元素內(nèi)標(biāo)記碾盐。用于指定module.exports被插入在window對象的命名空間。
  • target:module.exports被插入的命名空間揩局。你可以通過window.chrome.testModel來調(diào)用js/ts文件里的方法毫玖,從而調(diào)用插件
js-platform

標(biāo)識具有相關(guān)聯(lián)的本機(jī)代碼或需要修改其配置文件的平臺。工具使用這個規(guī)范可以識別支持的平臺和代碼安裝到cordova項(xiàng)目凌盯。無platform標(biāo)記插件被假定為JavaScript的唯一的付枫,因此在任何和所有平臺安裝。

  • name:允許值:ios, android, blackberry10, amazon-fireos, wp8, windows標(biāo)識為支撐驰怎,其子元素與平臺相關(guān)聯(lián)的平臺阐滩。

三、依賴文件的引入格式

這里是重頭戲县忌。我一度在這里差點(diǎn)就放棄了掂榔,實(shí)在是在網(wǎng)上找的教程都失敗了,而且眾說紛紜芹枷,幾乎每個人寫的都不一樣衅疙,最后沒辦法,一個個給試了出來鸳慈。

太晚了,先寫直接貼代碼喧伞,下次有時間詳細(xì)說走芋。下面是我寫的一個測試插件,因?yàn)榈谷肓藘蓚€第三方庫潘鲫,所以看起來很多翁逞。

<header-file src="src/ios/Definition.h" />
    <header-file src="src/ios/IATConfig.h" />
    <source-file src="src/ios/IATConfig.m" />

    <header-file src="src/ios/ISRDataHelper.h" />
    <source-file src="src/ios/ISRDataHelper.m" />

    <header-file src="src/ios/PlayerViewController.h" />
    <source-file src="src/ios/PlayerViewController.m" />

    <header-file src="src/ios/TTSConfig.h" />
    <source-file src="src/ios/TTSConfig.m" />

    <header-file src="src/ios/XFPlugin.h" />
    <source-file src="src/ios/XFPlugin.m" />

    <header-file src="src/ios/XFTool.h" />
    <source-file src="src/ios/XFTool.m" />

    <!--訊飛依賴-->
    <framework src="src/ios/iflyMSC.framework" custom="true" />

    <!--優(yōu)酷云依賴-->
    <resource-file src="src/ios/YouTuEngineMediaPlayer/cloud.bundle" />
    <resource-file src="src/ios/YouTuEngineMediaPlayer/libYouTuMediaPlayerEngineYouku.a"/>
    <resource-file src="src/ios/YouTuEngineMediaPlayer/yw_1222_0335_mwua.jpg" />

    <framework src="src/ios/library/BCUserTrack/UTMini.framework" custom="true" />
    <framework src="src/ios/library/SecurityGuardSDK/SecurityGuardSDK.framework" custom="true" />
    <framework src="src/ios/library/SGAVMP/SGAVMP.framework" custom="true" />
    <framework src="src/ios/library/SGMain/SGMain.framework" custom="true" />
    <framework src="src/ios/library/SGSecurityBody/SGSecurityBody.framework" custom="true" />
    <source-file src="src/ios/library/UTDID/UTDID.framework" framework="true" />
    <resource-file src="src/ios/library/Reachability/LICENCE.txt" />
    <resource-file src="src/ios/library/Reachability/README.md" />
    <header-file src="src/ios/library/Reachability/Reachability.h" />
    <source-file src="src/ios/library/Reachability/Reachability.m" />

    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YoukuMediaPlayer.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTDownloadDefine.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTDownloadManager.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTDownloadTaskModel.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTEngineOpenViewManager.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTLocalMedia.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTSequence.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayer.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerBackgroundModeManager.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerDefines.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerEvents.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerException.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerHistory.h" />
    <header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerItem.h" />

    <!--系統(tǒng)依賴-->
    <framework src="libz.tbd" />
    <framework src="libresolv.9.tbd" />
    <framework src="libiconv.2.tbd" />
    <framework src="libxml2.2.tbd" />
    <framework src="libbz2.1.0.tbd" />
    <framework src="libc++.1..tbd" />
    <framework src="libsqlite3.tbd" />
    <framework src="libicucore.tbd" />
    <framework src="libc++.tbd" />
    <framework src="libz.tbd" />
    <framework src="VideoToolbox.framework" />
    <framework src="CoreMedia.framework" />
    <framework src="OpenGLES.framework" />
    <framework src="CoreText.framework" />
    <framework src="AdSupport.framework" />
    <framework src="MediaPlayer.framework" />
    <framework src="EventKit.framework" />
    <framework src="MessageUI.framework" />
    <framework src="Social.framework" />
    <framework src="MobileCoreServices.framework" />
    <framework src="CoreMotion.framework" />
    <framework src="ModellO.framework" />
    <framework src="CoreGraphics.framework" />
    <framework src="QuartzCore.framework" />
    <framework src="AddressBook.framework" />
    <framework src="Contacts.framework" />
    <framework src="CoreLocation.framework" />
    <framework src="UIKit.framework" />
    <framework src="AudioToolbox.framework" />
    <framework src="CoreTelephony.framework" />
    <framework src="Foundation.framework" />
    <framework src="SystemConfiguration.framework" />
    <framework src="AVFoundation.framework" />

今天先寫到這里了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溉仑,一起剝皮案震驚了整個濱河市挖函,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浊竟,老刑警劉巖怨喘,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異振定,居然都是意外死亡必怜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門后频,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梳庆,“玉大人暖途,你說我怎么就攤上這事「嘀矗” “怎么了驻售?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長更米。 經(jīng)常有香客問我芋浮,道長,這世上最難降的妖魔是什么壳快? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任纸巷,我火速辦了婚禮,結(jié)果婚禮上眶痰,老公的妹妹穿的比我還像新娘瘤旨。我一直安慰自己,他們只是感情好竖伯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布存哲。 她就那樣靜靜地躺著,像睡著了一般七婴。 火紅的嫁衣襯著肌膚如雪祟偷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天打厘,我揣著相機(jī)與錄音修肠,去河邊找鬼。 笑死户盯,一個胖子當(dāng)著我的面吹牛嵌施,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播莽鸭,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼吗伤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了硫眨?” 一聲冷哼從身側(cè)響起足淆,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎礁阁,沒想到半個月后巧号,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氮兵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年裂逐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泣栈。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡卜高,死狀恐怖弥姻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掺涛,我是刑警寧澤庭敦,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站薪缆,受9級特大地震影響秧廉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拣帽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一疼电、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧减拭,春花似錦蔽豺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至可霎,卻和暖如春魄鸦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背癣朗。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工拾因, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人斯棒。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓盾致,卻偏偏與公主長得像,于是被迫代替她去往敵國和親荣暮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容