c***@coraool.ai
c***@coraool.ai
  • 发布:2026-10-07 14:02
  • 更新:2026-10-07 14:03
  • 阅读:60

【报Bug】liblibUI(PGUI getDeviceInsets / 同步 getSafeAreaInsets

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 27

HBuilderX类型: 正式

HBuilderX版本号: 5.31

手机系统: iOS

手机系统版本号: iOS 26

手机厂商: 苹果

手机机型: iphone17

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

影响所有uts ext内置带有ui的组件

操作步骤:

使用最新版本的sdk,直接调用chooseMedia,crash

预期结果:

正常唤起

实际结果:

crash

bug描述:

5.26的最新升级了ext api库的新打包方式DCloudUTSExtAPI.xcframework,新的 DCloudUTSExtAPI.xcframework。uni.chooseMedia 在新包里会走 Weex refreshWeex → 桥线程同步问安全区。

但由于liblibUI.a的老bug一直没改,DCloud 的 plus PGUI,getSafeAreaInsets / getDeviceInsets)。它在 非主线程 读了 UIView。直接crash退出进程。

uni.chooseMedia(日志里的 media-picker-utils 选视频)→ UTS 的 s_chooseMediaByJs 打开相册/相机 → Weex refreshWeex → 同步 plus:JSWindow_Sync_getSafeAreaInsets → PGUI getDeviceInsets:p:w: → 在 WXBridgeManager _runLoopThread 上读了一个没有 ViewController 的 UIView。

2026-10-07 14:02 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app x技术交流群 ) 咨询,群中有相关专业的管理员和群友。

感谢提交这份 bug 反馈,以下从官方视角对这份反馈做评审。

一、反馈完整性评审

  1. 问题描述:技术方向描述较清晰,给出了 uni.chooseMedia → s_chooseMediaByJs → Weex refreshWeex → JSWindow_Sync_getSafeAreaInsets → PGUI getDeviceInsets:p:w: 的调用链,并指出"非主线程读取 UIView"这一怀疑点,对定位有参考价值。但缺少最关键的材料——完整的崩溃日志/堆栈。你描述中的内部调用链(plus、WXBridgeManager 等)应来自崩溃堆栈或调试日志,请将原始崩溃日志以文本形式直接粘贴出来(我无法识别附件,请勿以附件形式提供),否则无法确认崩溃点确实落在 PGUI 跨线程访问 UIView 上。

  2. 代码示例:目前只有一句"影响所有uts ext内置带有ui的组件",不构成可运行的代码示例。请提供一个最小可复现工程或最小页面代码,确保官方拿到后无需调整即可直接运行复现。

  3. 复现步骤:"使用最新版本的sdk,直接调用chooseMedia,crash"过于简略,按此步骤官方无法保证复现成功,请补充:

    • 项目类型:uni-app x 还是 uni-app?页面类型是什么?
    • HBuilderX 版本存在矛盾:你填写的是"正式版 5.31",但当前正式版为 5.26.2026091802,5.31 对应的是 Alpha 渠道版本;而描述中又提到"5.26 的最新升级了 ext api 库"。请明确实际编译/打包所用的 HBuilderX 具体版本号和渠道(Alpha/正式)。
    • "最新版本的sdk"具体指什么:云端打包的标准基座/自定义基座,还是离线打包使用的 iOS SDK?若为离线打包,请给出 SDK 版本号。
    • iOS 26 真机还是模拟器;是否 100% 稳定复现;是否仅选择视频触发,选择图片是否同样触发。
    • "PC开发环境操作系统版本号:27"含义不明,请补充完整的 macOS 版本号。
  4. 预期结果:合理(正常唤起相册/相机)。

  5. 实际结果:crash 的结论目前是"现象+推断",需崩溃日志佐证后才能定性。

二、bug 是否成立的初步判断

  • 在现有已知问题记录中,暂未检索到与"liblibUI PGUI getDeviceInsets / getSafeAreaInsets 非主线程读取 UIView 导致 crash"直接匹配的已知问题,因此无法确认该问题已被记录或已有结论。
  • 你提到的方向(iOS 上 UIView 的访问需在主线程进行)符合 iOS 原生开发的基本规则,但这是对 DCloud SDK 内部实现的判断,是否成立需要官方结合完整崩溃堆栈、可复现工程和对应版本源码确认,仅凭当前描述无法下定论,也无法给出修复方案或规避方案;在 issue 确认前,不建议自行猜测规避方式,以免掩盖真实触发条件。

三、后续建议

  1. 按上述清单补充:完整崩溃堆栈文本、最小可复现工程、明确的 HBuilderX 版本与打包方式、复现概率。
  2. 补齐后请通过官方 issues 系统提交(uni-app x 相关问题使用 DCloud 自建 issue 系统):https://issues.dcloud.net.cn/ ,提交后会有专人跟进处理。

总体评价:这份反馈的技术分析深度不错,但作为 bug 报告的关键证据(崩溃日志、可运行示例、准确的版本与打包信息)尚不完整,建议补齐后再提交 issues,以便加快确认和处理。

内容为 AI 生成,仅供参考

要回复问题请先登录或注册