c***@163.com
c***@163.com
  • 发布:2023-02-22 22:08
  • 更新:2023-12-13 15:49
  • 阅读:1808

【报Bug】调用 uni.chooseImage 方法 在 红米 Note 11T Pro 和 小米 11 Pro 拍照 点勾后会闪退

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

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

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: 11 pro 和 红米 Note 11T Pro

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: CLI

CLI版本号: 2.7.12

示例代码:

代码示例

 uni.chooseImage({  
          count:1,  
          sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有  
          sourceType: ['camera'], // 相机拍照  
          success: (res)=>{  
            console.log(JSON.stringify(res.tempFilePaths));  
          },  
          fail: (err)=>{  
            console.log(JSON.stringify(err));  
          },  
        });

操作步骤:

在需要调用拍照 功能的页面上 调用代码 uni.chooseImage 唤起 系统相机拍照,拍照完成点击 勾,返回app。但出现闪退,重新加载App。获取不到图片信息,没法进行下一步。

预期结果:

在需要调用拍照 功能的页面上 调用代码 uni.chooseImage 唤起 系统相机拍照,拍照完成点击 勾。返回app,加载 拍摄的图片,并进行下一步操作

实际结果:

打开页面点击页面拍摄按钮,拍照完成点击对勾,app闪退。获取不到图片信息,没法进行下一步。

bug描述:

HBuilderX 版本为 3.7.2.20230217-alpha
补充下,拍照权限,读写权限都给了。附件是问题出现视频。
在需要调用拍照 功能的页面上 调用代码 uni.chooseImage 唤起 系统相机拍照,拍照完成点击 勾。返回app闪退,重启app。
也试过调用 plus.camera.getCamera(1) 来拍照,拍完 点击 勾。也会闪退
使用官方demo Hello 也会出现 拍照闪退问题。因手上没有其他品牌手机,所以不知道其他品牌是否会出现该问题。

20230223 补充
HBuilderX 版本为 3.6.18.20230117 稳定版。
调用代码 uni.chooseImage 唤起 系统相机拍照,拍照完成点击 勾。
小米11Pro 能正常使用了,但 Redmi Note 11T Pro 还是会出现闪退,重启app。

2023-02-22 22:08 负责人:无 分享
已邀请:
师邦

师邦

对,这个问题一直存在。就是会出现在一些不同机型的手机上。之前我也有录像,收集日志提供反馈给官方uni技术,但好像都没有解决此问题。好像从HBuilder X3.4.6版左右开始。开始打包,不管是【传统打包】还是【快速安心打包】。就开始得到用户反馈 ,拍照片时点击完成时,应用就直接自动闪退重启!后来HBuilder X 不同升级版 我都进行测试 也是问题依旧!,也有单纯的使用官方 uni.chooseImage()调用也是会出现问题!直接编译运行官方提供的hello uniapp项目里的拍照功能也会出现这个问题。截止今天2023-03-16使用HBuilder X3.7.3.20230223版编译云打包后 安装包也是会出现应用闪退重启!我反复拍照十几次都闪退重启!没办法,我只能反复的把app进程杀死,反复手动打开app进行拍照。才恢复正常。后面又出现问题。 像今天打包的用vivo android10 V1911A 手机上,软件压根就没法使用!每一次拍照都闪退!救不了==50次拍照就有46次闪退重启。
没办法。官方没给出解决问题。我只能反复捣腾。发现有一条重要的线索:进去手机权限设置,在应用单项权限设置里不管你用没用到!就必须把9项权限全部允许!!【1.自启动(后台启动)、2.悬浮窗、3.锁屏显示、4.后台弹出界面、5.访问设备状态信息、 6.定位手机(始终允许)、7.使用摄像头、8.修改系统设置、9.安装未知应用】。然后再去使用你的软件,就会发现,没闪退重启了。
个人觉得 问题就出在 官方的兼容或机制分配 点上。希望官方技术 往这条线索方向 优化优化。。
有出现此类问题的朋友 试试我的临时方法 看有没有效果。我这边是得到实践效果了

  • 师邦

    还有1项:10.存储权限 也要允许

    2023-03-16 14:38

  • DCloud_Android_ST

    云打包appid发下 我这边看下配置

    2023-03-16 15:07

  • 师邦

    回复 DCloud_Android_ST: UNI132454E

    2023-03-16 15:12

  • DCloud_Android_ST

    回复 3***@qq.com: 你是安心打包 提供下QQ具体看下问题

    2023-03-16 15:23

  • 师邦

    回复 DCloud_Android_ST: 对,今天是安心打包的,调式基座也是直接传统打包(上传正式版的代码项目),然后云打包发布版选择安心模式打包的。QQ号等联系信息,你们后台应该可以查到。隐私信息就不公开在网络上了

    2023-03-16 16:39

  • FE_liyangyang

    回复 3***@qq.com: 兄弟,这个问题修复了没?

    2023-04-24 15:42

  • 嘟嘟gelie

    回复 3***@qq.com: 老哥,问题解决了么。方便提供一个联系方式么

    2023-08-07 11:51

  • 1***@qq.com

    这个问题解决了吗,我们也遇到了

    2023-08-18 18:03

