plugin.xml 解析说明
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.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
元件也可以使用>
,>=
等,以避免重复指定模糊匹配,并且当底层的平台被更新,以减少维护。
在<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#
说明:
在<extension>
项设置要扩展的扩展点,它是非常重要的一项。
point="org.eclipse.ui.actionSets"
,设置了本插件的扩展点为何,
actionSets
是指Eclipse的菜单、菜单项和工具栏按钮的扩展点
<actionSet>
项表示一个action
组(菜单、按钮)。
示例:
<extension point="org.eclipse.ui.actionSets">
<actionSet label="Sample Action Set" visible="true" id="plugintest.actionSet">
<menu label="样本菜单(&M)" id="sampleMenu">
<separator name="sampleGroup"></separator>
</menu>
<action
label="样本操作(&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
设置的效果要将“透视图”关掉再重新打开。
menu#
说明:
menu
是actionSet
下的子项,它表示在Eclipse
中插入显示一个名为“样本菜单(M)”的主菜单。
separator
标签是一个结束符,它可以对菜单分组。
action#
说明:
action
也是actionSet
下的子项,由它设置菜单、按钮。
参数:
id
:是标识符,设置成和class
项一样的名称是个不错的选择。
icon
:是图片的路径
Class
:是按钮所对应的类,注意包名也要加上。
menubarPath
:表示把这个action
做成一个菜单项放在前menu
定义的主菜单下。
toolbarPath
:表示把这个action
再做成一个工具栏按钮。
asset#
说明:
这个元素用来列出文件或目录被复制到cordova
的应用程序的www
目录。嵌套内的任何asset
元素platform
元素指定特定于平台的网络资源。
示例:
<!-- 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
标记为·。
<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
插入的命名空间。
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
与<clobbers/>
或<merges/>
是多余的,因为它们也cordova.require
您的模块。
示例:
<js-module src="socket.js" name="Socket">
<runs/>
</js-module>
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
:OS
如果设置,将指定的编译器选项为特定的源文件
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(如cordova-android@4.0.0的),使用框架的标签,包括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
:默认值:设置到包含子项目在其中添加参考的目录的相对路径。默认。意味着应用程序项目。
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)
, 或 a commit hash (e.g., 975ddb228af811dd8bb37ed1dfd092a3d05295f9)
subdir
:指定目标插件存在依赖的Git
仓库的子目录。这是有帮助的,因为它允许包含几个相关的插件库,每个单独指定。
如果设置了dependency
标签的网址。并提供一个子目录,依赖插件是从同一个本地或远程的Git
仓库为指定的dependency
标记父插件安装。
请注意,子目录始终指定相对于Git
仓库,不是父插件的根目录的路径。这是真实的,即使你安装了一个直接本地路径后援CLI
插件找到Git
仓库的根目录,然后从那里找到的其他插件。
version
:该插件的版本依赖。 Semver
句法支持。
plugins-plist#
说明:
指定键和值将追加到在在iOS cordova
项目的正确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
,则表示该<SDKReference>
构建为指定的结构时只应被包括在内。支持的值是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" />
作者:black-cat
出处:https://www.cnblogs.com/Kylin-lawliet/p/13528006.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!