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)
`
请问这个后面有解决吗?
升级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)
针对您提到的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工具),以获取更详细的错误信息,从而进行针对性修复。希望这些建议对您有所帮助!