最詳細(xì)的ionic cordova 插件配置文件 Plugin.xml 注解

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自定義插件边苹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市裁僧,隨后出現(xiàn)的幾起案子个束,更是在濱河造成了極大的恐慌,老刑警劉巖聊疲,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茬底,死亡現(xiàn)場離奇詭異,居然都是意外死亡获洲,警方通過查閱死者的電腦和手機(jī)阱表,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贡珊,“玉大人最爬,你說我怎么就攤上這事∶挪恚” “怎么了爱致?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寒随。 經(jīng)常有香客問我糠悯,道長,這世上最難降的妖魔是什么妻往? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任互艾,我火速辦了婚禮,結(jié)果婚禮上蒲讯,老公的妹妹穿的比我還像新娘。我一直安慰自己灰署,他們只是感情好判帮,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布局嘁。 她就那樣靜靜地躺著,像睡著了一般晦墙。 火紅的嫁衣襯著肌膚如雪悦昵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天晌畅,我揣著相機(jī)與錄音但指,去河邊找鬼。 笑死抗楔,一個胖子當(dāng)著我的面吹牛棋凳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播连躏,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼剩岳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了入热?” 一聲冷哼從身側(cè)響起拍棕,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎勺良,沒想到半個月后绰播,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡尚困,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年蠢箩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尾组。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡忙芒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出讳侨,到底是詐尸還是另有隱情呵萨,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布跨跨,位于F島的核電站潮峦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏勇婴。R本人自食惡果不足惜忱嘹,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耕渴。 院中可真熱鬧拘悦,春花似錦、人聲如沸橱脸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至屁桑,卻和暖如春医寿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蘑斧。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工靖秩, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人竖瘾。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓沟突,卻偏偏與公主長得像,于是被迫代替她去往敵國和親准浴。 傳聞我的和親對象是個殘疾皇子事扭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

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