- 编写package.json文件
iOS 插件包 至少需要包含:package.json文件 和 ios文件夹(名称必须是小写的ios)里面包含 .a (.a库必须是lib开头命名,比如libWeexDCRichAlert.a)或framework。
- 生成.zip包
将DCloud-RichAlert文件夹打成zip包,zip包的名称为(DCloud-RichAlert.zip)然后准备提交插件市场,其中DCloud-RichAlert文件夹名称和package.json 里id的值一致,zip包的名称是id值。
- 如果想要共享给其他开发者,把这个插件提交插件市场
不提交插件市场,也可以把生成的插件放到HBuilderX里,然后提交云端打包使用,提交到云端打包之前确保插件在本地是调试通的,否则云端打包出问题,增加排查问题的难度。
编写原生代码时注意事项
目前 HBuilderX 正式版云端打包机使用的Xcode版本为 10.X,Xcode11.0 及以上版本对@available(, *)的实现做了调整打包后的.a库不兼容低版本的Xcode, 所以如果使用Xcode 11.0及以上版本开发插件并且插件中代码用到了@available(, *)关键字请按下图修改,否则可能导致打包失败。报错 Undefined symbols "___isPlatformVersionAtLeast" (使用 HBuilderX alpha 版本没有此问题,正式版云端打包机近期会更新到最新的Xcode版本)
OKR 499
1 工作时间:14:00-15:00
2 工作目标:
- 商城完善、优化,API对接,UniApp插件
3 工作过程:
- 整理文档,分析源码,编码
4 工作结果
uni-app原生插件(native plugin)开发指南
概述
传统webview的原生扩展是通过webview桥方式,比如5+app。 uni-app的js运行在独立的jscore里,而不是webview里,它的原生扩展是另一套模式,是基于开源项目weex的0.26.0版本架构的扩展机制。
weex的插件也可以拿到uni-app生态中使用。
从开发方式相比,uni-app的原生插件开发模式更简单。webview桥方式需要在原生层和js层分别做很多工作。而uni-app的原生插件开发主要在原生层做封装即可。 从使用方式相比,5+的原生扩展需要离线打包,而uni-app的插件可以在线打包,插件市场还有很多优秀原生插件可拿来即用。
uni-app的原生插件分两种类型:
-
Module模式:能力扩展,无嵌入窗体的UI控件。大部分插件都是属于此类,比如调用计步器API。 代码写法为通过js进行require,然后调用该插件对象的方法。如涉及一些弹出框、全屏ui,也仍然属于Module模式。类似于前端里的js sdk。
-
Component模式:在窗体中内嵌显示某个原生ui组件。比如窗体局部内嵌某个地图厂商的map组件,上下混排其他前端内容,就需要把这个原生地图sdk封装为Componet模式。代码写法与vue组件相同,在template里写组件标签。类似于前端里的vue组件。 在uni-app中支持vue和nvue两种页面,vue页面基于webview排版引擎渲染,nvue页面基于原生排版引擎渲染。
-
vue页面中仅支持使用Module类型的原生插件,不支持调用同步方法返回数据
-
nvue页面中支持使用Module和Component两种类型的原生插件。也就是如需实现嵌入页面的ui组件,前提是该页面需要使用nvue编写。
uni原生插件上线步骤
-
下载5+ SDK配置原生开发环境,在原生环境中开发调试插件业务逻辑
-
Android平台需使用AndroidStudio
-
iOS平台需XCode10+(需Mac环境)
-
-
开发调试完成后导出原生库文件
-
Android平台可以是jar或aar包
-
iOS平台可以是a或framework包
-
-
生成uni原生插件包(zip)
-
配置package.json文件
-
与前面导出的原生库文件一起打包
-
-
在HX中使用uni原生插件包提交云端打包,验证uni原生插件包是否正确
-
上传uni原生插件包到插件市场审核
-
审核成功后其他开发者可购买、使用uni原生插件