原生插件分類
插件分為2種:
- 原生語言插件
原生語言插件有分為2類:
module API接口插件
這種插件是API插件,有同步或異步APIUI component 組件插件
這種插件是UI視圖組件,需要在nvue頁面上使用
- UTS插件
如果是從插件市場下載的示例項目demo,統(tǒng)一先刷新項目的AppID
1. 集成步驟
1. 插件集成到項目
- 原生語言插件集成
-
在uniapp插件市場的插件詳情頁面,點擊右上角"試用"按鈕,綁定要試用的項目
圖片.png
圖片.png -
在HBuilderX的項目,manifest.json -> App原生插件配置 -> 云端插件里選擇要試用的插件
圖片.png
- UTS插件集成
-
點擊插件網(wǎng)頁右上角“試用”按鈕,接著選擇要試用插件的項目AppId,接著點擊“導(dǎo)入到HBuilderX”,自動打開HBuilderX,選擇項目后會自動下載插件到modules文件夾下
image.png
image.png
image.png
2. 升級項目的應(yīng)用版本名稱和應(yīng)用版本號,這點很重要,不升級的話Android不會安裝自定義基座,具體看安裝自定義基座時的控制臺輸出

image.png
-
如果有本地自定義基座,先刪除本地自定義基座,重新制作自定義基座
圖片.png
圖片.png
圖片.png
-
自定義基座做好后,刪除手機設(shè)備上原有的app,運行基座選擇剛剛做好的自定義基座
image.png
-
先刪除手機上已有的app,然后使用自定義基座運行到手機
圖片.png 開發(fā)和打包
- 開發(fā)測試自定義基座就可以
- 原生App-云打包,原生插件是收費的需要先購買后打包
- 原生App-本地打包(即:離線打包),原生插件是收費的需要先聯(lián)系插件作者取得插件離線包后即成到原生項目里才能打包
需要注意的問題:
- 頁面中需要用到原生插件里的UI組件component(如:<wrs-arcfacevideo></wrs-arcfacevideo>),本頁面需要需要試用nvue,沒有用到原生插件里的UI組件的頁面可以不用nvue,如:
video_recognize.nvue:
<template>
<div>
<wrs-arcfacevideo>
</wrs-arcfacevideo>
</div>
</template>
- 頁面中用到了原生插件的module組件,需要先引入后試用,如:
<script>
// 先引入
var arcface = uni.requireNativePlugin("wrs-arcface");
........
methods: {
activeEngine: function() {
// 后使用
arcface.activeEngine(options, (resp) => {});
}
</script>
打包常見錯誤
- Undefined symbols for architecture arm64: _objc_msgSend$
如:
Undefined symbols for architecture arm64:
\"_objc_msgSend$componentsSeparatedByString:\", referenced from:
-[NSObject(Dictionary) propertyType:] in WRSTuyaPlugin(NSObject+Dictionary.o)
\"_objc_msgSend$containsString:\", referenced from:
-[NSObject(Dictionary) propertyType:] in WRSTuyaPlugin(NSObject+Dictionary.o)
\"_objc_msgSend$stringByReplacingOccurrencesOfString:withString:\", referenced from:
-[NSObject(Dictionary) propertyType:] in WRSTuyaPlugin(NSObject+Dictionary.o)
\"_objc_msgSend$stringWithUTF8String:\", referenced from:
-[NSObject(Dictionary) propertyName:] in WRSTuyaPlugin(NSObject+Dictionary.o)
-[NSObject(Dictionary) propertyType:] in WRSTuyaPlugin(NSObject+Dictionary.o)
這是因為由于ios ide xcode 14以后最低支持ios 11了,xcode 14制作的包在xcode 13就報這個錯
這是因為Xcode14會優(yōu)化減少代碼的二進制,實質(zhì)是通過 objc_msgSend,提取為一個 helper func(selector stub),通過這一優(yōu)化減少了 2%的二進制大小,并且這一優(yōu)化在 Xcode14 自動啟用。所以就導(dǎo)致xcode13無法理解從而報錯。
解決方案
在manifest.json里增加"deploymentTarget" : "11.0"
/* ios打包配置 */
"ios" : {
"idfa" : false,
"privacyDescription" : {
"NSPhotoLibraryUsageDescription" : "選擇圖片使用相冊權(quán)限需要您的授權(quán)",
"NSCameraUsageDescription" : "選擇圖片使用相機權(quán)限需要您的授權(quán)",
"NSPhotoLibraryAddUsageDescription" : "選擇圖片使用相冊權(quán)限需要您的授權(quán)",
"NSMicrophoneUsageDescription" : "選擇圖片使用MIC權(quán)限需要您的授權(quán)"
},
"dSYMs" : false,
"deploymentTarget" : "11.0" //可選,字符串類型,iOS支持的最低版本
},










