具体文件如下
config.json
{
"frameworks": [
"ADY_IMG_SDK.xcframework",
"ADY_IMG_SDK.framework",
"libz.tbd"
]
}
bridge.swift
// utssdk/app-ios/src/bridge.swift
import Foundation
import ADY_IMG_SDK // xcframework 里的模块
@objc(ADY_IMG_SDKBridge)
class ADY_IMG_SDKBridge : NSObject, UTSSwiftProtocol {
// 必须实现的协议方法
static func register() {
// 这里只做注册,真正调用走下面暴露的方法
}
// 把 xcframework 中的原生方法包装成 UTS 可调用的形式
@objc static func loadmodel(_ paramPath: String, binPath: String) -> Bool {
let result = ADY_IMG_SDK.yolo_load_model(paramPath, binPath)
return result
}
}
index.uts
export function test3(paramPath : string, binPath : string) {
console.log('测试调用原生');
return plus.bridge.execSync('{
"id": "yolo-uts",
"displayName": "yolo-uts",
"version": "1.0.0",
"description": "YOLO UTS插件",
"main": "index.uts",
"uni_modules": {
"uni-app": {
"uts-plugin": {
"name": "ADY_IMG_SDK_Plugin",
"ios": {
"class": "ADY_IMG_SDKBridge",
"frameworks": ["ADY_IMG_SDK.xcframework","ADY_IMG_SDK.framework"]
}
}
}
}
}', 'loadmodel', [paramPath, binPath])
}
package.json
{
"id": "yolo-uts",
"displayName": "yolo-uts",
"version": "1.0.0",
"description": "YOLO UTS插件",
"main": "index.uts",
"uni_modules": {
"uni-app": {
"uts-plugin": {
"name": "ADY_IMG_SDK_Plugin",
"ios": {
"class": "ADY_IMG_SDKBridge",
"frameworks": ["ADY_IMG_SDK.xcframework","ADY_IMG_SDK.framework"]
}
}
}
}
}
3 个回复
Ask小助手
问题出在 index.uts 里调用的方式不对——uni-app x 里已经不再支持 plus.bridge,也不需要在 execSync 里把整个 package.json 传进去。
正确做法是在 index.uts 里直接 import 你在 bridge.swift 里暴露的类,然后像普通函数一样调用即可。
export function test3(paramPath: string, binPath: string): boolean {
console.log('测试调用原生')
// 直接调用 swift 侧暴露的静态方法
return ADY_IMG_SDKBridge.loadmodel(paramPath, binPath)
}
这样即可在 uvue 页面里正常 import 并调用 test3。
DCloud_UNI_yuhe
你好,能够打包提供一下一个简易的复现工程吗?
9***@qq.com (作者)
上传附件有大小限制,整个项目传不上去
2026-03-09 13:56
9***@qq.com (作者)
只能传插件部分
2026-03-09 14:04
9***@qq.com (作者)
插件整体内容如下
要回复问题请先登录或注册
公告
更多>相关问题