1. 程式人生 > 實用技巧 >plugin.xml 解析說明

plugin.xml 解析說明

plugin

說明:

是plugin.xml的主體。

示例:

<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">     

引數:

id: 外掛的唯一標識。實際專案中一般加上包名或網址名來命名id。比如:eclipse的tomcat外掛是這樣命名的:org.eclipse.tomcat。

name: 外掛的名稱,可以不唯一。

version: 外掛版本號。

provider-name: 外掛開發商的名稱,可以寫上作者或公司的名稱。

class: 外掛類的名稱,前面加上包名。

xmlns:該外掛的名稱空間,http://apache.org/cordova/ns/plugins/1.0。如果該檔案包含來自其他名稱空間,如要加入到Android中的情況下,AndroidManifest.xml檔案標記的XML,這些名稱空間也應包括在該元素。

基礎標籤

示例:

<plugin ...>
    <name>Camera</name>
    <description>Cordova Camera Plugin</description>
    <license>Apache 2.0</license>
    <keywords>cordova,camera</keywords>
    <repo>https://github.com/apache/cordova-plugin-camera</repo>
    <author>blackcat</author>
</plugin>

引數:

name:用於指定外掛的名稱。

description:用於指定外掛的描述。

license:用於指定外掛的許可證。

keywords:元素的內容包含逗號分隔的關鍵字來描述外掛 。

repo:外掛源

author:外掛作者的姓名。

engines

說明:

元素的子元素指定此外掛支援的基於apache cordova的框架的版本。對於其目標專案不滿足引擎約束的任何外掛,cli都將使用非零程式碼中止。如果未指定標記,則cli將嘗試盲目地安裝到指定的cordova專案目錄中。
建議在外掛的package.json檔案中指定平臺、外掛和cli依賴項。

示例:

<plugin ...>   
    <engines>
       <engine name="cordova" version=">=7.1.0"/>
       <engine name="cordova-android" version=">=6.3.0" />
   </engines>
</plugin>

engines元件也可以使用'>','>='等,以避免重複指定模糊匹配,並且當底層的平臺被更新,以減少維護。

標籤也對所有的cordova存在的主要平臺預設的支援。指定科爾多瓦引擎標籤意味著,在任何平臺上cordova的所有版本都必須滿足的引擎版本屬性。你也可以列出特定平臺及其版本,以覆蓋包羅永珍的cordova引擎。

引數:

name引擎的名稱。

version:版本號對應的框架存在,才能安裝。這裡是指定框架的版本號。

scriptSrc僅適用於自定義的框架 Required該指令碼檔案,告訴plugman自定義架構的版本。理想情況下,這個檔案應該是你的外掛目錄的頂級目錄中。

platform:僅適用於自定義的框架 需要該平臺的框架支援。您可以使用萬用字元*說支援所有的平臺,像'android的一個管道字元指定多個

自定義框架例如:

<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>

runtime

說明:

這裡是宣告外掛執行時需要的jar包,

示例:

plugin.jar是本外掛自身的jar包

<runtime>
  <library name="plugin.jar">
     <export name="*"/>
  </library>
    
  <library name="lib\mysql-connector-java-3.0.9-stable-bin.jar"/>
</runtime>

requires

說明:

在requires域中定義了該外掛所要使用的依賴外掛。
現在兩項就夠了,隨著開發的不斷深入這裡將會新增更多對其它外掛的引用。

示例:

實際專案中的requires設定,它要用到draw2d和gef外掛來畫圖、用於外掛的幫助系統來建立建自己的幫助文件。

<requires>
    <import plugin="org.eclipse.ui"/>
    <import plugin="org.eclipse.core.runtime"/>
    <import plugin="org.eclipse.core.resources"/>
    <import plugin="org.eclipse.draw2d"/>
    <import plugin="org.eclipse.gef"/>
    <import plugin="org.eclipse.help"/>
    <import plugin="org.eclipse.help.ui"/>
    <import plugin="org.eclipse.help.appserver"/>
    <import plugin="org.eclipse.help.webapp"/>
</requires>

引數:

extension

說明:

項設定要擴充套件的擴充套件點,它是非常重要的一項。

point="org.eclipse.ui.actionSets",設定了本外掛的擴充套件點為何,

