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" />
今天先寫到這里了。