uni-app 相机唤起闪退重启问题 之前用的好好的 最近几个月相机高频繁闪退

uni-app 相机唤起闪退重启问题 之前用的好好的 最近几个月相机高频繁闪退

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

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

HBuilderX类型:正式

HBuilderX版本号:3.6.5

手机系统:Android

手机系统版本号:Android 10

手机厂商:vivo

手机机型:华为、小米、vivo、等不同平台 安卓系统10、11、12

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

操作步骤: uni.chooseImage 唤起相机返回直接闪退重启,或者拍照完成 点击确定 闪退重启

预期结果: uni.chooseImage 唤起相机返回直接闪退重启,或者拍照完成 点击确定 闪退重启

实际结果: 唤起相机返回直接闪退重启,或者拍照完成 点击确定 闪退重启

bug描述: 权限且授权都有! 真机在线基座调式不频繁闪退!但是打包出来必定闪退!10次有7次闪退重启!单纯的唤起相机也会闪退;安卓系统(10、11、12);机型:华为、vivo、小米等;HbuilderX版本: 3.6.5.20221121 ;

/* android打包配置 */
"android" : {  
    "permissions" : [  
        "<uses-feature android:name=\"android.hardware.camera\"/>",  
        "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",  
        "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",  
        "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",  
        "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",  
        "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",  
        "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",  
        "<uses-permission android:name=\"android.permission.CAMERA\"/>",  
        "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",  
        "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",  
        "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",  
        "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",  
        "<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",  
        "<uses-permission android:name=\"android.permission.INTERNET\"/>",  
        "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",  
        "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",  
        "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",  
        "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",  
        "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",  
        "<uses-permission android:name=\"android.permission.VIBRATE\"/>",  
        "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",  
        "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",  
        "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"  
    ]  
},  

uni.chooseImage({  
    count: 1,  
    sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有  
    success: chose => {}  
})

更多关于uni-app 相机唤起闪退重启问题 之前用的好好的 最近几个月相机高频繁闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

请升级至HbuilderX3.6.11-alpha 试下用hello uni-app示例能复现你的问题吗?如果不能,提供最小化复现工程和apk(上传附件)【bug优先处理规则】https://ask.dcloud.net.cn/article/38139

更多关于uni-app 相机唤起闪退重启问题 之前用的好好的 最近几个月相机高频繁闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html


回复 1*@qq.com: 对,这个问题一直存在。就是会出现在一些不同机型的手机上。之前我也有录像,收集日志提供反馈给官方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次闪退重启。 没办法。官方没给出解决问题。我只能反复捣腾。发现有一条重要的线索:进去手机权限设置,在应用单项权限设置里不管,你用没用到 ! 就必须手动检查下,把10项权限全部允许!!【1.自启动(后台启动)、2.悬浮窗、3.锁屏显示、4.后台弹出界面、5.访问设备状态信息、 6.定位手机(始终允许)、7.使用摄像头、8.修改系统设置、9.安装未知应用、10.存储权限】。然后再去使用你的软件,就会发现,没闪退重启了。** 个人觉得 问题就出在 官方的兼容或机制分配 点上。希望官方技术 往这条线索方向 优化优化。。 有出现此类问题的朋友 试试我的临时方法 看有没有效果。我这边是得到实践效果了

