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 如果该文件包含其他名称空间,如要加入到 Android 中的情况下,AndroidManifest.xml 文件标记的 XML,这些命名空间也应包括在该元素(Optional)
id 插件的标识符(Required)
version 插件的版本号(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 引擎的名称(Required)。所支持的默认引擎: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)。除了默认的,也可以指定自定义框架。
version 你的框架必须拥有安装的版本(Required)
scriptSrc 仅适用于自定义的框架,该脚本文件,告诉 plugman 自定义架构的版本。理想情况下,这个文件应该是你的插件目录的顶级目录
platform 仅适用于自定义的框架,需要该平台的框架支持。可以使用通配符 * 表示支持所有的平台,也可以指定多个自己需要的平台

在 <engines> 元素的子元素中指定此插件支持基于科尔多瓦的 Apache 框架版本。

<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>MyPlugin</name>

name 元素用于指定插件的名称。

description

<description>My plugin description</description>

description 元素用于指定插件的描述。此元素不处理本地化。

author

<author>Plugin author</author>

author 元素包含了插件作者的姓名。

keywords

<keywords>plugin,bar,identifier</keywords>

keywords 元素的内容包含逗号分隔的关键字来描述该插件。

license

<license>Apache 2.0 License</license>

license 元素用于指定插件的许可证。

asset

<asset src="www/foo.js" target="foo.js" />
<asset src="www/foo" target="foo" />
// asset 可以设置为有针对性地子目录。这将创建 www 目录内的 js/experimental,除非已经存在,并复制新 foo.js 文件,重命名为 foo.js
<asset src="www/new-foo.js" target="js/experimental/foo.js" />
属性 含义
src 该文件或目录应位于插件包,相对于 plugin.xml 文件(Required)
target 该文件或目录应位于 cordova 应用程序,相对于 www 目录(Required)

asset 元素用来列出文件或目录被复制到 cordova 应用程序的 www 目录。

js-module

// 当安装下面例子中的插件时,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>
属性 含义
src 参考相对 plugin.xml 文件插件目录中的文件
name 提供模块名称的最后一部分

插件包括一个或多个 JavaScript 文件。每个 js-module 标签对应一个 JavaScript 文件。在 platform 嵌套 js-module 声明特定平台的 JavaScript 绑定的模块元素。

clobbers

<js-module src="socket.js" name="Socket">
    <clobbers target="chrome.socket" />
</js-module>
属性 含义
target module.exports 被插入的命名空间

clobbers 元素是 js-module元素内标记,用于指定 module.exports 被插入在 window 对象的命名空间。

merges

<js-module src="socket.js" name="Socket">
    <merges target="chrome.socket" />
</js-module>
属性 含义
target 在这 module.exports 命名空间被合并

merges 元素是 js-module元素内标记,用来指定在哪里 module.exports 命名空间被合并。如果已经存在,模块的版本取代原来的。

runs

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

runs 元素是 js-module 元素内标记。最多只能有一个 runs 标记。如果包括 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,应该引用一个 Git 仓库
commit 一个分支或标记的名称
subdir 指定目标插件存在依赖的 Git 仓库的子目录。它允许包含几个相关的插件库,每个单独指定
version 该插件的版本依赖

dependency 标签用来指定当前插件依赖的其他插件,引用该插件 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 元素标识与插件代码相关联的或需要修改其配置文件的平台。没有 platform 标记的插件被假定可以在任何平台安装。

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 文件的位置
target-dir 复制文件到该指定的相对于 cordova 项目根目录的目录中
framework 默认值:false,iOS 版如果设置为 true,表示增加了指定的文件作为该项目的框架
compiler-flags iOS 如果设置,将指定编译器选项为特定的源文件

source-file 元素标识应安装到项目中的可执行文件的源代码。

header-file

<header-file src="CDVFoo.h" />
属性 含义
src 相对于 plugin.xml 的文件的路径
target 将文件复制到该路径下

header-file 指定源文件的头文件。

resource-file

<!-- android -->
<resource-file src="FooPluginStrings.xml" target="res/values/FooPluginStrings.xml" />
<!-- ios -->
<resource-file src="src/ios/HTJCDataBase.bundle" />
属性 含义
src 相对于 plugin.xml 的文件的路径
target 将文件复制到该路径下

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 指定文件被复制到相对于 cordova 项目根路径的路径。如果指定的文件不存在,就会忽略配置变化,并继续安装
parent 在配置文件中的父元素
after 接受兄弟姐妹的优先列表之后,添加 XML 片段。可用于指定这样的XML元素的严格的顺序

config-file 标识修改基于 XML 的配置文件的内容。

plugins-plist

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

plugins-plist 标识对在 iOS cordova 项目中的 info.plist 文件所做的修改或者添加的新的内容。现在已经过时了,因为它仅适用于科尔多瓦 - 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 相对于 plugin.xml 文件的位置
arch 指定适用的环境,例如真机还是模拟机、支持 86、64 或 ARM

lib-file 标识链接源、资源和头文件。

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 系统框架或者插件文件的相对路径
custom 表示框架是否作为插件文件的一部分
weak 默认值:false,指示该框架是否应弱链接
type 表示框架添加的类型
parent 默认值:应用程序项目,设置系统框架或者插件文件的相对路径

lib-file 标识该插件依赖的框架(通常是系统/平台的一部分)。

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 向用户提供更多的信息。

hook

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

hook 表示当某些行为发生时 cordova 调用自定义脚本(例如:插件添加或平台准备逻辑后调用)。常常用来扩展默认 cordvoa 的功能。

uses-permission

<uses-permission android:name="my-app-id.permission.C2D_MESSAGE"/>
<uses-permission android:name="$PACKAGE_NAME.permission.C2D_MESSAGE"/>

uses-permission 标识插件依赖需要的权限。

Plugman 可以要求用户指定插件必需的变量。例如,对于 C2M 和谷歌地图 API 密钥可以被指定为一个命令行参数:

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 变量的名称
default 变量的默认值。如果存在的话,它的值将被使用,万一用户不输入任何值,并不会产生错误

preference 强制改变变量的值。

plugin.xml 官网

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容