plugin
<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.0">
屬性 | 含義 |
---|---|
xmlns | 插件的命名空間(Required) |
xmlns:android | 如果該文件包含其他名稱(chēng)空間,如要加入到 Android 中的情況下,AndroidManifest.xml 文件標(biāo)記的 XML泞歉,這些命名空間也應(yīng)包括在該元素(Optional) |
id | 插件的標(biāo)識(shí)符(Required) |
version | 插件的版本號(hào)(Required) |
engines、engine
<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>
屬性 | 含義 |
---|---|
name | 引擎的名稱(chēng)(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 | 你的框架必須擁有安裝的版本(Required) |
scriptSrc | 僅適用于自定義的框架咒循,該腳本文件据途,告訴 plugman 自定義架構(gòu)的版本。理想情況下叙甸,這個(gè)文件應(yīng)該是你的插件目錄的頂級(jí)目錄 |
platform | 僅適用于自定義的框架颖医,需要該平臺(tái)的框架支持●烧簦可以使用通配符 * 表示支持所有的平臺(tái)熔萧,也可以指定多個(gè)自己需要的平臺(tái) |
在 <engines> 元素的子元素中指定此插件支持基于科爾多瓦的 Apache 框架版本。
<engines> 元件也可以使用 '>'僚祷,'>=' 等來(lái)模糊匹配佛致,以避免重復(fù)指定,并且當(dāng)?shù)讓拥钠脚_(tái)被更新時(shí)辙谜,可以減少維護(hù)俺榆。
自定義框架:
<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>MyPlugin</name>
name 元素用于指定插件的名稱(chēng)。
description
<description>My plugin description</description>
description 元素用于指定插件的描述装哆。此元素不處理本地化罐脊。
author
<author>Plugin author</author>
author 元素包含了插件作者的姓名。
keywords
<keywords>plugin,bar,identifier</keywords>
keywords 元素的內(nèi)容包含逗號(hào)分隔的關(guān)鍵字來(lái)描述該插件蜕琴。
license
<license>Apache 2.0 License</license>
license 元素用于指定插件的許可證萍桌。
asset
<asset src="www/foo.js" target="foo.js" />
<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" />
屬性 | 含義 |
---|---|
src | 該文件或目錄應(yīng)位于插件包号醉,相對(duì)于 plugin.xml 文件(Required) |
target | 該文件或目錄應(yīng)位于 cordova 應(yīng)用程序反症,相對(duì)于 www 目錄(Required) |
asset 元素用來(lái)列出文件或目錄被復(fù)制到 cordova 應(yīng)用程序的 www 目錄。
js-module
// 當(dāng)安裝下面例子中的插件時(shí)畔派,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>
屬性 | 含義 |
---|---|
src | 參考相對(duì) plugin.xml 文件插件目錄中的文件 |
name | 提供模塊名稱(chēng)的最后一部分 |
插件包括一個(gè)或多個(gè) JavaScript 文件。每個(gè) js-module 標(biāo)簽對(duì)應(yīng)一個(gè) JavaScript 文件烦绳。在 platform 嵌套 js-module 聲明特定平臺(tái)的 JavaScript 綁定的模塊元素卿捎。
clobbers
<js-module src="socket.js" name="Socket">
<clobbers target="chrome.socket" />
</js-module>
屬性 | 含義 |
---|---|
target | module.exports 被插入的命名空間 |
clobbers 元素是 js-module元素內(nèi)標(biāo)記,用于指定 module.exports 被插入在 window 對(duì)象的命名空間径密。
merges
<js-module src="socket.js" name="Socket">
<merges target="chrome.socket" />
</js-module>
屬性 | 含義 |
---|---|
target | 在這 module.exports 命名空間被合并 |
merges 元素是 js-module元素內(nèi)標(biāo)記泊碑,用來(lái)指定在哪里 module.exports 命名空間被合并廷粒。如果已經(jīng)存在瓮钥,模塊的版本取代原來(lái)的式散。
runs
<js-module src="socket.js" name="Socket">
<runs/>
</js-module>
runs 元素是 js-module 元素內(nèi)標(biāo)記。最多只能有一個(gè) runs 標(biāo)記惧眠。如果包括 runs籽懦,<clobbers/> 和 <merges/> 是多余的。
dependency
<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">
屬性 | 含義 |
---|---|
id | 插件的 id |
url | 插件 url氛魁,應(yīng)該引用一個(gè) Git 倉(cāng)庫(kù) |
commit | 一個(gè)分支或標(biāo)記的名稱(chēng) |
subdir | 指定目標(biāo)插件存在依賴(lài)的 Git 倉(cāng)庫(kù)的子目錄暮顺。它允許包含幾個(gè)相關(guān)的插件庫(kù),每個(gè)單獨(dú)指定 |
version | 該插件的版本依賴(lài) |
dependency 標(biāo)簽用來(lái)指定當(dāng)前插件依賴(lài)的其他插件秀存,引用該插件 npm 的 id 或 GitHub 的 url捶码。
platform
<platform name="android">
<!-- android-specific elements -->
</platform>
<platform name="ios">
<!-- ios-specific elements -->
</platform>
屬性 | 含義 |
---|---|
name | 允許值:ios,android应又,blackberry10宙项,amazon-fireos,wp8株扛,windows |
platform 元素標(biāo)識(shí)與插件代碼相關(guān)聯(lián)的或需要修改其配置文件的平臺(tái)尤筐。沒(méi)有 platform 標(biāo)記的插件被假定可以在任何平臺(tái)安裝。
source-file
<!-- 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" />
屬性 | 含義 |
---|---|
src | 相對(duì)于 plugin.xml 文件的位置 |
target-dir | 復(fù)制文件到該指定的相對(duì)于 cordova 項(xiàng)目根目錄的目錄中 |
framework | 默認(rèn)值:false洞就,iOS 版如果設(shè)置為 true盆繁,表示增加了指定的文件作為該項(xiàng)目的框架 |
compiler-flags | iOS 如果設(shè)置,將指定編譯器選項(xiàng)為特定的源文件 |
source-file 元素標(biāo)識(shí)應(yīng)安裝到項(xiàng)目中的可執(zhí)行文件的源代碼旬蟋。
header-file
<header-file src="CDVFoo.h" />
屬性 | 含義 |
---|---|
src | 相對(duì)于 plugin.xml 的文件的路徑 |
target | 將文件復(fù)制到該路徑下 |
header-file 指定源文件的頭文件油昂。
resource-file
<!-- android -->
<resource-file src="FooPluginStrings.xml" target="res/values/FooPluginStrings.xml" />
<!-- ios -->
<resource-file src="src/ios/HTJCDataBase.bundle" />
屬性 | 含義 |
---|---|
src | 相對(duì)于 plugin.xml 的文件的路徑 |
target | 將文件復(fù)制到該路徑下 |
config-file
// 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>
屬性 | 含義 |
---|---|
target | 指定文件被復(fù)制到相對(duì)于 cordova 項(xiàng)目根路徑的路徑。如果指定的文件不存在倾贰,就會(huì)忽略配置變化冕碟,并繼續(xù)安裝 |
parent | 在配置文件中的父元素 |
after | 接受兄弟姐妹的優(yōu)先列表之后,添加 XML 片段匆浙“菜拢可用于指定這樣的XML元素的嚴(yán)格的順序 |
config-file 標(biāo)識(shí)修改基于 XML 的配置文件的內(nèi)容。
plugins-plist
<plugins-plist key="Foo" string="CDVFoo" />
plugins-plist 標(biāo)識(shí)對(duì)在 iOS cordova 項(xiàng)目中的 info.plist 文件所做的修改或者添加的新的內(nèi)容∈啄幔現(xiàn)在已經(jīng)過(guò)時(shí)了挑庶,因?yàn)樗鼉H適用于科爾多瓦 - iOS 2.2.0 及以下版本言秸。
lib-file
<lib-file src="src/BlackBerry10/native/device/libfoo.so" arch="device" />
<lib-file src="src/BlackBerry10/native/simulator/libfoo.so" arch="simulator" />
屬性 | 含義 |
---|---|
src | 相對(duì)于 plugin.xml 文件的位置 |
arch | 指定適用的環(huán)境,例如真機(jī)還是模擬機(jī)迎捺、支持 86举畸、64 或 ARM |
lib-file 標(biāo)識(shí)鏈接源、資源和頭文件凳枝。
framework
<!-- ios -->
<framework src="libsqlite3.tdb" />
<framework src="social.framework" weak="true" />
<framework src="relative/path/to/my.framework" custom="true" />
<!-- android -->
<!-- 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" />
屬性 | 含義 |
---|---|
src | 系統(tǒng)框架或者插件文件的相對(duì)路徑 |
custom | 表示框架是否作為插件文件的一部分 |
weak | 默認(rèn)值:false抄沮,指示該框架是否應(yīng)弱鏈接 |
type | 表示框架添加的類(lèi)型 |
parent | 默認(rèn)值:應(yīng)用程序項(xiàng)目,設(shè)置系統(tǒng)框架或者插件文件的相對(duì)路徑 |
lib-file 標(biāo)識(shí)該插件依賴(lài)的框架(通常是系統(tǒng)/平臺(tái)的一部分)范舀。
info
<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>
info 向用戶(hù)提供更多的信息合是。
hook
<hook type="after_plugin_install" src="scripts/afterPluginInstall.js" />
hook 表示當(dāng)某些行為發(fā)生時(shí) cordova 調(diào)用自定義腳本(例如:插件添加或平臺(tái)準(zhǔn)備邏輯后調(diào)用)了罪。常常用來(lái)擴(kuò)展默認(rèn) cordvoa 的功能锭环。
uses-permission
<uses-permission android:name="my-app-id.permission.C2D_MESSAGE"/>
<uses-permission android:name="$PACKAGE_NAME.permission.C2D_MESSAGE"/>
uses-permission 標(biāo)識(shí)插件依賴(lài)需要的權(quán)限。
Plugman 可以要求用戶(hù)指定插件必需的變量泊藕。例如辅辩,對(duì)于 C2M 和谷歌地圖 API 密鑰可以被指定為一個(gè)命令行參數(shù):
plugman --platform android --project /path/to/project --plugin name|git-url|path --variable API_KEY=!@CFATGWE%^WGSFDGSDFW$%^#$%YTHGsdfhsfhyer56734
preference
<preference name="API_KEY" default="default-value" />
屬性 | 含義 |
---|---|
name | 變量的名稱(chēng) |
default | 變量的默認(rèn)值。如果存在的話(huà)娃圆,它的值將被使用玫锋,萬(wàn)一用戶(hù)不輸入任何值,并不會(huì)產(chǎn)生錯(cuò)誤 |
preference 強(qiáng)制改變變量的值讼呢。