uni-app 按照官方文档里面的ios原生插件开发 项目找不到类
uni-app 按照官方文档里面的ios原生插件开发 项目找不到类
操作步骤:
- 按照 https://nativesupport.dcloud.net.cn/NativePlugin/ 进行原生插件app开发
预期结果:
- 能够正常调用函数
实际结果:
- 无法正常调用函数
bug描述:
- 使用App离线SDK开发原生插件,示例工程运行在模拟器里面出现了
<Weex>[error]WXBridgeContext.mm:1323, jsLog: TypeError: undefined is not an object (evaluating 'o.testAsyncFunc') __ERROR
信息类别 | 详细信息 |
---|---|
产品分类 | HbuilderX |
PC开发环境 | Mac |
PC操作系统版本 | macOS Sequoia 15.1.1 |
HBuilderX版本 | 4.36 |
手机系统 | iOS |
手机系统版本 | iOS 18 |
手机厂商 | 模拟器 |
手机机型 | iPhone16 |
页面类型 | vue |
SDK版本号 | 4.36.2024112817 |
根据示例工程运行起来找不到类,麻烦官方大佬帮忙看下
好像是MyModule所在的framework 没有添加到依赖的包里面。
使用Cocoapods的模版项目进行创建是可以,但是要在 Other Linker Flags里面加$(inherited)
Cocoapods开发参考:https://juejin.cn/post/7127112765293985823
在开发uni-app的iOS原生插件时,如果遇到“项目找不到类”的问题,这通常是由于类定义、文件路径、项目配置或编译缓存的问题导致的。以下是一些排查和解决问题的步骤,以及相关的代码示例,帮助你定位和解决这个问题。
1. 确认类定义和文件路径
首先,确保你的类定义正确,并且文件路径无误。例如,如果你的类名是MyPlugin
,确保你的.h
和.m
文件路径和命名正确。
MyPlugin.h
#import <Foundation/Foundation.h>
@interface MyPlugin : NSObject
- (void)someMethod;
@end
MyPlugin.m
#import "MyPlugin.h"
@implementation MyPlugin
- (void)someMethod {
// 实现方法
NSLog(@"MyPlugin someMethod called");
}
@end
2. 检查Xcode项目配置
确保Xcode项目正确配置了插件的源文件。在Xcode中,打开你的uni-app项目,找到Build Phases
标签,确保你的.m
文件被添加到了Compile Sources
列表中。
3. 更新uni-app原生插件配置
在manifest.json
中,确保你的原生插件配置正确。例如:
"plugins": {
"myPlugin": {
"provider": "wxxxxxxxxxx", // 替换为你的插件ID
"version": "1.0.0",
"platform": "ios"
}
}
4. 清理和重建项目
有时候,Xcode的编译缓存可能会导致此类问题。尝试清理项目(Product
-> Clean Build Folder
)并重新构建。
5. 检查桥接文件
如果你使用的是OC和Swift混编,确保你的桥接文件(Bridging-Header.h
)配置正确,并且包含了必要的OC头文件。
6. 示例代码调用
在你的uni-app的JavaScript代码中,通过plus.ios.importClass
来导入并使用这个类:
const MyPlugin = plus.ios.importClass('MyPlugin');
const myPluginInstance = new MyPlugin();
myPluginInstance.someMethod();
7. 调试和日志
如果以上步骤仍未解决问题,可以通过Xcode的调试功能,查看编译时的详细日志,查找可能的错误信息或警告。
通过上述步骤,你应该能够定位并解决“项目找不到类”的问题。如果问题依旧存在,建议检查是否有最新的uni-app和Xcode更新,或者查阅社区和官方论坛获取更多帮助。