DCloud_App_Array
DCloud_App_Array
  • 发布:2018-12-28 17:41
  • 更新:2021-08-04 14:15
  • 阅读:110337

uni-app原生插件(native plugin)开发指南

分类:uni-app

新版原生插件开发文档已发布,请移步:https://nativesupport.dcloud.net.cn/

此文档将不再更新维护

概述

传统webview的原生扩展是通过webview桥方式,比如5+app。
uni-app的js运行在独立的jscore里,而不是webview里,它的原生扩展是另一套模式,是基于开源项目weex0.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原生插件

uni-app原生插件开发

Android平台uni-app原生插件开发文档
iOS平台uni-app原生插件开发文档

插件开发在调测时,可能会超过40M的免费打包额度。如插件开发是为了上插件市场而不是内部使用,则可以在成功上架市场后,申请退费,返还测试产生的超限打包费用。

uni-app原生插件市场

原生插件开发后,可以上插件市场,也可以不上。如内部使用,则无需上架插件市场。

如需上插件市场,则必须按指定格式压缩为zip包,具体参考:uni-app原生插件格式说明文档

插件下架:插件下降会导致已经使用该插件的app无法再打包,这涉及到插件使用者的利益,所以原则上不允许插件下架。如有特殊原因需要下架请使用注册账号邮箱发邮件到service@dcloud.io进行申请,并详细描述下架原因

插件更新:插件作者需注意保持好版本质量和向下兼容。一旦提交市场新版插件,旧版插件就不能再使用。已经使用旧版插件的App,此后再次云打包,会直接集成新版插件。也就是插件的更新不当可能造成已经使用插件的开发者无法及时发布新版应用。

uni-app原生插件使用

uni-app原生插件使用说明文档
HBuilderX中使用本地uni-app原生插件提交云端打包
uni-app原生插件使用常见问题

原生离线打包集成 uni 插件文档

Android平台本地(离线)打包集成 uni-app原生插件
iOS平台本地(离线)打包集成 uni-app原生插件

欢迎有原生开发能力的朋友入群一起交流学习(入群请提供注册邮箱):

DCloud原生开发者群:
1群:256775471
2群:814228233
3群:455763866

6 关注 分享
DCloud_iOS_XHY Trust 虫雪浓 执笔流年 one11onew 逆风er行

要回复文章请先登录注册

2***@qq.com

2***@qq.com

回复 2***@qq.com :
兄弟你弄好了吗
2021-08-04 14:15
g***@163.com

g***@163.com

id绑定错误能修改吗
2021-08-03 10:14
z***@qq.com

z***@qq.com

插件多久才能审核通过?
2021-06-10 11:51
1***@qq.com

1***@qq.com

回复 2***@qq.com :
uniapp的没有做过,原生做过
2021-03-12 17:16
2***@qq.com

2***@qq.com

回复 1***@qq.com :
有没有做过 facebook 和 twitter 的登录 我最近一直在找
2021-03-12 17:05
1***@qq.com

1***@qq.com

回复 2***@qq.com :
是的,原生就做过当时是采用第三方SDK实现的,不过没啥用,国内用户 几乎不会使用的,服务器是国内,面向国内市场。
2021-03-12 17:00
2***@qq.com

2***@qq.com

回复 1***@qq.com :
有点仿 那个视频里的东西 第一季是 糗事百科 第二季那个 社交类的 差不多
2021-03-12 15:33
1***@qq.com

1***@qq.com

我的个人项目已经上线啦,感谢uniapp,欢迎一起学习,老铁们,家用啊
1、Android的(软著没申请下来,暂时上不了架):http://d.firim.top/tc7b?utm_source=fir&utm_medium=qrhttp://d.firim.top/tc7b?utm_source=fir&utm_medium=qr
2、iOS已经上架:猫云
2021-03-12 11:55
2***@qq.com

2***@qq.com

有没有 facebook twitter 的登录和 分享
2021-03-12 11:39
DCloud_App_Array

DCloud_App_Array (作者)

回复 SOHO :
打包后会把配置的参数放到AndroidManifest.xml的meta节点中,读取meta节点数据是Android的基础知识,请自己搜索了解。
2020-04-30 12:37