uni-app IOS 原生插件调用本地framework库 读取不到函数

uni-app IOS 原生插件调用本地framework库 读取不到函数
DCTestUniPlugin TestModule.m 中引用了第三方库,打包时检测不到。

部分打包日志:

ld: warning: arm64 function not 4-byte aligned: _dc_ffi_call_SYSV from [SourcePath]/libs/UniSDK/liblibPGInvocation.a(sysv_arm64.o)
ld: warning: arm64 function not 4-byte aligned: _ffi_closure_SYSV from [SourcePath]/libs/UniSDK/liblibPGInvocation.a(sysv_arm64.o)
Undefined symbols for architecture arm64:
"_CompressionThreshold_NL2", referenced from:
-[TestModule lmsToNal:] in DCTestUniPlugin(TestModule.o)  

由于不包含第三方库不包含 x86,无法打包自定义基座。

Image Image


更多关于uni-app IOS 原生插件调用本地framework库 读取不到函数的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app IOS 原生插件调用本地framework库 读取不到函数的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app 中调用 IOS 原生插件并读取本地 framework 库中的函数时,如果读取不到函数,可能是由于几个常见原因造成的,例如 framework 引用不正确、插件注册有误、或者函数声明/调用不匹配等。以下是一个简化的代码案例,展示如何在 uni-app 中正确配置和调用 IOS 原生插件的函数。

1. 创建 IOS 原生插件

首先,创建一个 IOS 原生插件,并在其中引用本地 framework。

MyPlugin.h

#import <Foundation/Foundation.h>
#import <MyFramework/MyFramework.h> // 假设 MyFramework 是你的本地 framework

@interface MyPlugin : NSObject

- (NSString*) callMyFrameworkFunction:(NSString*)param;

@end

MyPlugin.m

#import "MyPlugin.h"

@implementation MyPlugin

- (NSString*) callMyFrameworkFunction:(NSString*)param {
    MyFrameworkClass *frameworkInstance = [[MyFrameworkClass alloc] init];
    return [frameworkInstance someFunctionInFramework:param];
}

@end

2. 注册插件到 uni-app

manifest.json 中注册插件,并确保 IOS 配置正确。

{
  "mp-weixin": {},
  "app-plus": {
    "distribute": {},
    "plugins": {
      "MyPlugin": {
        "version": "1.0.0",
        "provider": "wxxxxxxxxxx" // 替换为你的插件提供者ID
      }
    }
  },
  "h5": {},
  "plugins": {
    "MyPlugin": {
      "ios": {
        "package": "com.example.myplugin",
        "className": "MyPlugin"
      }
    }
  }
}

3. 在 uni-app 中调用插件

在 JS 代码中调用插件方法。

main.js

#ifdef APP-PLUS
plus.bridge.exec('MyPlugin', 'callMyFrameworkFunction', ['yourParam'], (res) => {
    console.log('Result from native:', res);
}, (e) => {
    console.error('Error calling native:', e);
});
#endif

4. 确保 framework 正确链接

在 Xcode 中,确保你的 framework 已经被正确添加到项目的 Link Binary with Libraries 中,并且 Build Settings 中的 Framework Search Paths 包含了 framework 的路径。

5. 调试和测试

  • 确保所有配置正确无误。
  • 使用 Xcode 运行应用,查看控制台输出,检查是否有关于 framework 加载失败的错误。
  • 确保 framework 中的函数名与插件中的调用一致。

通过上述步骤,你应该能够在 uni-app 中成功调用 IOS 原生插件并读取本地 framework 库中的函数。如果仍然遇到问题,建议检查 Xcode 的构建日志,查找可能的链接或编译错误。

回到顶部