actionSets是指Eclipse的選單、選單項和工具欄按鈕的擴充套件點

項表示一個action組(選單、按鈕)。

示例:

<extension point="org.eclipse.ui.actionSets">
      <actionSet label="Sample Action Set"  visible="true"  id="plugintest.actionSet">
     
         <menu label="樣本選單(&amp;M)"  id="sampleMenu">
            <separator name="sampleGroup"></separator>
         </menu>
        
         <action
               label="樣本操作(&amp;S)"
               icon="icons/sample.gif"
               class="myplugin.actions.SampleAction"
               tooltip="提示文字"
               menubarPath="sampleMenu/sampleGroup"
               toolbarPath="sampleGroup"
               id="myplugin.actions.SampleAction">
         </action>
        
      </actionSet>
</extension>

引數:

label:是顯示的名稱。
id其唯一識別符號,只要保證在本plugin.xml檔案中不存在重複的id就行了。
visible:指設定的按鈕或選單是否顯示,如果設定成false,則不顯示。注意:要看visible設定的效果要將“透檢視”關掉再重新開啟。

說明:

下的子項,它表示在Eclipse中插入顯示一個名為“樣本選單(M)”的主選單。 separator標籤是一個結束符,它可以對選單分組。

action

說明:

也是下的子項,由它設定選單、按鈕。

引數:

id:是識別符號,設定成和class項一樣的名稱是個不錯的選擇。
icon:是圖片的路徑
Class:是按鈕所對應的類,注意包名也要加上。
menubarPath:表示把這個action做成一個選單項放在前

定義的主選單下。
toolbarPath:表示把這個action再做成一個工具欄按鈕。

asset

說明:

這個元素用來列出檔案或目錄被複制到cordova的應用程式的www目錄。巢狀內的任何元素元素指定特定於平臺的網路資源。

示例:

<!-- 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" />

引數:

src:凡檔案或目錄位於外掛包,相對於plugin.xml的檔案。如果檔案沒有在指定位置的src存在,CLI停止並反轉安裝過程,發出關於衝突的通知,並與非零程式碼退出。

target: 在該檔案或目錄應位於cordova應用程式,相對於www目錄。如果檔案已經在目標位置存在,CLI的停止並反轉安裝過程中,發出關於衝突通知,並用一非零程式碼退出。

asset可以設定為有針對性地子目錄為好。

這將建立www目錄內的js/experimental,除非已經存在,並複製新foo.js檔案,重新命名為foo.js.

<asset src="www/new-foo.js" target="js/experimental/foo.js" />

platform

說明:

標識具有關聯的原生代碼或需要修改其配置檔案的平臺。使用此規範的工具可以識別受支援的平臺並將程式碼安裝到Cordova專案中。不帶標記的外掛被假定為僅限javascript,因此可以在所有平臺上安裝。

示例:

<plugin ...>   
   <!-- android -->
   <platform name="android"> 
   </platform>
</plugin>

引數:

name:允許值:ios、android、windows、browser、osx。將平臺標識為受支援,並將元素的子級與該平臺關聯。

js-module

說明:

大部分外掛包括一個或多個JavaScript檔案。每個JS-module標籤對應一個JavaScript檔案,並防止外掛的使用者不必新增script標記為每個檔案。不要用保鮮cordova.define的檔案,因為它會自動新增。該模組被包裹在一個閉包,用模組,出口和範圍要求,因為是正常的AMD模組。巢狀JS-module在platform宣告特定平臺的JavaScript繫結的模組元素。

示例:

當安裝與下面的例子中的一個外掛,socket.js被複制到www/plugins/my-plugin-id/socket.js,並新增為一個條目到www/cordova_plugins.js。在載入時,在cordova.js程式碼使用XHR來讀取每個檔案並注入 script 標記為HTML。

<js-module src="socket.js" name="Socket">
</js-module>

也正因為這個例子中,chrome-socket的外掛ID,模組名稱將是chrome-socket.Socket.

引數:

src:引用plugin目錄中相對於plugin.xml檔案的檔案。如果src無法解析為現有檔案,則cli將停止並反向安裝,發出問題通知,並以非零程式碼退出。

name:提供模組名稱的最後一部分。它可以是任意字元,當想在javascript程式碼中使用cordova.require在匯入外掛時,這個名稱就會用到。的模組名是由外掛的id,後跟name的值組成的。

