uni-app 安卓拍照确认时闪退 紧急

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app 安卓拍照确认时闪退 紧急

开发环境 版本号 项目创建方式
Mac 10.14.6 (18G2022) HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Mac

PC开发环境操作系统版本号:10.14.6 (18G2022)

HBuilderX类型:正式

HBuilderX版本号:3.0.7

手机系统:Android

手机系统版本号:Android 10

手机厂商:小米

手机机型:都存在

页面类型:vue

打包方式:云端

App下载地址或H5网址:https://ruipos-hyy.oss-cn-shanghai.aliyuncs.com/other/__UNI__4A60AA2_0323090726.apk

示例代码:

2021/03/21 23:47:00 [crash] imei:2E7F8C6CD0DEEBC3D8337F9B96A6A3F4 md:V1809T p:a os:28 net:3 vb:1.9.9.80630 mc: appid:__UNI__4A60AA2 appcount:1 wvcount:3 pn:io.dcloud.cos3 mem:6572kb etype:1 eurl: carsh_info:java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference  
    at io.dcloud.js.camera.b.a(SourceFile:55)  
    at io.dcloud.js.camera.b.a(SourceFile:48)  
    at io.dcloud.js.camera.CameraFeatureImpl$a$a$a.run(SourceFile:6)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)  
    at java.lang.Thread.run(Thread.java:764)
