x***@126.com
x***@126.com
  • 发布:2026-09-04 17:34
  • 更新:2026-09-08 14:15
  • 阅读:435

【报Bug】ios使用 xcode 本地打包打出来的自定义基座 报 uni.chooseMedia is not a function.

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: MacBook Pro (Retina, 15-inch, Mid 2014)

HBuilderX类型: 正式

HBuilderX版本号: 5.15

手机系统: iOS

手机系统版本号: iOS 17

手机厂商: 苹果

手机机型: iphone 14pro

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

当前使用
console.log('[uts-api]', {
'chooseMedia': typeof uni.chooseMedia,
'getAppAuthorizeSetting': typeof uni.getAppAuthorizeSetting,
'getDeviceInfo': typeof uni.getDeviceInfo,
'getAppBaseInfo': typeof uni.getAppBaseInfo,
'getNetworkType': typeof uni.getNetworkType,
'getSystemInfo': typeof uni.getSystemInfo,
'getSystemSetting': typeof uni.getSystemSetting,
'network': typeof uni.network,
'openAppAuthorizeSetting': typeof uni.openAppAuthorizeSetting,
'privacy': typeof uni.privacy,
'prompt': typeof uni.prompt,
'storage': typeof uni.storage,
})
好多方法都是undefined 原生打包配置工程里面都在报undefined
{
"chooseMedia": "undefined",
"getAppAuthorizeSetting": "function",
"getDeviceInfo": "function",
"getAppBaseInfo": "function",
"getNetworkType": "function",
"getSystemInfo": "function",
"getSystemSetting": "function",
"network": "undefined",
"openAppAuthorizeSetting": "function",
"privacy": "undefined",
"prompt": "undefined",
"storage": "undefined"
}

操作步骤:

使用5.15HB 和 ios的sdk来进行离线打包 来进行上传图片或者视频,报‌TypeError: uni.chooseMedia is not a function.

预期结果:

可以正常弹出来拍照,录像,选择相册的方法

实际结果:

当前不行

bug描述:

‌TypeError: uni.chooseMedia is not a function.

当前已经配置DCloudUTSExtAPI.framework
App 模块配置 中勾选了 Camera & Gallery(相机和相册) 模块
Xcode里面也有CameraGallery

2026-09-04 17:34 负责人:DCloud_iOS_WZT 分享
已邀请:
Ask小助手

Ask小助手

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

感谢您的反馈。针对您提交的关于 iOS 离线打包后 uni.chooseMedia is not a function 的 Bug 报告,我们进行了详细的评审与分析,以下是评审意见及排查建议:

1. Bug 反馈内容完整性评审

  • BUG 描述:描述非常清晰,明确指出了报错信息以及当前已配置的依赖项(DCloudUTSExtAPI.framework 和 Camera & Gallery 模块),有助于官方人员快速定位问题背景。
  • 代码示例:提供了完整的 console.log 测试代码及输出结果,可以直接运行,无需官方人员二次调整。
  • 复现步骤:步骤描述清晰,结合提供的代码示例,官方人员可以明确复现操作路径。
  • 预期结果与实际结果:预期结果合理,实际结果如实反映了当前遇到的阻塞问题。
  • 分类信息:完整包含了 PC 环境、HBuilderX 版本号、手机系统版本、设备机型及 Vue 版本等信息。
  • 附件说明:请注意,我无法识别和查看附件内容。如果后续有截图或日志需要补充,请直接以文本形式粘贴在回复中。

2. Bug 是否成立及排查建议

结合官方文档及历史排查经验,该 Bug 的直接表现是 uni.chooseMedia 未被正确挂载到 JS 上下文中。请按照以下方向进行排查:

(1)确认 HBuilderX 与 iOS 离线 SDK 版本是否严格一致
在进行 iOS 离线打包时,要求 HBuilderX 版本与下载的 iOS 离线打包 SDK 版本完全一致。如果 HBuilderX 升级了,但 Xcode 工程中的 SDK 未全量替换更新,可能会导致部分 API(如 uni.chooseMedia)缺失。请确认当前使用的 iOS SDK 版本是否与您的 HBuilderX 版本完全匹配,并确保所有依赖库已全量替换。

(2)确认 Xcode 工程中 UTS 扩展模块的依赖配置
根据官方文档说明,uni.chooseMedia 属于 UTS 内置模块(uni-chooseMedia)。在 iOS 离线打包中,如果要在 JS 逻辑层或 UTS 插件中使用该 API,不仅需要在 manifest.json 中勾选“Camera & Gallery(相机和相册)”模块,还需要在 Xcode 主工程中正确添加并配置 DCloudUTSExtAPI.framework。
请检查 Xcode 工程中该 framework 的引入方式是否正确:必须设置为 Embed & Sign(嵌入并签名),如果仅是普通的 Do Not Embed 引入,会导致运行时找不到该模块从而报 undefined。

(3)清理 Xcode 缓存重新编译
如果依赖配置均正确,建议在 Xcode 中执行 Clean Build Folder(快捷键 Shift + Cmd + K),清理 DerivedData 缓存后,重新编译打包自定义基座运行测试。

3. 替代方案

如果当前急需实现拍摄和从相册选择图片/视频的功能,在排查上述配置问题的同时,您可以使用 uni.chooseImage 和 uni.chooseVideo 作为替代方案。这两个 API 在 App 端支持良好,且不依赖于 UTS 扩展模块配置,可以满足大部分的媒体选择需求。

感谢您对 DCloud 产品的支持,希望以上排查建议能帮助您解决问题。

内容为 AI 生成,仅供参考
DCloud_iOS_WZT

DCloud_iOS_WZT

离线SDK 升级到5.25试一下

  • x***@126.com (作者)

    正式版不是才到5.24么?并且5.24里面DCloudUTSExtAPI.framework 这个方法被删除了,我下载了之后sdk文件里面都没有见到这个方法

    2026-09-08 13:56

  • DCloud_iOS_WZT

    回复 x***@126.com: 我看下哈 稍等重新发一个SDK

    2026-09-09 09:40

  • x***@126.com (作者)

    回复 DCloud_iOS_WZT: 你们先测试下有没有对应的方法把,这个功能不支持的话把官方文档更新一下,不要在官方文档里面放假的啊

    2026-09-09 17:26

  • DCloud_iOS_WZT

    回复 x***@126.com: 重新下载一下

    2026-09-09 19:33

1***@163.com

1***@163.com

5.24也是一样的问题,并且,uniapp.podspec的version写的5.22.0,uni-jsframework-vue3-dev.js这个文件的version变成4.44导致启动弹框,感觉现在离线SDK版本完全是乱的。

  • DCloud_iOS_WZT

    重新下载一下 uniapp.podspec中的version 没有用途

    2026-09-09 19:32

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