clobbers

說明:
JS-module元素內標記。用於指定module.exports被插入在window物件的名稱空間。你可以有很多的clobbers只要你喜歡。建立window上的任何物件不可用。

示例:

<js-module src="socket.js" name="Socket">
	<clobbers target="chrome.socket" />
</js-module>

這裡module.exports被插入到window物件window.chrome.socket。

引數:

target:指定module.exports插入的名稱空間。

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:檔案相對於plugin.xml的位置。如果找不到src檔案,cli將停止並反向安裝,發出有關該問題的通知,並以非零程式碼退出。

target-dir:相對於Cordova專案的根目錄,應將檔案複製到其中的目錄。在實踐中,這對於基於Java的平臺來說是最重要的,其中org.apache.cordova.camera包中的檔案必須位於org/apache/cordova/camera目錄內。

framework:預設值:false iOS版 如果設定為true,還增加了指定的檔案作為該專案的框架。

compiler-flags:iOS 如果設定,將指定的編譯器選項為特定的原始檔

header-file

說明:

這就像source-file元素,但專門為平臺,例如iOS和Android的原始檔,標頭檔案和資源加以區分。這不是由Windows支援。

示例:

<header-file src="CDVFoo.h" />

引數:

src:需要 相對於plugin.xml到檔案的位置。。如果無法找到在src檔案,則CLI停止並反轉安裝,發出關於該問題的通知,並用一個非零程式碼退出。

target:路徑在該檔案將在你的目錄進行復制。

resource-file

說明:

這就像source-file元素,但專門為平臺,例如iOS和Android的原始檔,標頭檔案和資源加以區分。

示例:

<resource-file src="FooPluginStrings.xml" target="res/values/FooPluginStrings.xml" />

引數:

src:需要 相對於plugin.xml到檔案的位置。。如果無法找到在src檔案,則CLI停止並反轉安裝,發出關於該問題的通知,並用一個非零程式碼退出。

target:路徑在該檔案將在你的目錄進行復制。

config-file

說明:

標識一個基於XML的配置檔案進行修改,其中在該檔案中所述修改應該發生,什麼應該進行修改。已經過測試,修改與此元素的兩個檔案型別是XML和的plist檔案。在配置檔案中的元素只允許新的兒童追加到XML文件樹。孩子們在目標文件中插入XML文字。
標識要修改的xml配置檔案及其位置和修改內容。

示例:

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:要修改的檔案,以及相對於Cordova專案根目錄的路徑。如果指定的檔案不存在,工具將忽略配置更改並繼續安裝。目標可以包含萬用字元(*)元素。

在這種情況下,CLI遞迴專案的目錄結構進行搜尋,並使用第一個匹配。在iOS上,配置的位置,相對於專案根目錄是不知道,因此指定config.xml中的目標檔案解析到cordova-ios-project/MyAppName/config.xml中。

parent:引用要新增到配置檔案中的元素的父元素的xpath選擇器。如果使用絕對選擇器,則可以使用萬用字元()指定根元素,例如//plugins。如果選擇器未解析為指定文件的子文件,則該工具將停止並反轉安裝過程,發出警告,並以非零程式碼退出。

after:接受兄弟姐妹的優先列表之後,新增XML片段。可用於指定在需要這樣的XML元素的嚴格的順序檔案中的更改。

uses-permission

說明:

在某些情況下,外掛可能需要使依賴於目標應用程式配置的改變。例如,要在Android,應用程式的包ID是我-APP-ID將需要的許可權,如註冊C2DM。

示例:在從plugin.xml檔案中插入的內容是不是提前知道這樣的情況下,變數可以通過一個美元符號後面是一系列大寫字母,數字或下劃線的表示。對於上面的例子中,plugin.xml檔案將包括此標記:

<config-file target="AndroidManifest.xml" parent="/*">
   <uses-permission android:name="$PACKAGE_NAME.permission.C2D_MESSAGE"/>
</config-file>

preference

說明:

有時外掛可能需要使用者為其變數指定值。要使這些變數成為必需的,標記需要包含一個標記。在<平臺>標籤必須包含一個<優先>標記。在CLI檢查,這些要求的偏好中通過。如果不是,則應當警告使用者如何在可變和出口通過帶有非零碼。在plugin.xml的其他地方,可以使用語法$PREFERENCE_NAME引用首選項。

