Plugin.xml
plugin.xml文件定義了你的插件所需的結(jié)構(gòu)和設(shè)置救恨。它有幾個(gè)元素來(lái)提供有關(guān)你的插件的詳細(xì)信息纵朋。
plugin
這個(gè)plugin元素是插件清單的頂級(jí)元素雷客。
屬性(類型) | 描述 |
---|---|
xmlns(string) | Required該插件的命名空間裙秋,http://apache.org/cordova/ns/plugins/1.0容燕。如果該文件包含來(lái)自其他名稱空間梁呈,如要加入到Android中的情況下,AndroidManifest.xml文件標(biāo)記的XML缰趋,這些命名空間也應(yīng)包括在該元素捧杉。 |
id(string) | Required A npm-style 標(biāo)識(shí)符插件陕见。 |
version(string) | Required該插件的版本號(hào). Semver syntax is supported. |
例子:
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="my-plugin-id"
version="1.0.2">
engines and engine
在<engines>元素的子元素指定此插件支持基于科爾多瓦的Apache框架版本。該CLI中止與任何插件味抖,其目標(biāo)項(xiàng)目不符合engines的約束非零代碼评甜。如果沒(méi)有指定標(biāo)簽,則CLI嘗試安裝到指定的cordova項(xiàng)目目錄仔涩。
屬性(類型) | 描述 |
---|---|
name(string) | Required 引擎的名稱忍坷。以下是所支持的默認(rèn)引擎:cordova,cordova-plugman,cordova-android,cordova-ios,cordova,blackberry10,cordova-wp8,cordova-windows,cordova-osx,windows-os,android-sdk (returns the highest Android api level installed),windows-sdk (returns the native windows SDK version),apple-xcode (returns the xcode version),apple-ios (returns the highest iOS version installed),apple-osx (returns the OSX version),blackberry-ndk (returns the native blackberry SDK version)您也可以除了默認(rèn)的指定自定義框架。 |
version(string) | Required 你的框架必須擁有安裝的版本熔脂。 Semver語(yǔ)法支持 |
scriptSrc(string) | 僅適用于自定義的框架 Required該腳本文件佩研,告訴plugman自定義架構(gòu)的版本。理想情況下霞揉,這個(gè)文件應(yīng)該是你的插件目錄的頂級(jí)目錄中旬薯。 |
platform(string) | 僅適用于自定義的框架 需要該平臺(tái)的框架支持。您可以使用通配符*說(shuō)支持所有的平臺(tái)适秩,像'android的一個(gè)管道字符指定多個(gè) |
Examples:
<engines>
<engine name="cordova-android" version="=1.8.0" />
</engines>
engines元件也可以使用'>'绊序,'>='等,以避免重復(fù)指定模糊匹配秽荞,并且當(dāng)?shù)讓拥钠脚_(tái)被更新骤公,以減少維護(hù)。
<engines>
<engine name="cordova-android" version=">=1.8.0" />
</engines>
在<engines>標(biāo)簽也對(duì)所有的cordova存在的主要平臺(tái)默認(rèn)的支持扬跋。指定科爾多瓦引擎標(biāo)簽意味著阶捆,在任何平臺(tái)上cordova的所有版本都必須滿足的引擎版本屬性。你也可以列出特定平臺(tái)及其版本钦听,以覆蓋包羅萬(wàn)象的cordova引擎:
<engines>
<engine name="cordova" version=">=1.7.0" />
<engine name="cordova-android" version=">=1.8.0" />
<engine name="cordova-ios" version=">=1.7.1" />
</engines>
自定義框架例如:
<engines>
<engine name="my_custom_framework" version="1.0.0" platform="android" scriptSrc="path_to_my_custom_framework_version"/>
<engine name="another_framework" version=">0.2.0" platform="ios|android" scriptSrc="path_to_another_framework_version"/>
<engine name="even_more_framework" version=">=2.2.0" platform="*" scriptSrc="path_to_even_more_framework_version"/>
</engines>
name
name元素用于指定插件的名稱洒试。
Example:
<name>Foo</name>
description
描述元素用于指定插件的描述。此元素不處理本地化朴上。
Example:
<description>Foo plugin description</description>
author
author元素包含了插件作者的姓名儡司。
Example:
<author>Foo plugin author</author>
keywords
keywords元素的內(nèi)容包含逗號(hào)分隔的關(guān)鍵字來(lái)描述該插件。
<keywords>foo,bar</keywords>
license
此元素用于指定插件的許可證余指。PS:這里我也沒(méi)有明白
Example:
<license>Apache 2.0 License</license>
asset
這個(gè)元素用來(lái)列出文件或目錄被復(fù)制到cordova的應(yīng)用程序的www目錄捕犬。嵌套內(nèi)的任何<asset>元素<platform>元素指定特定于平臺(tái)的網(wǎng)絡(luò)資源。
屬性(類型) | 描述 |
---|---|
src(string) | Required 凡文件或目錄位于插件包酵镜,相對(duì)于plugin.xml的文件碉碉。如果文件沒(méi)有在指定位置的src存在,CLI停止并反轉(zhuǎn)安裝過(guò)程淮韭,發(fā)出關(guān)于沖突的通知垢粮,并與非零代碼退出。 |
target(string) | Required 在該文件或目錄應(yīng)位于cordova應(yīng)用程序靠粪,相對(duì)于www目錄蜡吧。如果文件已經(jīng)在目標(biāo)位置存在毫蚓,CLI的停止并反轉(zhuǎn)安裝過(guò)程中,發(fā)出關(guān)于沖突通知昔善,并用一非零代碼退出元潘。 |
Examples:
<!-- a single file, to be copied in the root directory -->
<asset src="www/foo.js" target="foo.js" />
<!-- a directory, also to be copied in the root directory -->
<asset src="www/foo" target="foo" />
asset可以設(shè)置為有針對(duì)性地子目錄為好。這將創(chuàng)建www目錄內(nèi)的js/experimental君仆,除非已經(jīng)存在翩概,并復(fù)制新foo.js文件,重命名為foo.js.
<asset src="www/new-foo.js" target="js/experimental/foo.js" />
js-module
大部分插件包括一個(gè)或多個(gè)JavaScript文件返咱。每個(gè)JS-module標(biāo)簽對(duì)應(yīng)一個(gè)JavaScript文件,并防止插件的用戶不必添加script標(biāo)記為每個(gè)文件钥庇。不要用保鮮cordova.define的文件,因?yàn)樗鼤?huì)自動(dòng)添加咖摹。該模塊被包裹在一個(gè)閉包评姨,用模塊,出口和范圍要求萤晴,因?yàn)槭钦5腁MD模塊参咙。嵌套JS-module在platform聲明特定平臺(tái)的JavaScript綁定的模塊元素。
屬性(類型) | 描述 |
---|---|
src(string) | 參考相對(duì)plugin.xml文件插件目錄中的文件硫眯。如果SRC不能解決現(xiàn)有文件中,CLI停止并反轉(zhuǎn)安裝择同,發(fā)出問(wèn)題的通知两入,并與非零代碼退出。 |
name(string) | 提供模塊名稱的最后一部分敲才。它一般可以是你喜歡的裹纳,如果你想使用cordova.require導(dǎo)入你的插件的其他部分在JavaScript代碼只在乎。對(duì)于JS-module模塊名稱是你的插件的ID后跟名稱的值紧武。 |
Example:
當(dāng)安裝與下面的例子中的一個(gè)插件剃氧,socket.js被復(fù)制到www/plugins/my-plugin-id/socket.js,并添加為一個(gè)條目到www/cordova_plugins.js阻星。在加載時(shí)朋鞍,在cordova.js代碼使用XHR來(lái)讀取每個(gè)文件并注入 script 標(biāo)記為HTML。
<js-module src="socket.js" name="Socket">
</js-module>
也正因?yàn)檫@個(gè)例子中妥箕,chrome-socket的插件ID滥酥,模塊名稱將是chrome-socket.Socket.
clobbers
JS-module元素內(nèi)標(biāo)記。用于指定module.exports被插入在window對(duì)象的命名空間畦幢。你可以有很多的clobbers只要你喜歡坎吻。創(chuàng)建window上的任何對(duì)象不可用。
屬性(類型) | 描述 |
---|---|
target(string) | 其中宇葱,module.exports被插入的命名空間瘦真。 |
Example:
<js-module src="socket.js" name="Socket">
<clobbers target="chrome.socket" />
</js-module>
這里module.exports被插入到window對(duì)象window.chrome.socket刊头。
merges
JS-module元素內(nèi)標(biāo)記。用來(lái)指定在哪里module.exports獲取與任何現(xiàn)有的價(jià)值合并window對(duì)象的命名空間诸尽。如果已經(jīng)存在原杂,模塊的版本取代原來(lái)的。你可以有很多的merges只要你喜歡弦讽。創(chuàng)建window上的任何對(duì)象不可用污尉。
屬性(類型) | 描述 |
---|---|
target(string) | 這module.exports命名空間被合并。 |
Example:
<js-module src="socket.js" name="Socket">
<merges target="chrome.socket" />
</js-module>
這里module.exports得到與window.chrome.socket的任何現(xiàn)有值合并往产。
runs
runs 是JS-module元素內(nèi)標(biāo)記被碗。這意味著你的代碼應(yīng)與cordova.require指定,但窗口對(duì)象上沒(méi)有安裝仿村。初始化模塊時(shí)锐朴,附加的事件處理程序或其他方式,這非常有用蔼囊。您最多只能有一個(gè)runs標(biāo)記焚志。請(qǐng)注意,包括runs與<clobbers/>或<merges/>是多余的畏鼓,因?yàn)樗鼈円瞔ordova.require您的模塊酱酬。
Example:
<js-module src="socket.js" name="Socket">
<runs/>
</js-module>
dependency
在dependency標(biāo)簽允許你指定在其當(dāng)前插件依賴其他插件。該插件被其獨(dú)特的NPM的ID或URL GitHub的引用云矫。
屬性(類型) | 描述 |
---|---|
Attributes(type) Descriptionid(string) | 提供插件的ID膳沽。 |
url(string) | 一種插件URL。這應(yīng)該引用一個(gè)Git倉(cāng)庫(kù)让禀,其中CLI嘗試克隆挑社。 |
commit(string) | 這是git的結(jié)帳理解的任何git的參考:一個(gè)分支或標(biāo)記的名稱,(e.g., master, 0.3.1), or a commit hash (e.g., 975ddb228af811dd8bb37ed1dfd092a3d05295f9) |
subdir(string) | 指定目標(biāo)插件存在依賴的Git倉(cāng)庫(kù)的子目錄。這是有幫助的巡揍,因?yàn)樗试S包含幾個(gè)相關(guān)的插件庫(kù)痛阻,每個(gè)單獨(dú)指定。-----如果設(shè)置了dependency>標(biāo)簽的網(wǎng)址“”腮敌。并提供一個(gè)子目錄阱当,依賴插件是從同一個(gè)本地或遠(yuǎn)程的Git倉(cāng)庫(kù)為指定的dependency標(biāo)記父插件安裝。-------請(qǐng)注意糜工,子目錄始終指定相對(duì)于git倉(cāng)庫(kù)斗这,不是父插件的根目錄的路徑。這是真實(shí)的啤斗,即使你安裝了一個(gè)直接本地路徑后援CLI插件找到Git倉(cāng)庫(kù)的根目錄表箭,然后從那里找到的其他插件。 |
version(string) | 該插件的版本依賴。 Semver句法支持免钻。 |
Examples:
<dependency id="cordova-plugin-someplugin" url="https://github.com/myuser/someplugin" commit="428931ada3891801" subdir="some/path/here" />
<dependency id="cordova-plugin-someplugin" version="1.0.1">
platform
標(biāo)識(shí)具有相關(guān)聯(lián)的本機(jī)代碼或需要修改其配置文件的平臺(tái)彼水。工具使用這個(gè)規(guī)范可以識(shí)別支持的平臺(tái)和代碼安裝到cordova項(xiàng)目。無(wú)platform標(biāo)記插件被假定為JavaScript的唯一的极舔,因此在任何和所有平臺(tái)安裝凤覆。
屬性(類型) | 描述 |
---|---|
name(string) | 允許值:ios, android, blackberry10, amazon-fireos, wp8, windows標(biāo)識(shí)為支撐,其子元素與平臺(tái)相關(guān)聯(lián)的平臺(tái)拆魏。 |
Example:
<platform name="android">
<!-- android-specific elements -->
</platform>
source-file
標(biāo)識(shí)應(yīng)安裝到一個(gè)項(xiàng)目中的可執(zhí)行文件的源代碼盯桦。
屬性(類型) | 描述 |
---|---|
src(string) | 需要相對(duì)于plugin.xml到文件的位置。如果無(wú)法找到在src文件渤刃,則CLI停止并反轉(zhuǎn)安裝拥峦,發(fā)出關(guān)于該問(wèn)題的通知,并用一個(gè)非零代碼退出卖子。 |
target-dir(string) | 目錄到其中的文件應(yīng)該被復(fù)制略号,相對(duì)于cordova項(xiàng)目的根。在實(shí)踐中洋闽,這是基于Java的平臺(tái)玄柠,其中,在所述com.alunny.foo包的文件必須位于Ccom/alunny/foo目錄最重要的诫舅。對(duì)于平臺(tái)所在的源目錄并不重要羽利,這個(gè)屬性應(yīng)該被忽略。 |
framework(boolean) | 默認(rèn)值:false iOS版 如果設(shè)置為true刊懈,還增加了指定的文件作為該項(xiàng)目的框架这弧。 |
compiler-flags(string) | iOS 如果設(shè)置,將指定的編譯器選項(xiàng)為特定的源文件 |
Examples:
<!-- android -->
<source-file src="src/android/Foo.java" target-dir="src/com/alunny/foo" />
<!-- ios -->
<source-file src="src/ios/CDVFoo.m" />
<source-file src="src/ios/someLib.a" framework="true" />
<source-file src="src/ios/someLib.a" compiler-flags="-fno-objc-arc" />
header-file
這就像source-file元素俏讹,但專門為平臺(tái),例如iOS和Android的源文件畜吊,頭文件和資源加以區(qū)分泽疆。這不是由Windows支持。
屬性(類型) | 描述 |
---|---|
src(string) | 需要 相對(duì)于plugin.xml到文件的位置玲献。殉疼。如果無(wú)法找到在src文件,則CLI停止并反轉(zhuǎn)安裝捌年,發(fā)出關(guān)于該問(wèn)題的通知瓢娜,并用一個(gè)非零代碼退出。 |
target(string) | 路徑在該文件將在你的目錄進(jìn)行復(fù)制礼预。 |
Example:
For iOS:
<header-file src="CDVFoo.h" />
resource-file
這就像source-file元素眠砾,但專門為平臺(tái),例如iOS和Android的源文件托酸,頭文件和資源加以區(qū)分褒颈。
屬性(類型) | 描述 |
---|---|
src(string) | 需要 相對(duì)于plugin.xml到文件的位置柒巫。。如果無(wú)法找到在src文件谷丸,則CLI停止并反轉(zhuǎn)安裝堡掏,發(fā)出關(guān)于該問(wèn)題的通知,并用一個(gè)非零代碼退出刨疼。 |
target(string) | 路徑在該文件將在你的目錄進(jìn)行復(fù)制泉唁。 |
Examples:
For Android:
<resource-file src="FooPluginStrings.xml" target="res/values/FooPluginStrings.xml" />
config-file
標(biāo)識(shí)一個(gè)基于XML的配置文件進(jìn)行修改,其中在該文件中所述修改應(yīng)該發(fā)生揩慕,什么應(yīng)該進(jìn)行修改亭畜。已經(jīng)過(guò)測(cè)試,修改與此元素的兩個(gè)文件類型是XML和的plist文件漩绵。在配置文件中的元素只允許新的兒童追加到XML文檔樹贱案。孩子們?cè)谀繕?biāo)文檔中插入XML文本。
屬性(類型) | 描述 |
---|---|
target(string) | 該文件被修改止吐,并且相對(duì)于cordova項(xiàng)目的根的路徑宝踪。如果指定的文件不存在,該工具會(huì)忽略配置變化碍扔,并繼續(xù)安裝瘩燥。目標(biāo)可以包括通配符(*)的元素。在這種情況下不同,CLI遞歸項(xiàng)目的目錄結(jié)構(gòu)進(jìn)行搜索厉膀,并使用第一個(gè)匹配。在iOS上二拐,配置的位置服鹅,相對(duì)于項(xiàng)目根目錄是不知道,因此指定config.xml中的目標(biāo)文件解析到cordova-ios-project/MyAppName/config.xml中百新。 |
parent(string) | 一個(gè)XPath選擇引用的元素的父要添加到配置文件企软。如果您使用的絕對(duì)選擇,你可以使用通配符(*)指定的根元素饭望,例如/ * /插件仗哨。如果選擇器不能解決到指定文檔的孩子,工具停止并反轉(zhuǎn)安裝過(guò)程中铅辞,會(huì)發(fā)出警告厌漂,并用非零代碼退出。對(duì)于文件的plist斟珊,父在什么父鍵指定的XML應(yīng)插入決定苇倡。 |
after(string) | 接受兄弟姐妹的優(yōu)先列表之后,添加X(jué)ML片段〕冢可用于指定在需要這樣的XML元素的嚴(yán)格的順序文件中的更改胜嗓。 |
Examples:
For XML:
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<activity android:name="com.foo.Foo" android:label="@string/app_name">
<intent-filter>
</intent-filter>
</activity>
</config-file>
For plist:
<config-file target="*-Info.plist" parent="CFBundleURLTypes">
<array>
<dict>
<key>PackageName</key>
<string>$PACKAGE_NAME</string>
</dict>
</array>
</config-file>
plugins-plist
指定鍵和值將追加到在在iOScordova項(xiàng)目的正確AppInfo.plist文件。這是過(guò)時(shí)钩乍,因?yàn)樗鼉H適用于科爾多瓦-IOS2.2.0及以下辞州。使用config-file標(biāo)記科爾多瓦的較新版本。
Example:
<plugins-plist key="Foo" string="CDVFoo" />
lib-file
鏈接源寥粹,資源和頭文件变过。
屬性(類型) | 描述 |
---|---|
src(string) | 需要 相對(duì)于文件的位置到plugin.xml。如果無(wú)法找到的src涝涤,CLI的停止并反轉(zhuǎn)安裝媚狰,發(fā)出關(guān)于該問(wèn)題的警告,并用一非零代碼退出阔拳。 |
arch(string) | 對(duì)于其中的.so文件已建成的建筑崭孤,無(wú)論是設(shè)備或模擬器。對(duì)于Windows糊肠,則表示該<SDKReference>構(gòu)建為指定的結(jié)構(gòu)時(shí)只應(yīng)被包括在內(nèi)辨宠。支持的值是86,64或ARM货裹。 |
Examples:
<lib-file src="src/BlackBerry10/native/device/libfoo.so" arch="device" />
<lib-file src="src/BlackBerry10/native/simulator/libfoo.so" arch="simulator" />
framework
標(biāo)識(shí)的框架(通常是系統(tǒng)/平臺(tái)的一部分)該插件依賴嗤形。
屬性(類型) | 描述 |
---|---|
src(string) | 需要 系統(tǒng)框架或者被包括作為你的插件文件的一部分給一個(gè)相對(duì)路徑名。 |
custom(boolean) | 表示框架是否是作為你的插件文件的一部分弧圆。 |
weak(boolean) | 默認(rèn)值:false 指示是否該框架應(yīng)弱鏈接赋兵。 |
type(string) | 表示框架添加的類型。 |
parent(string) | 默認(rèn)值:設(shè)置到包含子項(xiàng)目在其中添加參考的目錄的相對(duì)路徑搔预。默認(rèn)霹期。意味著應(yīng)用程序項(xiàng)目。 |
Examples:
For iOS:
<framework src="libsqlite3.dylib" />
<framework src="social.framework" weak="true" />
<framework src="relative/path/to/my.framework" custom="true" />
在Android(如cordova-android@4.0.0的)拯田,使用框架的標(biāo)簽历造,包括Maven依賴,或者包括捆綁的庫(kù)項(xiàng)目勿锅。
<!-- Depend on latest version of GCM from play services -->
<framework src="com.google.android.gms:play-services-gcm:+" />
<!-- Depend on v21 of appcompat-v7 support library -->
<framework src="com.android.support:appcompat-v7:21+" />
<!-- Depend on library project included in plugin -->
<framework src="relative/path/FeedbackLib" custom="true" />
info
向用戶提供更多的信息帕膜。當(dāng)你需要不容易自動(dòng)或超出了CLI的范圍枣氧,額外的步驟溢十,這是非常有用的。此標(biāo)記的內(nèi)容被打印出來(lái)的時(shí)候达吞,CLI安裝插件张弛。
Example:
<info>
You need to install __Google Play Services__ from the `Android Extras` section using the Android SDK manager (run `android`).
You need to add the following line to the `local.properties`:
android.library.reference.1=PATH_TO_ANDROID_SDK/sdk/extras/google/google_play_services/libproject/google-play-services_lib
</info>
hook
表示將由cordova當(dāng)某些行為發(fā)生時(shí)被調(diào)用自定義腳本(例如,插件添加或平臺(tái)準(zhǔn)備邏輯后調(diào)用)。當(dāng)你需要擴(kuò)展默認(rèn)cordvoa的功能吞鸭,這非常有用寺董。
Example:
<hook type="after_plugin_install" src="scripts/afterPluginInstall.js" />
uses-permission
在某些情況下,插件可能需要使依賴于目標(biāo)應(yīng)用程序配置的改變刻剥。例如遮咖,要在Android,應(yīng)用程序的包ID是我-APP-ID將需要的權(quán)限造虏,如注冊(cè)C2DM:
<uses-permission android:name="my-app-id.permission.C2D_MESSAGE"/>
在從plugin.xml文件中插入的內(nèi)容是不是提前知道這樣的情況下御吞,變量可以通過(guò)一個(gè)美元符號(hào)后面是一系列大寫字母,數(shù)字或下劃線的表示漓藕。對(duì)于上面的例子中陶珠,plugin.xml文件將包括此標(biāo)記:
<uses-permission android:name="$PACKAGE_NAME.permission.C2D_MESSAGE"/>
如果沒(méi)有找到該CLI替換指定的值,或空字符串變量的引用享钞∽岱蹋可變基準(zhǔn)的值可以被檢測(cè)(在此情況下,從AndroidManifest.xml文件)栗竖,或者由工具的用戶指定;確切的過(guò)程是依賴于特定的工具暑脆。
Plugman可以要求用戶指定插件的必需的變量。例如划滋,對(duì)于C2M和谷歌地圖API密鑰可以被指定為一個(gè)命令行參數(shù):
plugman --platform android --project /path/to/project --plugin name|git-url|path --variable API_KEY=!@CFATGWE%^WGSFDGSDFW$%^#$%YTHGsdfhsfhyer56734
preference
正如上一節(jié)中看到的饵筑,有時(shí)插件可能需要用戶為他們的變量賦值。為了使這些變量強(qiáng)制性的处坪,在<平臺(tái)>標(biāo)簽必須包含一個(gè)<優(yōu)先>標(biāo)記根资。在CLI檢查,這些要求的偏好中通過(guò)同窘。如果不是玄帕,則應(yīng)當(dāng)警告用戶如何在可變和出口通過(guò)帶有非零碼。
屬性(類型) | 描述 |
---|---|
name(string) | 需要 變量的名稱.. |
default(string) | 變量的默認(rèn)值想邦。如果存在的話裤纹,它的值將被使用,并沒(méi)有錯(cuò)誤將萬(wàn)一用戶發(fā)出不輸入任何值丧没。 |
Example:
<preference name="API_KEY" default="default-value" />