Cordova 插件 plugin.xml 文件配置

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)制改變變量的值讼呢。

plugin.xml 官網(wǎng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撩鹿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子悦屏,更是在濱河造成了極大的恐慌节沦,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件础爬,死亡現(xiàn)場(chǎng)離奇詭異甫贯,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)看蚜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)叫搁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人供炎,你說(shuō)我怎么就攤上這事渴逻。” “怎么了音诫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵惨奕,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我纽竣,道長(zhǎng)墓贿,這世上最難降的妖魔是什么茧泪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮聋袋,結(jié)果婚禮上队伟,老公的妹妹穿的比我還像新娘。我一直安慰自己幽勒,他們只是感情好嗜侮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著啥容,像睡著了一般锈颗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咪惠,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天击吱,我揣著相機(jī)與錄音,去河邊找鬼遥昧。 笑死覆醇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的炭臭。 我是一名探鬼主播永脓,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鞋仍!你這毒婦竟也來(lái)了常摧?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤威创,失蹤者是張志新(化名)和其女友劉穎落午,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體那婉,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡板甘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了详炬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盐类。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖呛谜,靈堂內(nèi)的尸體忽然破棺而出在跳,到底是詐尸還是另有隱情,我是刑警寧澤隐岛,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布猫妙,位于F島的核電站,受9級(jí)特大地震影響聚凹,放射性物質(zhì)發(fā)生泄漏割坠。R本人自食惡果不足惜齐帚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望彼哼。 院中可真熱鬧对妄,春花似錦、人聲如沸敢朱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拴签。三九已至孝常,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚓哩,已是汗流浹背构灸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杖剪,地道東北人冻押。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓驰贷,卻偏偏與公主長(zhǎng)得像盛嘿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子括袒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

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