示例:

<preference name="API_KEY" default="default-value" />

引數:

name:變數的名稱。只能包含大寫字母、數字和下劃線。

default:變數的預設值。如果存在,則將使用其值,如果使用者不輸入任何值,則不會發出錯誤。

framework

說明:

標識的框架(通常是系統/平臺的一部分)該外掛依賴。

示例:

For iOS:  
<framework src="libsqlite3.dylib" />
<framework src="social.framework" weak="true" />
<framework src="relative/path/to/my.framework" custom="true" />

在Android(如[email protected]的),使用框架的標籤,包括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" />

引數:

src:需要 系統框架或者被包括作為你的外掛檔案的一部分給一個相對路徑名。

custom:表示框架是否是作為你的外掛檔案的一部分。

weak:預設值:false 指示是否該框架應弱連結。

type:表示框架新增的型別。

parent:預設值:設定到包含子專案在其中新增參考的目錄的相對路徑。預設。意味著應用程式專案。

merges

說明:

JS-module元素內標記。用來指定在哪裡module.exports獲取與任何現有的價值合併window物件的名稱空間。如果已經存在,模組的版本取代原來的。你可以有很多的merges只要你喜歡。建立window上的任何物件不可用。

示例:

這裡module.exports得到與window.chrome.socket的任何現有值合併。

<js-module src="socket.js" name="Socket">
    <merges target="chrome.socket" />
</js-module>

引數:

target:這module.exports名稱空間被合併。

runs

說明:

runs 是JS-module元素內標記。這意味著你的程式碼應與cordova.require指定,但視窗物件上沒有安裝。初始化模組時,附加的事件處理程式或其他方式,這非常有用。您最多隻能有一個runs標記。請注意,包括runs與是多餘的,因為它們也cordova.require您的模組。

示例:

<js-module src="socket.js" name="Socket">
    <runs/>
</js-module>

dependency

說明:

在dependency標籤允許你指定在其當前外掛依賴其他外掛。該外掛被其獨特的NPM的ID或URL GitHub的引用。

示例:

<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。這應該引用一個Git倉庫,其中CLI嘗試克隆。

commit:這是git的結帳理解的任何git的參考:一個分支或標記的名稱,(e.g., master, 0.3.1), or a commit hash (e.g., 975ddb228af811dd8bb37ed1dfd092a3d05295f9)

subdir:指定目標外掛存在依賴的Git倉庫的子目錄。這是有幫助的,因為它允許包含幾個相關的外掛庫,每個單獨指定。-----如果設定了dependency>標籤的網址“”。並提供一個子目錄,依賴外掛是從同一個本地或遠端的Git倉庫為指定的dependency標記父外掛安裝。-------請注意,子目錄始終指定相對於git倉庫,不是父外掛的根目錄的路徑。這是真實的,即使你安裝了一個直接本地路徑後援CLI外掛找到Git倉庫的根目錄,然後從那裡找到的其他外掛。

version:該外掛的版本依賴。 Semver句法支援。

plugins-plist

說明:

指定鍵和值將追加到在在iOScordova專案的正確AppInfo.plist檔案。這是過時,因為它僅適用於科爾多瓦-IOS2.2.0及以下。使用config-file標記科爾多瓦的較新版本。

示例:

<plugins-plist key="Foo" string="CDVFoo" />

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:需要 相對於檔案的位置到plugin.xml。如果無法找到的src,CLI的停止並反轉安裝,發出關於該問題的警告,並用一非零程式碼退出。

arch:對於其中的.so檔案已建成的建築,無論是裝置或模擬器。對於Windows,則表示該構建為指定的結構時只應被包括在內。支援的值是86,64或ARM。

info

說明:

向用戶提供更多的資訊。當你需要不容易自動或超出了CLI的範圍,額外的步驟,這是非常有用的。此標記的內容被打印出來的時候,CLI安裝外掛。

示例:

<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當某些行為發生時被呼叫自定義指令碼(例如,外掛新增或平臺準備邏輯後呼叫)。當你需要擴充套件預設cordvoa的功能,這非常有用。

示例:

  <hook type="after_plugin_install" src="scripts/afterPluginInstall.js" />