`

34 回复

请问这个后面有解决吗?


升级HX3.2.3+ 已修复该问题

我已经是最新版本了耶

回复 yangcj77: 可以像楼主一样提供下崩溃日志我们看下

回复 DCloud_Android_ST: 还有一个问题选择照片【压缩图】->拍照->出来的照片并未压缩基本上都是大于4M

回复 DCloud_Android_ST: 这也是我跟新Hbuilder最新版出来的问题

看下HX版本号 什么平台安卓吗

回复 DCloud_Android_ST: 这边没办法提供崩溃日志耶,HX是3.2.3.20210825, 安卓RedmiA6是必现的,安卓系统10偶尔会出现;选取图片之后点击确认,然后app就奔溃重启

回复 yangcj77: 提供下崩溃日志

回复 DCloud_Android_ST: 在vivo也有此问题,请官方不要问怎么复现的,崩溃日志啥的,这些都是用户那边随机出现的情况,开发怎么知道这些嘞?

回复 DCloud_Android_ST: 我这边也遇到这样的问题,部分机型会出现这样的情况,不知道怎么处理啊

回复 z***@163.com: 崩溃有很多种。你遇到问题就提供下崩溃信息或者appid. 不提供信息光说也遇到了不能解决问题的

回复 DCloud_Android_ST: uniappid是这个,UNI49C2F18,因为是客户的机型有问题,麻烦看下,我这边没办法提供日志

回复 z***@163.com: 回复 DCloud_Android_ST: 客户的机型是小米9,运行内存6GB,855处理器,android11版本,miui版本为12.5.6稳定版(12.5.6.0RFACNXM),我现在使用的是mac电脑,hbuilderx版本为3.3.13.20220314,我只能提供这些信息了

回复 z***@163.com: 我这边查询崩溃信息未查到。建议你集成友盟统计看下崩溃信息

回复 DCloud_Android_ST: 你好,是这样的情况,就是小米9在调用uni.chooseImage方法,可以拍照,然后会有对勾的按钮,一点击应用就会跳转到首页重新加载,你方便的话可以加下我qq:953218985,我发一个客户录屏给你看一下

回复 DCloud_Android_ST: 我也是,小米9,拍照后点击√,然后返回app就重启了

回复 m***@163.com: 用HX3.5.1版本重新打包试下

回复 DCloud_Android_ST: 巧了 我也是小米9,拍照后点击√,然后返回app就重启了

都一年了,还没有解决掉啊

提供下QQ我跟踪下你描述的问题

回复 DCloud_Android_ST: 1639487050

又一年了,还是有问题,小米12 这种手机都能崩溃,无语了,到底是因为啥啊

提供下QQ我跟踪下你描述的问题

回复 DCloud_Android_ST: 2593346890

回复 高级CV: 兄弟,解决没?

兄弟,解决了吗

2024年了,还没解决吗这个问题

这个问题在chooseimage的api文档注意事项里有:https://uniapp.dcloud.net.cn/api/media/image.html

是那个说手机低端吗?但是当初是小米13闪退的

回复 高级CV: 这和手机低不低端没关系,高端手机的相机的分辨率过大,超过webview渲染可承受的内存,也会闪退。

2024年了这个问题还是没解决吗,小米手机还是闪退 roid/os/Trace;->isTagEnabled(J)Z (unsupported, reflection, allowed) Accessing hidden method Landroid/os/Trace;->traceBegin(JLjava/lang/String;)V (unsupported, reflection, allowed) Accessing hidden method Landroid/os/Trace;->traceEnd(J)V (unsupported, reflection, allowed) Accessing hidden method Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V (unsupported, reflection, allowed) Accessing hidden method Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V (unsupported, reflection, allowed) Loaded version=99.0.4844.88 minSdkVersion=29 isBundle=true multiprocess=true packageId=2 Successfully loaded native library Flushed 8 samples from 8 histograms. initUTS error java.lang.NullPointerException: Attempt to invoke virtual method ‘java.lang.reflect.Field java.lang.Class.getField(java.lang.String)’ on a null object reference BaseActivity onCreate onRuntimePreCreate appid=Main_App org.json.JSONException: No value for xaga at org.json.JSONObject.get(JSONObject.java:403) at org.json.JSONObject.getJSONObject(JSONObject.java:623) at android.util.MiuiMultiWindowUtils.initFreeFormResolutionArgsOfDevice(MiuiMultiWindowUtils.java:1423) at android.util.MiuiMultiWindowUtils.initFreeFormResolutionArgs(MiuiMultiWindowUtils.java:1417) at android.util.MiuiMultiWindowUtils.<clinit>(MiuiMultiWindowUtils.java:212) at android.util.MiuiMultiWindowUtils.isSupportMultiSwitchFeature(MiuiMultiWindowUtils.java:3214) at com.android.internal.policy.DecorViewMultiWinStubImpl.<init>(DecorViewMultiWinStubImpl.java:19) at com.android.internal.policy.DecorViewMultiWinStubImpl$Provider.provideNewInstance(DecorViewMultiWinStubImpl$Provider.java:14) at com.android.internal.policy.DecorViewMultiWinStubImpl$Provider.provideNewInstance(DecorViewMultiWinStubImpl$Provider.java:8) at com.miui.base.MiuiStubRegistry.get(MiuiStubRegistry.java:130) at com.miui.base.MiuiStubUtil.newInstance(MiuiStubUtil.java:77) at com.android.internal.policy.DecorViewMultiWinStub.newInstance(DecorViewMultiWinStub.java:11) at com.android.internal.policy.DecorView.<init>(DecorView.java:333) at com.android.internal.policy.PhoneWindow.generateDecor(PhoneWindow.java:2380) at com.android.internal.policy.PhoneWindow.installDecor(PhoneWindow.java:2760) at com.android.internal.policy.PhoneWindow.getDecorView(PhoneWindow.java:2140) at io.dcloud.WebAppActivity.onCreateSplash(Unknown Source:8) at io.dcloud.b.onCreate(Unknown Source:130) at io.dcloud.WebAppActivity.onCreate(Unknown Source:22) at android.app.Activity.performCreate(Activity.java:8167) at android.app.Activity.performCreate(Activity.java:8134) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3763) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3957) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:106) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2335)

2台mate60,一个拍照闪退、重启,另一个完全正常使用。P70正常使用,小米啥的都没有问题,就有一个同事的mate60不行,这是为什么呢??他手机有问题??但该手机用其它软件没有任何问题呀

针对您提到的uni-app在安卓设备上拍照确认时闪退的问题,这通常涉及到原生插件的调用和内存管理。以下是一些可能的解决思路及相关的代码示例,旨在帮助您定位和解决该问题。请注意,由于具体闪退原因可能多样(如内存泄漏、插件冲突、权限问题等),以下示例仅供参考,您可能需要根据实际情况进行调整。

1. 检查权限配置

确保在manifest.json中正确配置了相机权限:

"mp-weixin": { // 或其他平台配置
  "requiredPrivateInfos": ["chooseImage", "camera"]
},
"android": {
  "permissions": [
    "android.permission.CAMERA",
    "android.permission.WRITE_EXTERNAL_STORAGE"
  ]
}

2. 使用uni-app的拍照API

确保您使用的拍照API调用方式正确。以下是一个基本的拍照功能实现示例:

uni.chooseImage({
  count: 1,
  sizeType: ['original', 'compressed'],
  sourceType: ['camera'],
  success: function (res) {
    const tempFilePaths = res.tempFilePaths;
    console.log('拍照成功,图片路径:', tempFilePaths);
  },
  fail: function (err) {
    console.error('拍照失败:', err);
    // 尝试捕获并处理可能的错误,如权限被拒绝
    if (err.errMsg.indexOf('permission denied') !== -1) {
      uni.showModal({
        title: '提示',
        content: '需要您的授权才能使用相机',
        success: function (res) {
          if (res.confirm) {
            uni.openSetting(); // 引导用户去授权
          }
        }
      });
    }
  }
});

3. 监听应用错误

为了捕获更多可能的错误信息,可以监听应用的全局错误事件:

uni.onError(function (err) {
  console.error('应用错误:', err);
  // 将错误信息上报到服务器或进行其他处理
});

4. 内存管理

确保在拍照完成后,及时释放不必要的资源,比如预览图或临时文件,以避免内存泄漏。

5. 更新依赖

检查并更新uni-app及其相关依赖到最新版本,有时问题可能由已知bug引起,而这些bug在新版本中已被修复。

结论

由于闪退问题可能涉及多个层面,上述方法仅为常见排查步骤。如果问题依旧存在,建议查看设备日志(如使用Android Studio的Logcat工具),以获取更详细的错误信息,从而进行针对性修复。希望这些建议对您有所帮助!

回到顶部