uni-app plus.gallery.pick iOS端选择单张照片点击完成时闪退报错空指针

uni-app plus.gallery.pick iOS端选择单张照片点击完成时闪退报错空指针

操作步骤:

  • plus.gallery.pick选择单张照片,选择一张照片,点击完成

预期结果:

  • 返回上传图片

实际结果:

  • 崩溃,空指针

bug描述:

plus.gallery.pick选择照片,崩溃如图所示,选择单张照片,点击完成即崩溃,日志如下:

2021-08-31 18:40:10.668521+0800 TeacherTrain[44665:14670327] Failed to load font: 未能完成操作。(com.apple.CoreText.CTFontManagerErrorDomain错误105 - Could not register the CGFont '<CGFont (0x2818e4200): io_dcloud_5app_titlenview_iconfont>')
2021-08-31 18:40:16.870056+0800 TeacherTrain[44665:14670327] Metal GPU Frame Capture Enabled
2021-08-31 18:40:16.877098+0800 TeacherTrain[44665:14670327] Metal API Validation Enabled
2021-08-31 18:40:16.954915+0800 TeacherTrain[44665:14670327] fopen failed for data file: errno = 2 (No such file or directory)
2021-08-31 18:40:16.955122+0800 TeacherTrain[44665:14670327] Errors found! Invalidating cache...
2021-08-31 18:40:17.038534+0800 TeacherTrain[44665:14671327] Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ' -[<NSArrayM insertObject:atIndex:]: object cannot be nil'
First throw call stack:
(0x1a899e708 0x1bd4a87a8 0x1a8a109c8 0x1a8a0df4c 0x1a8877b5c 0x10573a5e0 0x10573a84c 0x105b5e0ec 0x105b60990 0x114c7c0b4 0x114c7dde0 0x114c80ed0 0x114c801d8 0x114c91e30 0x114c927ec 0x1f472a768 0x1f473174c)
libc++abi: terminating with uncaught exception of type NSException
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[<NSArrayM insertObject:atIndex:]: object cannot be nil'
terminating with uncaught exception of type NSException

bug截图

开发环境 版本号 项目创建方式
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 10
手机系统 iOS
手机系统版本号 IOS 14
手机厂商 苹果
手机机型 12 pro max
页面类型 vue
打包方式 离线
项目创建方式 HBuilderX

更多关于uni-app plus.gallery.pick iOS端选择单张照片点击完成时闪退报错空指针的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

复现的代码或者demo发一下

更多关于uni-app plus.gallery.pick iOS端选择单张照片点击完成时闪退报错空指针的实战教程也可以访问 https://www.itying.com/category-93-b0.html


用官方基座测试下,我这边没有复现问题

这个问题通常是由于iOS系统在访问相册时,某些照片的元数据(如地理位置、拍摄信息等)为nil,导致在插入数组时引发空指针异常。以下是几种解决方案:

  1. 更新HBuilderX和uni-app原生插件:确保使用最新版本的HBuilderX(建议3.2.13+)和对应的uni-app原生插件,官方可能已修复此问题。

  2. 检查相册权限配置:在manifest.json中确认已正确配置相册访问权限(NSPhotoLibraryUsageDescription),并描述使用目的。

  3. 使用临时解决方案:在调用plus.gallery.pick时,尝试添加multiple: false参数,并确保在回调函数中处理可能的空值:

    plus.gallery.pick(res => {
      if (res && res.files && res.files.length > 0) {
        // 处理图片
      }
    }, err => {
      console.error('选择失败:', err);
    }, { multiple: false });
    
  4. 检查自定义字体:日志中提示字体加载失败(io_dcloud_5app_titlenview_iconfont),可能是自定义字体文件缺失或路径错误,移除或修复字体配置有时可间接解决此问题。

  5. 降级测试:如果问题仅出现在iOS 14+,可尝试在manifest.jsoniOS配置中设置targetSdkVersion为较低版本(如13),但需注意可能影响新功能支持。

  6. 使用uni.chooseImage替代:考虑使用跨端的uni.chooseImageAPI,它封装了底层差异,可能避免此问题:

    uni.chooseImage({
      count: 1,
      success: (res) => {
        // 处理图片
      }
    });
回到顶部