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

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

今天先写到这里了。

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

推荐阅读更多精彩内容