UniApp 原生插件接入步驟

原生插件分類

插件分為2種:

  1. 原生語言插件
    原生語言插件有分為2類:
  • module API接口插件
    這種插件是API插件,有同步或異步API

  • UI component 組件插件
    這種插件是UI視圖組件,需要在nvue頁面上使用

  1. UTS插件

如果是從插件市場下載的示例項目demo,統(tǒng)一先刷新項目的AppID

1. 集成步驟

1. 插件集成到項目

  1. 原生語言插件集成
  • 在uniapp插件市場的插件詳情頁面,點擊右上角"試用"按鈕,綁定要試用的項目


    圖片.png

    圖片.png
  • 在HBuilderX的項目,manifest.json -> App原生插件配置 -> 云端插件里選擇要試用的插件


    圖片.png
  1. UTS插件集成
  • 點擊插件網(wǎng)頁右上角“試用”按鈕,接著選擇要試用插件的項目AppId,接著點擊“導(dǎo)入到HBuilderX”,自動打開HBuilderX,選擇項目后會自動下載插件到modules文件夾下


    image.png

    image.png

    image.png

2. 升級項目的應(yīng)用版本名稱和應(yīng)用版本號,這點很重要,不升級的話Android不會安裝自定義基座,具體看安裝自定義基座時的控制臺輸出

image.png
  1. 如果有本地自定義基座,先刪除本地自定義基座,重新制作自定義基座


    圖片.png

    圖片.png

    圖片.png
  1. 自定義基座做好后,刪除手機設(shè)備上原有的app,運行基座選擇剛剛做好的自定義基座


    image.png
  1. 先刪除手機上已有的app,然后使用自定義基座運行到手機


    圖片.png
  2. 開發(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>

打包常見錯誤

  1. 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支持的最低版本
            },
            
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容