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 强制改变变量的值。