- 編寫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原生插件