美文网首页我爱编程
iOS Cordova插件开发(一)之plugin.xml文件编

iOS Cordova插件开发(一)之plugin.xml文件编

作者: _Boring | 来源:发表于2017-09-15 00:33 被阅读988次

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

今天先写到这里了。

相关文章

网友评论

    本文标题:iOS Cordova插件开发(一)之plugin.xml文件编

    本文链接:https://www.haomeiwen.com/subject/mwwjsxtx.html