PS:目前利用前端技術(shù)開發(fā)跨平臺App很火爆法梯,最火的當(dāng)屬使用cordova框架開發(fā)App速缨,另外最近很火的前端開發(fā)框架ionic訪問原生的能力也是來自于cordova(對cordova進(jìn)行了封裝)拒秘。插件是它們的核心所在,無論我們要使用ionic還是直接使用cordova去開發(fā)一個App碱蒙,都會用到框架提供的插件或自定義插件琴儿,所以掌握Plugin.xml的編寫還是很重要滴~。
plugin.xml文件作用
plugin.xml文件定義插件所需的結(jié)構(gòu)和設(shè)置茵休,它通過幾個元素來提供有關(guān)插件的詳細(xì)信息薪棒。
cordova Plugin.xml 官網(wǎng)
現(xiàn)在開始詳細(xì)說一下這些元素(標(biāo)簽)~~~
頂級元素plugin
該plugin元素是插件清單的頂級元素手蝎。
屬性(類型) | 描述 |
---|---|
xmlns(string) | 必需的,插件命名空間http://apache.org/cordova/ns/plugins/1.0俐芯。如果文檔包含來自其他命名空間的XML棵介,例如AndroidManifest.xml在Android的情況下要添加到文件中的標(biāo)記,那么這些命名空間也應(yīng)該包含在元素中吧史。 |
id(string) | 必需的邮辽,插件的npm樣式標(biāo)識符。 |
version(string) | 必需的贸营, 插件的版本號吨述。支持Semver語法。 |
例:
<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
plugin元素的子元素<engines>指定此插件支持的基于Apache Cordova的框架的版本钞脂。對于目標(biāo)項目不滿足引擎約束的任何插件揣云,CLI將使用非零代碼進(jìn)行中止。如果不指定了標(biāo)記冰啃,則CLI會嘗試盲目地安裝到指定的cordova項目目錄中邓夕。
注意:在Cordova 6.1.0+中,指定平臺亿笤,插件和CLI依賴項的推薦位置在插件的
package.json
中翎迁。有關(guān) 更多信息,請參閱指定Cordova依賴項净薛。
屬性(類型) | 描述 |
---|---|
name(string) | Required, 引擎名稱汪榔。以下是支持的默認(rèn)引擎:cordova; cordova-plugman;cordova-android; cordova-ios; cordova-windows; cordova-osx; windows-os; android-sdk (返回安裝的最高Android api級別); windows-sdk (返回本機(jī)Windows SDK版本); apple-xcode (返回xcode版本); apple-ios (返回安裝的最高iOS版本); apple-osx (返回OSX版本)。除默認(rèn)框架外肃拜,您還可以指定自定義框架痴腌。 |
version(string) | Required,您的框架必須具有的版本才能安裝燃领。支持Semver語法士聪。 |
scriptSrc(string) | *僅適用于自定義框架 *, Required ,此腳本文件告訴plugman自定義框架的版本。理想情況下猛蔽,此文件應(yīng)位于插件目錄的頂級目錄中剥悟。 |
platform(string) | 僅適用于自定義框架 Required ,您的框架支持的平臺。您可以使用通配符*來表示支持所有平臺曼库,使用管道字符指定多個区岗,如`android。 |
例如:
<engines>
<engine name="cordova-android" version="=1.8.0" />
</engines>
引擎元素還可以使用“>”毁枯,“> =”等指定模糊匹配以避免重復(fù)慈缔,并在更新基礎(chǔ)平臺時減少維護(hù)。
<engines>
<engine name="cordova-android" version=">=1.8.0" />
</engines>
該<engine>標(biāo)簽?zāi)J(rèn)支持所有的已經(jīng)存在的主要的cordova平臺种玛。指定cordova引擎標(biāo)記意味著任何平臺上的所有Cordova版本都必須滿足引擎版本屬性藐鹤。您還可以列出特定平臺及其版本瓤檐,以覆蓋籠統(tǒng)的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元素用于指定插件的名稱。此元素(尚未)處理本地化娱节。
例如:
<name>Foo</name>
description
該description元素用于指定插件的描述挠蛉。此元素(尚未)處理本地化。
例如:
<description>Foo plugin description</description>
author
author元素的內(nèi)容包含插件作者的名稱括堤。
例如:
<author>Foo plugin author</author>
keywords
keywords元素的內(nèi)容包含逗號分隔的關(guān)鍵字以描述插件碌秸。
例子:
<keywords>foo,bar</keywords>
license(許可、執(zhí)照)
此元素用于指定插件的許可證悄窃。
例如:
<license>Apache 2.0 License</license>
asset
此元素用于列出要復(fù)制到Cordova應(yīng)用程序www目錄中的文件或目錄。任何嵌套在<platform>元素中的<asset>元素都指定特定于平臺的web資源蹂窖。
屬性(類型) | 描述 |
---|---|
src(string) | Required轧抗,相對于plugin.xml文檔,文件或目錄位于插件包中的位置。如果指定的src位置不存在文件瞬测,CLI將停止并撤消安裝過程横媚,發(fā)出有關(guān)沖突的通知,并使用非零代碼退出月趟。 |
target(string) | Required灯蝴,文件或目錄應(yīng)位于Cordova應(yīng)用程序中相對于www目錄的位置。如果目標(biāo)位置已存在文件孝宗,CLI將停止并撤消安裝過程穷躁,發(fā)出有關(guān)沖突的通知,并以非零代碼退出因妇。 |
例子:
<!-- 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" />
資源也可以指定到子目錄问潭。這將在www目錄中創(chuàng)建js/experimental目錄,除非已存在婚被,并復(fù)制該new-foo.js文件并將其重命名為foo.js狡忙。
<asset src="www/new-foo.js" target="js/experimental/foo.js" />
js-module
大多數(shù)插件都包含一個或多個JavaScript文件。每個<js-module>標(biāo)記對應(yīng)一個JavaScript文件址芯,并阻止插件的使用者必須為每個文件添加<script>標(biāo)記灾茁。不要使用cordova.define包裝文件,因為它是自動添加的谷炸。該模塊包含在一個閉包中北专,帶有模塊,導(dǎo)出淑廊,以及要求在范圍內(nèi)逗余,就像普通的AMD模塊一樣。嵌套在<platform>元素中的<js-module>元素聲明特定平臺綁定的JavaScript模塊季惩。
屬性(類型) | 描述 |
---|---|
src(string) | Required录粱,引用插件目錄中相對于plugin.xml文件的文件腻格。如果src未解析為現(xiàn)有文件,CLI將停止并撤消安裝啥繁,發(fā)出問題通知菜职,并以非零代碼退出。 |
name(string) | Required旗闽,提供模塊名稱的最后一部分酬核。它通常可以是你喜歡的任何東西适室,只有你想在你的JavaScript代碼中使用cordova.require導(dǎo)入插件的其他部分才有意義嫡意。一個<js-module>中的模塊名稱<js-module>是您的插件的id。 |
例如:
使用下面的示例安裝插件時捣辆,將socket.js復(fù)制到www/plugins/my-plugin-id/socket.js并添加為條目www/cordova_plugins.js蔬螟。在加載時,代碼cordova.js使用XHR讀取每個文件并將<script>標(biāo)記注入HTML汽畴。
<js-module src="socket.js" name="Socket">
</js-module>
同樣對于此示例旧巾,如果插件ID為chrome-socket,則模塊名稱將為chrome-socket.Socket忍些。
clobbers(覆蓋~個人理解)
<js-module>允許元素內(nèi)使用鲁猩。用于指定window插入module.exports的對象下的命名空間。你可以擁有任意多的<clobbers>罢坝,相應(yīng)的window上創(chuàng)建的對象將不可用廓握。
屬性(類型) | 描述 |
---|---|
target(string) | 插入module.exports的命名空間。 |
例:
<js-module src="socket.js" name="Socket">
<clobbers target="chrome.socket" />
</js-module>
這里module.exports作為window.chrome.socket被插入到window對象中炸客。
merges
<js-module>允許元素內(nèi)使用疾棵。用來指定在哪里module.exports獲取與任何現(xiàn)有的價值合并window對象的命名空間。如果已經(jīng)存在痹仙,模塊的版本取代原來的是尔。你可以有很多的merges只要你喜歡。創(chuàng)建在window上的任何對象不可用开仰。
| 屬性(類型) | 描述 |
| --- | --- |
| target(string) | module.exports合并到的命名空間拟枚。 |
例:
<js-module src="socket.js" name="Socket">
<merges target="chrome.socket" />
</js-module>
這里module.exports與任何現(xiàn)有值合并在一起window.chrome.socket。
runs
<js-module>允許元素內(nèi)使用众弓。它意味著您的代碼應(yīng)該使用cordova.require恩溅,但不能安裝在window對象上。這在初始化模塊谓娃,附加事件處理程序或其他方面很有用脚乡。您最多只能有一個<runs/>標(biāo)簽。需要注意的是滨达,包括一個<runs/>帶有<clobbers/>或者<merges/>是多余的奶稠,因為它們也cordova.require你的模塊俯艰。
例如:
<js-module src="socket.js" name="Socket">
<runs/>
</js-module>
dependency
該<dependency>標(biāo)簽允許你指定在其當(dāng)前插件依賴其他插件。插件由其唯一的npm id或github url引用锌订。
屬性(類型) | 描述 |
---|---|
id(string) | 提供插件的ID竹握。 |
url(string) | 插件的URL。這應(yīng)該引用一個git存儲庫辆飘,CLI試圖克隆它啦辐。 |
commit(string) | 這是git通過git checkout以下方式引用:分支或標(biāo)記名稱(例如master,0.3.1)蜈项,或提交哈希(例如975ddb228af811dd8bb37ed1dfd092a3d05295f9)芹关。 |
subdir(string) | 指定目標(biāo)插件依賴項作為git存儲庫的子目錄存在。這很有用紧卒,因為它允許存儲庫包含幾個相關(guān)的插件充边,每個插件都單獨指定。如果你設(shè)置url一個的<dependency>標(biāo)簽"."常侦,并提供一個subdir,依賴插件是從同一個本地或遠(yuǎn)程的Git倉庫作為指定父插件安裝<dependency>標(biāo)簽贬媒。請注意聋亡,subdir始終指定相對于git存儲庫根目錄的路徑,而不是父插件际乘。即使您使用本地路徑直接安裝插件坡倔,也是如此.CLI找到git存儲庫的根目錄,然后從那里找到另一個插件脖含。 |
version(string) | 該插件的版本取決于罪塔。支持Semver語法。 |
例:
<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)識具有關(guān)聯(lián)原生代碼或需要修改其配置文件的平臺养葵。使用此規(guī)范的工具可以識別支持的平臺并將代碼安裝到Cordova項目中征堪。沒有<platform>標(biāo)簽的插件被假定為僅僅是JavaScript,因此可以安裝在任何和所有平臺上关拒。
屬性(類型) | 描述 |
---|---|
name(string) | Required佃蚜, 允許值:ios,android着绊,windows谐算,browser,osx 標(biāo)識支持的平臺归露,將元素的子項與該平臺相關(guān)聯(lián)洲脂。 |
例如:
<platform name="android">
<!-- android-specific elements -->
</platform>
source-file
標(biāo)識應(yīng)安裝到項目中的可執(zhí)行源代碼。
屬性(類型) | 描述 |
---|---|
src(string) | Required剧包, 位置相對于plugin.xml文件恐锦。如果找不到src文件往果,CLI將停止并撤消安裝,發(fā)出有關(guān)問題的通知踩蔚,并以非零代碼退出棚放。 |
target-dir(string) | Required, 允許值:ios馅闽,android飘蚯,windows,browser福也,osx 標(biāo)識支持的平臺局骤,將元素的子項與該平臺相關(guān)聯(lián)。 |
framework(boolean)蘋果平臺 | 默認(rèn)值:false |
如果設(shè)置為true暴凑,則還將指定的文件作為框架添加到項目中峦甩。 | |
compiler-flags(string) 蘋果平臺 | 如果設(shè)置,則為特定源文件指定編譯器標(biāo)志现喳。 |
例子:
<!-- 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>元素凯傲,但專門針對iOS和Android等平臺,用于區(qū)分源文件嗦篱,頭文件和資源冰单。Windows不支持此功能。
屬性(類型) | 描述 |
---|---|
src(string) | Required灸促, 位置相對于plugin.xml文件诫欠。如果找不到src文件,CLI將停止并撤消安裝浴栽,發(fā)出有關(guān)問題的通知荒叼,并以非零代碼退出。 |
target-dir(string) | 應(yīng)該復(fù)制文件的目錄典鸡,相對于Cordova項目的根目錄被廓。 |
例:
<header-file src="CDVFoo.h" />
resource-file
這類似于<source-file>元素,但專門用于區(qū)分源文件椿每,頭文件和資源的iOS和Android等平臺伊者。
屬性(類型) | 描述 |
---|---|
src(string) | Required, 位置相對于plugin.xml文件间护。如果找不到src文件亦渗,CLI將停止并撤消安裝,發(fā)出有關(guān)問題的通知汁尺,并以非零代碼退出法精。 |
target(string) | 你的將要被復(fù)制的目錄中的文件路徑。 |
arch(string) windows平臺 | 允許值:x86,x64或ARM搂蜓。指示僅在為指定體系結(jié)構(gòu)構(gòu)建時才包含該文件狼荞。 |
device-target windows平臺 | 設(shè)備對象 允許值:( win或windows),phone或all帮碰。指示僅在為指定的目標(biāo)設(shè)備類型構(gòu)建時才包含該文件相味。 |
versions windows平臺 | 指示僅在為與指定版本字符串匹配的版本構(gòu)建時才應(yīng)包含該文件。值可以是任何有效的節(jié)點語義版本范圍字符串殉挽。 |
reference windows平臺 | 指示應(yīng)從src引用該文件丰涉,而不是將其復(fù)制到目標(biāo)目標(biāo)。該文件將顯示在Visual Studio中斯碌,文件名由target指定一死,但是將指向相應(yīng)的src,具體取決于體系結(jié)構(gòu)傻唾。 |
例子:
For Android:
<resource-file src="FooPluginStrings.xml" target="res/values/FooPluginStrings.xml" />
For Windows:
<resource-file src="src/windows/win81/MobServices.pri" target="win81\MobServices.pri" device-target="windows" versions="8.1" arch="x64"/>
<!-- Example of referencing -->
<resource-file src="x86/foo.dll" target="foo.dll" arch="x86" reference="true" />
<resource-file src="x64/foo.dll" target="foo.dll" arch="x64" reference="true" />
注意:target應(yīng)使用反斜杠以避免在Visual Studio中DEP2100部署錯誤投慈。
config-file
標(biāo)識要修改的基于XML的配置文件,即:該文檔中應(yīng)該被修改的位置冠骄,以及應(yīng)修改的內(nèi)容伪煤。已使用此元素測試修改的兩種文件類型是xml和plist文件。該config-file元素僅允許您將新子項附加到XML文檔樹凛辣。子項是要插入目標(biāo)文檔的XML literals带族。
屬性(類型) | 描述 |
---|---|
target(string) | 要修改的文件以及相對于Cordova項目根目錄的路徑。如果指定的文件不存在蟀给,該工具將忽略配置更改并繼續(xù)安裝。target可以包含wildcard(*)元素阳堕。在這種情況下跋理,CLI遞歸搜索項目目錄結(jié)構(gòu)并使用第一個匹配項。在iOS上恬总,配置文件相對于項目目錄root的位置未知前普,因此指定config.xml解析為的目標(biāo)cordova-ios-project/MyAppName/config.xml。 |
after(string) | 接受兄弟姐妹的優(yōu)先列表之后壹堰,添加 XML 片段拭卿。這是有用的在需要指定像XML元素的嚴(yán)格排序的文件中比如:this。 |
device-target(string) | windows贱纠。 允許值:win峻厚,phone,all谆焊。適用于在影meta-name package.appxmanifest時惠桃,此屬性指示僅在為指定的目標(biāo)設(shè)備類型構(gòu)建時才應(yīng)修改該文件。 |
versions (string) | windows。 適用于在影meta-name package.appxmanifest時辜王,此屬性表示只應(yīng)針對與指定版本字符串匹配的版本劈狐,更改特定Windows版本的應(yīng)用程序清單。值可以是任何有效的節(jié)點語義版本范圍的字符串呐馆。 |
例如:
For XML(Android等):
<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(iOS):
<config-file target="*-Info.plist" parent="CFBundleURLTypes">
<array>
<dict>
<key>PackageName</key>
<string>$PACKAGE_NAME</string>
</dict>
</array>
</config-file>
For windows-specific attributes:
<config-file target="package.appxmanifest" parent="/Package/Capabilities" versions="<8.1.0">
<Capability Name="picturesLibrary" />
<DeviceCapability Name="webcam" />
</config-file>
<config-file target="package.appxmanifest" parent="/Package/Capabilities" versions=">=8.1.0" device-target="phone">
<DeviceCapability Name="webcam" />
</config-file>
上面的示例將設(shè)置8.1之前的平臺(特別是Windows 8)以要求webcam設(shè)備功能和picturesLibrary常規(guī)功能肥缔,并僅將webcam設(shè)備功能應(yīng)用于為Windows Phone構(gòu)建的Windows 8.1項目。Windows桌面8.1系統(tǒng)未經(jīng)修改汹来。
plugins-plist
指定要附加到iOS Cordova項目中AppInfo.plist 文件的鍵和值续膳。這已經(jīng)過時,因為它僅適用于cordova-ios 2.2.0及更低版本俗慈。將使用<config-file>標(biāo)簽用于較新版本的Cordova姑宽。
lib-file
類似source, resource, and header files,但特別適用于使用用戶生成的庫的BlackBerry 10等平臺闺阱。對于Windows平臺炮车,在生成的Windows項目文件中該<lib-file>元素允許包含an <SDKReference>。
屬性(類型) | 描述 |
---|---|
src(string) | Required酣溃, 位置相對于plugin.xml文件瘦穆。如果找不到src文件,CLI將停止并撤消安裝赊豌,發(fā)出有關(guān)問題的通知扛或,并以非零代碼退出。對于Windows碘饼,它指示要包含的SDK的名稱(將用作Include生成<SDKReference>元素的屬性的值)熙兔。 |
arch(string) | 真機(jī)或者simulator,構(gòu)建已經(jīng)被bulid 過的.so文件艾恼。對于Windows住涉,它表示<SDKReference>僅包含在編譯特定的包時。支持的值是x86钠绍,x64或ARM舆声。 |
device-target(string) | windows。 允許值:win柳爽,phone媳握,all。它表示<SDKReference>僅包含在編譯特定目標(biāo)設(shè)備的包時磷脯。 |
versions (string) | windows蛾找。 它表示<SDKReference>僅包含在編譯特定版本的包時。值可以是任何有效的節(jié)點語義版本范圍的字符串赵誓。 |
例如:
<lib-file src="src/BlackBerry10/native/device/libfoo.so" arch="device" />
<lib-file src="src/BlackBerry10/native/simulator/libfoo.so" arch="simulator" />
For Windows:
<lib-file src="Microsoft.WinJS.2.0, Version=1.0" arch="x86" />
<lib-file src="Microsoft.WinJS.2.0, Version=1.0" versions=">=8.1" />
<lib-file src="Microsoft.WinJS.2.0, Version=1.0" target="phone" />
<lib-file src="Microsoft.WinJS.2.0, Version=1.0" target="win" versions="8.0" arch="x86" />
framework
標(biāo)識插件所依賴的框架(通常是OS /平臺的一部分)腋粥。
屬性(類型) | 描述 |
---|---|
src(string) | Required晦雨, 位置相對于plugin.xml文件。如果找不到src文件隘冲,CLI將停止并撤消安裝闹瞧,發(fā)出有關(guān)問題的通知,并以非零代碼退出展辞。對于Windows奥邮,它指示要包含的SDK的名稱(將用作Include生成<SDKReference>元素的屬性的值)。 |
src(string) | Required罗珍,系統(tǒng)框架的名稱或被包含的作為插件的一部分的系統(tǒng)框架的相對路徑洽腺。 |
custom(boolean) | 指示框架是否包含在插件文件中。 |
weak(boolean) | Default: false 覆旱, 指示框架是否應(yīng)該弱鏈接蘸朋。 |
type(string) | Default: .; 設(shè)置包含要添加引用的子項目的目錄的相對路徑扣唱。默認(rèn)值“.”表示應(yīng)用程序項目藕坯。 |
parent(string) | 指示要添加的框架類型。 |
arch(string) | windows 噪沙。允許值:x86炼彪,x64或ARM。指僅在編譯特定包時才包含框架正歼。 |
device-target(string) | windows辐马。 允許值:( win或windows),phone或all局义。指僅在編譯特定設(shè)備的包時才包含框架喜爷。 |
versions (string) | windows。 它表示框架僅包含在編譯特定版本的包時萄唇。值可以是任何有效的節(jié)點語義版本范圍的字符串贞奋。 |
target-dir (string) | 表示框架中的應(yīng)該被復(fù)制子目錄。實際上穷绵,在不同的芯片架構(gòu)或設(shè)備目標(biāo)中包含不同的框架版本但具有相同名稱時,這一點非常重要特愿。這允許您為每個框架版本指定不同的子文件夾仲墨,以便它們不會相互重疊。 |
例如:
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依賴項目养,或包含捆綁的庫項目。
<!-- 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" />
Framework還可用于將自定義.gradle文件包含在主項目的.gradle文件中:
<framework src="relative/path/rules.gradle" custom="true" type="gradleReference" />
在Windows下使用毒嫡,custom='true'并且type='projectReference'將添加項目引用癌蚁,將被添加到這些cordova項目的編譯+鏈接步驟幻梯。這基本上是當(dāng)前“自定義”框架可以針對多個體系結(jié)構(gòu)的唯一方式,因為它們顯式構(gòu)建為依賴通過cordova應(yīng)用程序的引用努释。
<framework src="path/to/project/LibProj.csproj" custom="true" type="projectReference"/>
使用這些Windows特定屬性的示例:
<framework src="src/windows/example.dll" arch="x64" />
<framework src="src/windows/example.dll" versions=">=8.0" />
<framework src="src/windows/example.vcxproj" type="projectReference" target="win" />
<framework src="src/windows/example.vcxproj" type="projectReference" target="all" versions="8.1" arch="x86" />
<framework src="src/windows/example.dll" target-dir="bin/x64" arch="x64" custom="true"/>
info
向用戶提供的其他信息碘梢。當(dāng)您需要無法輕松實現(xiàn)或超出CLI范圍的額外步驟時,這非常有用伐蒂。CLI安裝插件時會打印出此標(biāo)記的內(nèi)容煞躬。
例:
<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
表示您在發(fā)生特定操作時將由Cordova調(diào)用的自定義腳本(例如,在添加插件或調(diào)用平臺準(zhǔn)備邏輯之后)逸邦。當(dāng)您需要擴(kuò)展默認(rèn)的Cordova功能時恩沛,這非常有用。有關(guān)詳細(xì)信息缕减,請參閱 Hooks Guide雷客。
例:
<hook type="after_plugin_install" src="scripts/afterPluginInstall.js" />
uses-permission
在某些情況下,插件可能需要根據(jù)目標(biāo)應(yīng)用程序進(jìn)行配置更改桥狡。例如搅裙,要在Android上注冊C2DM,其包ID為my-app-id的應(yīng)用程序?qū)⑿枰粋€權(quán)限总放,比如:
<uses-permission android:name="my-app-id.permission.C2D_MESSAGE"/>
在這種情況下呈宇,從plugin.xml文件中插入的內(nèi)容未提前知道,變量可以用美元符號表示局雄,后跟一系列大寫字母甥啄,數(shù)字或下劃線。對于上面的示例炬搭,該plugin.xml文件將包含此標(biāo)記:
<uses-permission android:name="$PACKAGE_NAME.permission.C2D_MESSAGE"/>
CLI使用指定值替換變量引用蜈漓,如果未找到則替換空字符串」可以檢測變量引用的值(在這種情況下融虽,從AndroidManifest.xml文件中)或由工具的用戶指定; 確切的過程取決于特定的工具。
Plugman可以請求用戶指定插件的必需變量灼芭。例如有额,可以將C2M和Google Maps的API密鑰指定為命令行參數(shù):
plugman --platform android --project /path/to/project --plugin name|git-url|path --variable API_KEY=!@CFATGWE%^WGSFDGSDFW$%^#$%YTHGsdfhsfhyer56734
應(yīng)保留某些變量名稱,例如$PACKAGE_NAME彼绷。這是包的反向域樣式唯一標(biāo)識符巍佑,對應(yīng)CFBundleIdentifier于iOS上或package屬性的頂級manifest元素在AndroidManifest.xml文件中。
preference
如上一節(jié)所示寄悯,有時插件可能要求用戶指定其變量的值萤衰。要使這些變量成為必需項,<platform>標(biāo)記需要包含<preference>標(biāo)記猜旬。CLI檢查是否傳入了這些必需的首選項脆栋。如果沒有倦卖,它應(yīng)該警告用戶如何傳入變量并使用非零代碼退出。
屬性(類型) | 描述 |
---|---|
name(string) | Required椿争,變量的名稱怕膛。 |
default(string) | 變量的默認(rèn)值。如果存在丘薛,將使用其值嘉竟,并且如果用戶未輸入任何值,則不會發(fā)出錯誤洋侨。 |
例如:
<preference name="API_KEY" default="default-value" />
*好啦舍扰,到這里終于把Plugin.xml文件給解析了一遍,希望對讀者有幫助希坚,下一節(jié)我們將在ionic項目中創(chuàng)建一個cordova自定義插件边苹。