yuanyxh

yuanyxh - 站在巨人的肩膀上

最近公司项目用测试机也测到了这个问题,测试机:真机-红米Note11T Pro Android 13 MIUI 14、云机-红米Note10T Android 13,研究了一下,和 uniapp 无关,纯粹是系统太坑,出现这问题的原因是:

应用后台优先级不够,在调用相机拍摄时进入后台,在按下拍摄键时需要大量的内存资源,此时如果内存不够或你的应用优先级太低时,会被系统回收资源。

如果有使用手机服务商的推送通知服务可以提升自己的应用优先级,比如小米会给配置了 mipush 的应用开启一个专属的通知进程,优先级很高,但是在高版本 Android 上这个通知进程也很容易被杀死,没用。

如果不想拍照的时候被系统杀进程,需要提升自己的应用优先级,也就是保活,在同一优先级下内存占用高的会更容易被杀死,适当的释放页面也很有用,uni.onMemoryWarning 可以侦听内存告警事件。

目前我是做了前台服务来保活,还没有更新发版,不确定能不能审核通过,同事说之前有做保活,但是被小米和应用宝的给打回了。

FE_liyangyang

FE_liyangyang

这个问题好像跟机型没关系,什么品牌的都出现过,2023年了官方还没给出解决方法吗?

  • c***@163.com (作者)

    试了下,暂时只有Android 12 的小米品牌拍照出问题。其他android 系统能拍照,也能获取图片地址。

    2023-02-23 11:37

  • FE_liyangyang

    回复 c***@163.com: 我的小米11 pro就没问题,但是同事的小米(具体什么型号不清楚)就不行

    2023-02-23 11:43

  • FE_liyangyang

    回复 c***@163.com: 我搜到一个这个帖子,我还没试呢,你可以参考参考https://ask.dcloud.net.cn/question/149814

    2023-02-23 11:45

  • c***@163.com (作者)

    回复 FE_liyangyang: 看Android 版本吧,我周围的小米手机,除了Android 12有问题外,其他的Android版本都没问题。现在初步断定是android 12后,新增权限后出现问题

    2023-02-23 14:18

  • FE_liyangyang

    回复 c***@163.com:你有啥解决方案没?,是不是内存不足导致的,把别的应用都关闭还是会复现?主要我的是小米11 pro(安卓12)没有复现,怎么测试都复现不了,但是一直有使用的人反馈这个问题

    2023-02-23 14:28

  • FE_liyangyang

    回复 c***@163.com: 应该就是运行内存问题,你那出问题有运行是12+的吗?

    2023-02-23 15:44

  • c***@163.com (作者)

    回复 FE_liyangyang: 没有解决方案,因为出现的原因也没有找到。现在只知道在android 12上有问题。其他没有。只运行一个也会闪退重启。小米11 pro是12+的,但红米 Note 11T Pro 不是12+。

    2023-02-23 16:41

  • FE_liyangyang

    回复 c***@163.com: 我这11pro 复现不了,你看这个帖子https://ask.dcloud.net.cn/question/126116,你是不是也渲染图片了,你试试可以复现的手机不渲染,可不可以解决

    2023-02-23 16:48

  • c***@163.com (作者)

    回复 FE_liyangyang: 我是还没到渲染界面就闪退重启,特地看了拍出来的图片看大小,就2M。应该不是图片问题,现在怀疑2种情况,要么是云端的安卓没有添加适配 Android 12的权限。要么HBuilderX 3.7的问题,因为HBuilderX 版本为 3.6.18 是能调用拍照的,也不会闪退重启,但因为某些功能必须升级到alpha后,就出现这问题了。

    2023-02-23 17:06

  • FE_liyangyang

    回复 c***@163.com: 我的是3.6.18小米11 pro是正常的,反应这个问题的是Rdemi Note 11T pro(6+)

    2023-02-23 17:18

  • c***@163.com (作者)

    回复 FE_liyangyang: 这种就很难排查了,我降级不是,不降级又不是。Android 自己搞个离线打包?

    2023-02-23 17:23

  • FE_liyangyang

    回复 c***@163.com: 关键我不会配置离线包,我查一天了,也没啥思路,主要我这没有复现机型,是别的同事反馈的

    2023-02-23 17:25

  • c***@163.com (作者)

    回复 FE_liyangyang: 我也不会配置离线包。我找了一部新电脑运行 HBuilderX 3.6.18,发现 Rdemi Note 11T pro(6+) 确实会闪退,小米 11 pro 不会。那把 HBuilderX 升级到 3.7.2,11 Pro就能复现了。

    2023-02-23 17:36

  • FE_liyangyang

    回复 c***@163.com: HBuilderX 升级到 3.7.2,但是自定义基座的SDK是3.7.1 ,然后我的11 Pro还是复现不了

    2023-02-23 20:58

  • FE_liyangyang

    回复 c***@163.com: 有人联系你解决吗?

    2023-02-24 10:28

  • c***@163.com (作者)

    回复 FE_liyangyang:我这边一直是这种情况,也不知道怎么解决,就 Rdemi Note 11T pro 会,这就很奇怪。领导打算让Rdemi Note 11T pro 升级到 MIUI 14看看会不会

    2023-02-24 20:55

  • FE_liyangyang

    回复 c***@163.com: 3.7.3的版本打包试没?还有那个问题吗?

    2023-02-27 11:25