根据官方技术指导操作问题依旧:独立下载HbuilderX3.6.11【3.6.11.20221205-alpha】然后新创建项目 官方hello uniapp示例 运行到真机,[接口]–》媒体–》图片–》添加拍照图片 完成确认后 闪退重启。【已手机录屏】(附件) 【控制台能看到的打印信息】如下: 14:06:17.529 应用未关联服务空间,请在uniCloud目录右键关联服务空间
14:06:17.572 reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught Error: Module build failed (from ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js):
Error: Cannot find module ‘C:\Program Files\HBuilderX3.6.11\plugins\compile-node-sass\node_modules\node-sass-china’
Require stack:

  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\getDefaultSassImplementation.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\getSassImplementation.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\index.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\cjs.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\loader-runner\lib\loadLoader.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\loader-runner\lib\LoaderRunner.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\webpack\lib\NormalModule.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\webpack\lib\NormalModuleFactory.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\webpack\lib\Compiler.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\webpack\lib\webpack.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\commands\build.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\index.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@vue\cli-service\lib\Service.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\bin\uniapp-cli.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:956:15)
    at Function.Module._resolveFilename (C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\module-alias\index.js:49:29)
    at Function.Module._load (node:internal/modules/cjs/loader:804:27)
    at Module.require (node:internal/modules/cjs/loader:1028:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at getDefaultSassImplementation (C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\getDefaultSassImplementation.js:24:10)
    at getSassImplementation (C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\getSassImplementation.js:19:72)
    at Object.loader (C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\index.js:42:61)
    at 222 (/pages/extUI/icons/icons.nvue:9068:7)
    at webpack_require (/pages/extUI/icons/icons.nvue:21:30)
    at 221 (/pages/extUI/icons/icons.nvue:9054:938)
    at webpack_require (/pages/extUI/icons/icons.nvue:21:30)
    at injectStyles (<anonymous>:19:45)
    at eval (<anonymous>:41:14)
    at 216 (/pages/extUI/icons/icons.nvue:8804:1)
    at webpack_require (/pages/extUI/icons/icons.nvue:21:30)
    at 490 (/pages/extUI/icons/icons.nvue:10233:14)
    at webpack_require (/pages/extUI/icons/icons.nvue:21:30)
    14:06:42.983 已获取的权限:android.permission.CAMERA at common/permission.js:187
    14:06:43.415 App Hide at App.vue:49
    14:07:05.609 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:07:06.319 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:07:06.354 App Launch at App.vue:21
    14:07:06.363 App Show at App.vue:46
    14:07:06.905 preLogin fail res: , [Object] {“errMsg”:“preLogin:fail -20202预登录失败”,“errCode”:30005,“code”:30005,“appid”:"pPyZWvH3Fa6PXba…} at App.vue:40
    14:11:16.431 App Hide at App.vue:49
    14:11:17.357 App Show at App.vue:46
    14:11:20.203 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:11:21.730 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:11:21.950 preloadPage /pages/extUI/calendar/calendar at pages/tabBar/extUI/extUI.nvue:230
    14:11:22.260 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:11:22.290 reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught Error: Module build failed (from ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js):
    Error: Cannot find module ‘C:\Program Files\HBuilderX3.6.11\plugins\compile-node-sass\node_modules\node-sass-china’
    Require stack:
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\getDefaultSassImplementation.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\getSassImplementation.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\index.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\cjs.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\loader-runner\lib\loadLoader.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\loader-runner\lib\LoaderRunner.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\webpack\lib\NormalModule.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\webpack\lib\NormalModuleFactory.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\webpack\lib\Compiler.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\webpack\lib\webpack.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\commands\build.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\index.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@vue\cli-service\lib\Service.js
  • C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\bin\uniapp-cli.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:956:15)
    at Function.Module._resolveFilename (C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules\module-alias\index.js:49:29)
    at Function.Module._load (node:internal/modules/cjs/loader:804:27)
    at Module.require (node:internal/modules/cjs/loader:1028:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at getDefaultSassImplementation (C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\getDefaultSassImplementation.js:24:10)
    at getSassImplementation (C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\getSassImplementation.js:19:72)
    at Object.loader (C:\Program Files\HBuilderX3.6.11\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\sass-loader\dist\index.js:42:61)
    at 229 (/pages/extUI/calendar/calendar.nvue:8978:7)
    at webpack_require (/pages/extUI/calendar/calendar.nvue:21:30)
    at 228 (/pages/extUI/calendar/calendar.nvue:8964:941)
    at webpack_require (/pages/extUI/calendar/calendar.nvue:21:30)
    at injectStyles (<anonymous>:19:45)
    at eval (<anonymous>:41:14)
    at 223 (/pages/extUI/calendar/calendar.nvue:8820:1)
    at webpack_require (/pages/extUI/calendar/calendar.nvue:21:30)
    at 338 (/pages/extUI/calendar/calendar.nvue:9829:7)
    at webpack_require (/pages/extUI/calendar/calendar.nvue:21:30)
    14:11:27.283 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:15:08.216 App Hide at App.vue:49
    14:15:15.944 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:15:16.604 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:15:16.635 App Launch at App.vue:21
    14:15:16.638 App Show at App.vue:46
    14:15:17.040 preLogin fail res: , [Object] {“errMsg”:“preLogin:fail -20202预登录失败”,“errCode”:30005,“code”:30005,“appid”:"pPyZWvH3Fa6PXba…} at App.vue:40
    14:15:40.095 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:15:40.357 waiting:{“type”:“waiting”,“timeStamp”:1670307270652,“target”:{“id”:“video1”,“dataset”:{},“offsetLeft”:0,“offsetTop”:0},“currentTarget”:{“id”:“video1”,“dataset”:{},“offsetLeft”:0,“offsetTop”:0},“detail”:{}} at pages/component/video/video.nvue:51
    14:15:46.709 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:16:27.601 已获取的权限:android.permission.CAMERA at common/permission.js:187
    14:16:27.917 App Hide at App.vue:49
    14:16:40.115 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:16:40.746 应用未关联服务空间,请在uniCloud目录右键关联服务空间
    14:16:40.806 App Launch at App.vue:21
    14:16:40.816 App Show at App.vue:46
    14:16:41.294 preLogin fail res: , [Object] {“errMsg”:“preLogin:fail -20202预登录失败”,“errCode”:30005,“code”:30005,“appid”:"pPyZWvH3Fa6PXba…} at App.vue:40
    14:18:20.163 应用未关联服务空间,请在uniCloud目录右键关联服务空间

我今天20221212使用了HbuilderX3.6.13.20221209 这个正式发布版的!也是调用相机拍照 就闪退重启应用!重新完全创建使用官网的hello uniapp示例 运行到真机。闪退重启应用频繁依旧!这个BUG没改啊,痛苦等待~~~

收到 正在排查

排查结果是啥,我看类似的问题好几年了也没有一个解决方案额

2024年了排查有结果了吗

同样出现这个问题,这个bug太严重了。 楼主最后解决了吗

麻烦问一下这个问题解决了吗??

马上2025年了 依旧存在这个问题,之前还好好的,最近几天就发现这个问题了

针对uni-app中相机唤起频繁闪退的问题,这通常涉及到原生插件、权限管理、资源占用等多个方面。以下是一些可能帮助排查和解决问题的代码示例和思路,主要围绕Android平台(iOS平台类似,但具体实现有所不同)。

1. 检查并请求相机权限

首先确保应用已正确请求并获得相机权限。在manifest.json中配置相机权限:

"mp-weixin": {
    "requiredPrivateInfos": ["camera"]
},
"app-plus": {
    "distribute": {
        "android": {
            "permissions": [
                "android.permission.CAMERA"
            ]
        }
    }
}

在代码中动态请求权限(适用于Android 6.0及以上):

// #ifdef APP-PLUS
plus.android.requestPermissions([
    'android.permission.CAMERA'
], function(event) {
    if (event.deniedAlways.length > 0 || event.denied.length > 0) {
        console.error('相机权限被拒绝');
    } else {
        console.log('相机权限已授权');
        // 唤起相机
    }
});
// #endif

2. 唤起相机并处理回调

使用uni-app提供的API唤起相机,并处理回调数据:

uni.chooseImage({
    count: 1,
    sourceType: ['camera'],
    success: function(res) {
        console.log('拍照成功', res.tempFilePaths);
    },
    fail: function(err) {
        console.error('拍照失败', err);
        // 可尝试重启相机服务或提示用户重启应用
    }
});

3. 清理资源避免内存泄漏

确保在每次使用完相机后,正确释放资源。虽然uni-app的API通常会处理这些,但在复杂应用中可能需要手动干预:

// 假设在某个页面关闭时释放资源
onUnload: function() {
    // 清理相机相关资源(如果有的话)
    // 例如:停止视频录制、释放预览画面等
}

4. 调试和日志

增加日志输出,帮助定位问题发生的具体环节:

console.log('尝试唤起相机');
uni.chooseImage({...}).then(() => {
    console.log('相机唤起成功');
}).catch(err => {
    console.error('相机唤起失败', err);
});

5. 更新uni-app和相关依赖

确保uni-app框架和所有相关依赖都是最新版本,有时候问题可能由旧版本的bug引起。

npm update

如果以上方法仍然无法解决问题,建议详细查看设备日志(如Android的Logcat),分析可能的异常或错误信息,进一步定位问题。

回到顶部