uni-app iOS 启动的时候报错 exchHookMethods报错

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app iOS 启动的时候报错 exchHookMethods报错

Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘+[WKWebView exchHookMethods]: unrecognized selector sent to class 0x208d880a0’

First throw call stack: (0x1a7ebcf20 0x19fd42018 0x1a7fc6328 0x1a7e59fb4 0x1a7e598d0 0x100c88de8 0x100c887f8 0x1008a8b64 0x1aa5807e4 0x1aa57dd20 0x1aa44c7c0 0x1aa3ffa0c 0x1aa2f27c4 0x1aa4c52ac 0x1aa4c4fbc 0x1aa25441c 0x1aa221650 0x1aa220f78 0x1aa220924 0x1aa21ff64 0x1aa2f3d3c 0x1aa2f2574 0x1aa2f1ecc 0x1aa3bce7c 0x1aa3b99e0 0x1aa3b9600 0x1c0b39974 0x1c0b39808 0x1c0b356cc 0x1c0b39cc4 0x1024e67bc 0x1024ea1f0 0x1c0b36d58 0x1c0b36cd8 0x1c0b36bb0 0x1a7e8f834 0x1a7e8f7c8 0x1a7e8d2f8 0x1a7e8c484 0x1a7e8bcd8 0x1ecd3c1a8 0x1aa4c490c 0x1aa5789d0 0x100977b80 0x1cb53de4c)

libc++abi: terminating due to uncaught exception of type NSException


1 回复

在处理 uni-app 开发中遇到的 iOS 启动报错,特别是涉及 exchHookMethods 的错误时,通常这可能与原生插件或框架的某些方法被错误地重写或拦截有关。以下是一些可能的解决方案和代码示例,旨在帮助你定位并解决问题。请注意,这些代码示例基于常见的错误场景,具体情况可能需要调整。

1. 检查原生插件

首先,确认是否有安装或更新了任何原生插件,这些插件可能在 iOS 平台上引入了不兼容的更改。你可以检查 plugins 目录下的原生代码,特别是与 AppDelegateUIViewController 相关的部分。

2. 清理和重建项目

有时候,简单的清理和重建项目可以解决缓存或编译问题。

# 清理项目
cd /path/to/your/uni-app-project
npm run clean

# 重建项目
npm run dev:mp-weixin  # 或者你目标平台的命令

对于 iOS,确保在 Xcode 中执行 Clean Build Folder

3. 检查 AppDelegate 的实现

exchHookMethods 错误可能与 AppDelegate 中的方法被不当地覆盖有关。检查你的 AppDelegate.mAppDelegate.swift 文件,确保没有错误地重写或覆盖了 uni-app 框架需要的方法。

4. 原生代码审查

如果错误发生在原生代码层,你可能需要审查相关的 Objective-C 或 Swift 代码。例如,查找所有提到 exchHookMethods 的地方,看是否有不当的使用。

// 假设在某处不当地修改了方法实现
// 错误示例(仅用于说明问题,实际代码可能不同)
- (void)someMethod {
    // 不正确地交换或修改了方法实现
    [self exchHookMethods]; // 假设这是导致问题的调用
}

5. 使用最新的 uni-app 和依赖

确保你使用的 uni-app 和所有相关依赖都是最新版本。旧版本的框架或插件可能包含已知的错误。

# 更新 uni-app CLI
npm install -g @dcloudio/uni-cli

# 更新项目依赖
cd /path/to/your/uni-app-project
npm update

6. 查看日志和错误信息

详细查看 Xcode 的控制台输出和日志,可能会有更具体的错误信息或堆栈跟踪,这有助于进一步定位问题。

如果上述步骤仍未能解决问题,建议查阅 uni-app 的官方文档、社区论坛或提交 issue 到官方仓库,寻求更专业的帮助。

回到顶部