DCloud_Android_ST

DCloud_Android_ST

看下手机设置 开发者选项 进入找到“后台进程限制” 是否为标准限制 不是改下 然后再运行看看

  • c***@163.com (作者)

    是标准限制。试过只开了使用的app,没有开启其他app,试过压缩图片。但都不行,因为拍完照后,都还没返回app 就闪退重启回到首页。就Rdemi Note 11T pro 会闪退,其他的设备不会。

    2023-02-24 20:53

  • DCloud_Android_ST

    回复 c***@163.com: 看过你的视频 不是闪退像是重启了 你试过云打包正式版有这个问题吗

    2023-02-27 10:52

  • FE_liyangyang

    回复 DCloud_Android_ST: 有的,3.6.18版本打包的Redmi Note 11T Pro(6+128)

    2023-02-27 11:37

  • FE_liyangyang

    回复 DCloud_Android_ST: 下面有效果视频

    2023-02-27 11:40

  • DCloud_Android_ST

    回复 FE_liyangyang: 你用demo打个正式版包 然后测试 如个可以复现就提供下下载链接

    2023-02-27 11:49

  • c***@163.com (作者)

    回复 DCloud_Android_ST: 有,云打包,测试包都会,就是app 闪退,然后重启

    2023-02-27 14:54

  • FE_liyangyang

    回复 DCloud_Android_ST: 用户仍然反馈此问题android 12 realme RMX3042(真我-q3)机型点击拍照后APP直接重启

    2023-07-11 13:48

  • FE_liyangyang

    回复 DCloud_Android_ST:复现视频已经私信

    2023-07-12 11:17

FE_liyangyang

FE_liyangyang

这个是3.6.18版本打包的Redmi Note 11T Pro的效果,App直接重启
别的机型暂时目前没有反馈这个问题

1***@qq.com

1***@qq.com

目前我这边收集到的有小米12、小米9se 调用相机拍照,勾选后会重启app。其他机型还未发现。请官方再排查排查!

2***@qq.com

2***@qq.com

一样的 我也是部分机型闪退. uni.chooseImage() 方法 不管是拍照还是选择照片 选择完点确定然后APP就会重启

7***@qq.com

7***@qq.com

我是图片预览时闪退

liubb

liubb

有解决方案吗?我最近也碰到这个问题了

9***@qq.com

9***@qq.com - zm

今天遇到同样的问题

相机无法拍照

相机无法拍照

你好,想问下解决了吗

lazi

lazi

小米9 , android 11。拍照也会闪退!

q***@pingfang.net

q***@pingfang.net

大佬 解决了吗

诚实小郎君

诚实小郎君

机型:小米 redmi note 9
手机设置-开发者选项-应用-不保留活动(用户离开后即销毁每个活动)是否关闭

要回复问题请先登录注册