iOS Cordova插件开发之plugin.xml文件编写
plugin.xml文件的编写对于新手来说,是我觉得最难搞的。
阅读目录
一、plugin.xml文件的作用
二、必要元素的解释
三、依赖文件的引入格式
一、plugin.xml文件的作用
Cordova插件中觉文件定义了你的插件所需的结构和设置。
-
例如:
1)最终形成文件的结构。说白了,就是文件最后分布层次
2)插件名、插件版本、作者信息、适用平台(iOS或andirod)
3)js或ts文件的指向和绑定,js或ts文件主要是给前端人员调用
、、、、、、
二、必要元素的解释
栗子:(下面我会一一解释它们的作用)
<?xml version="1.0" encoding="UTF-8" ?>
<plugin xmlns="http://phonegap.com/ns/plugins/1.0"
id="com.will.cordovaPlugin"
version="1.0.0">
<engines>
<engine name="cordova" version=">=3.3.0" />
</engines>
<name>XFPlugin</name>
<description>测试插件</description>
<author>Will</author>
<keywords>voice,video,record</keywords>
<js-module src="www/willPlugin.js" name="WillModel">
<clobbers target="testModel" />
</js-module>
<platform name="ios">
<config-file target="config.xml" parent="/*">
<feature name="XFPlugin">
<param name="ios-package" value="XFPlugin" />
</feature>
</config-file>
</platform>
</plugin>
plugin
这个plugin元素是插件清单的顶级元素。
- xmlns:Required该插件的命名空间
- id:A npm-style 标识符插件
- version:该插件的版本号
engines
在<engines>元素的子元素指定此插件支持基于Cordova的Apache框架版本。该CLI中止与任何插件,其目标项目不符合engines的约束非零代码。如果没有指定标签,则CLI尝试安装到指定的cordova项目目录。
- name:引擎的名称。默认的引擎名可以在网上查到,当然也可以自定义
- version:框架必须拥有安装的版本,也可以使用'>','>='等,以避免重复指定模糊匹配
name
name元素用于指定插件的名称
description
描述元素用于指定插件的描述,此元素不处理本地化。
author
元素包含了插件作者的姓名。
keywords
元素的内容包含逗号分隔的关键字来描述该插件。
js-module
正常来说插件都会包括一个或多个js/ts文件。每个js-module标签对应一个js/ts文件,会自动生成到你指定的目录下。吸入js-module在platform声明特定平台的js/ts文件绑定的模块元素,同时前端可直接通过js/ts输出的接口或对象直接调用插件功能。
- src:写入文件路径及文件名
- name:定义的对象名,可以参考我上传的测试插件
- clobbers:JS-module元素内标记。用于指定module.exports被插入在window对象的命名空间。
- target:module.exports被插入的命名空间。你可以通过window.chrome.testModel来调用js/ts文件里的方法,从而调用插件
js-platform
标识具有相关联的本机代码或需要修改其配置文件的平台。工具使用这个规范可以识别支持的平台和代码安装到cordova项目。无platform标记插件被假定为JavaScript的唯一的,因此在任何和所有平台安装。
- name:允许值:ios, android, blackberry10, amazon-fireos, wp8, windows标识为支撑,其子元素与平台相关联的平台。
三、依赖文件的引入格式
这里是重头戏。我一度在这里差点就放弃了,实在是在网上找的教程都失败了,而且众说纷纭,几乎每个人写的都不一样,最后没办法,一个个给试了出来。
太晚了,先写直接贴代码,下次有时间详细说。下面是我写的一个测试插件,因为倒入了两个第三方库,所以看起来很多。
<header-file src="src/ios/Definition.h" />
<header-file src="src/ios/IATConfig.h" />
<source-file src="src/ios/IATConfig.m" />
<header-file src="src/ios/ISRDataHelper.h" />
<source-file src="src/ios/ISRDataHelper.m" />
<header-file src="src/ios/PlayerViewController.h" />
<source-file src="src/ios/PlayerViewController.m" />
<header-file src="src/ios/TTSConfig.h" />
<source-file src="src/ios/TTSConfig.m" />
<header-file src="src/ios/XFPlugin.h" />
<source-file src="src/ios/XFPlugin.m" />
<header-file src="src/ios/XFTool.h" />
<source-file src="src/ios/XFTool.m" />
<!--讯飞依赖-->
<framework src="src/ios/iflyMSC.framework" custom="true" />
<!--优酷云依赖-->
<resource-file src="src/ios/YouTuEngineMediaPlayer/cloud.bundle" />
<resource-file src="src/ios/YouTuEngineMediaPlayer/libYouTuMediaPlayerEngineYouku.a"/>
<resource-file src="src/ios/YouTuEngineMediaPlayer/yw_1222_0335_mwua.jpg" />
<framework src="src/ios/library/BCUserTrack/UTMini.framework" custom="true" />
<framework src="src/ios/library/SecurityGuardSDK/SecurityGuardSDK.framework" custom="true" />
<framework src="src/ios/library/SGAVMP/SGAVMP.framework" custom="true" />
<framework src="src/ios/library/SGMain/SGMain.framework" custom="true" />
<framework src="src/ios/library/SGSecurityBody/SGSecurityBody.framework" custom="true" />
<source-file src="src/ios/library/UTDID/UTDID.framework" framework="true" />
<resource-file src="src/ios/library/Reachability/LICENCE.txt" />
<resource-file src="src/ios/library/Reachability/README.md" />
<header-file src="src/ios/library/Reachability/Reachability.h" />
<source-file src="src/ios/library/Reachability/Reachability.m" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YoukuMediaPlayer.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTDownloadDefine.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTDownloadManager.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTDownloadTaskModel.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTEngineOpenViewManager.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTLocalMedia.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YTSequence.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayer.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerBackgroundModeManager.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerDefines.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerEvents.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerException.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerHistory.h" />
<header-file src="src/ios/YouTuEngineMediaPlayer/YouTuMediaPlayerEngineYoukuHeaders/YYMediaPlayerItem.h" />
<!--系统依赖-->
<framework src="libz.tbd" />
<framework src="libresolv.9.tbd" />
<framework src="libiconv.2.tbd" />
<framework src="libxml2.2.tbd" />
<framework src="libbz2.1.0.tbd" />
<framework src="libc++.1..tbd" />
<framework src="libsqlite3.tbd" />
<framework src="libicucore.tbd" />
<framework src="libc++.tbd" />
<framework src="libz.tbd" />
<framework src="VideoToolbox.framework" />
<framework src="CoreMedia.framework" />
<framework src="OpenGLES.framework" />
<framework src="CoreText.framework" />
<framework src="AdSupport.framework" />
<framework src="MediaPlayer.framework" />
<framework src="EventKit.framework" />
<framework src="MessageUI.framework" />
<framework src="Social.framework" />
<framework src="MobileCoreServices.framework" />
<framework src="CoreMotion.framework" />
<framework src="ModellO.framework" />
<framework src="CoreGraphics.framework" />
<framework src="QuartzCore.framework" />
<framework src="AddressBook.framework" />
<framework src="Contacts.framework" />
<framework src="CoreLocation.framework" />
<framework src="UIKit.framework" />
<framework src="AudioToolbox.framework" />
<framework src="CoreTelephony.framework" />
<framework src="Foundation.framework" />
<framework src="SystemConfiguration.framework" />
<framework src="AVFoundation.framework" />
今天先写到这里了。