拓课云
拓课云
  • 发布:2025-12-04 14:31
  • 更新:2025-12-04 15:40
  • 阅读:88

安卓在 camera 组件的页面中退出app会崩溃

分类:uni-app x

14:27:51.353 App Exit at App.uvue:34
14:27:51.467 java.lang.NullPointerException
14:27:51.467 at uts.sdk.modules.DCloudUniGetSystemInfo.IndexKt.getWindowInfo$lambda$5(index.kt:579)
14:27:51.467 at uts.sdk.modules.DCloudUniGetSystemInfo.IndexKt.$r8$lambda$2ZZ9Z6xm2E1iweSpMvZyYw0AFE4(Unknown Source:0)
14:27:51.467 at uts.sdk.modules.DCloudUniGetSystemInfo.IndexKt$$ExternalSyntheticLambda4.invoke(D8$$SyntheticClass:0)
14:27:51.467 at uts.sdk.modules.DCloudUniBarcodeScanning.AndroidScannerImpl.processScanBarCode(index.kt:39)
14:27:51.467 at uts.sdk.modules.DCloudUniCamera.CameraInstance$setScanCode$1.callback(index.kt:536)
14:27:51.467 at uts.sdk.modules.DCloudUniCamera.CameraImpl.registerAnalyzer$lambda$8(CameraImpl.kt:539)
14:27:51.467 at uts.sdk.modules.DCloudUniCamera.CameraImpl.$r8$lambda$46h4-02Qh60YRbIrLUvrKf3HNR0(Unknown Source:0)
14:27:51.467 at uts.sdk.modules.DCloudUniCamera.CameraImpl$$ExternalSyntheticLambda3.analyze(D8$$SyntheticClass:0)
14:27:51.467 at androidx.camera.core.ImageAnalysis.lambda$setAnalyzer$3(ImageAnalysis.java:573)
14:27:51.467 at androidx.camera.core.ImageAnalysis$$ExternalSyntheticLambda4.analyze(D8$$SyntheticClass:0)
14:27:51.467 at androidx.camera.core.ImageAnalysisAbstractAnalyzer.lambda$analyzeImage$0$androidx-camera-core-ImageAnalysisAbstractAnalyzer(ImageAnalysisAbstractAnalyzer.java:284)
14:27:51.467 at androidx.camera.core.ImageAnalysisAbstractAnalyzer$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
14:27:51.467 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
14:27:51.467 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
14:27:51.467 at java.lang.Thread.run(Thread.java:919)

2025-12-04 14:31 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

根据错误日志,这是一个Android平台下Camera组件退出时触发的NullPointerException,涉及UTS插件中的DCloudUniGetSystemInfo模块。

问题原因可能是Camera组件未正确释放资源导致系统信息获取异常。知识库中相关修复记录:

  1. Android平台修复Camera组件多页面使用时返回上一页黑屏问题 - 需确保在页面onHide/onUnload生命周期中调用uni.stopCamera()释放资源

  2. Android平台修复uni.scanCode部分设备闪退问题 - 与Camera底层实现相关

  3. App-Android平台修复UTSJSONObject序列化异常 - 可能影响系统信息获取

建议解决方案:

  • 升级到最新版uni-app(当前正式版4.85/alpha 4.86)
  • 在camera页面onHide中添加资源清理逻辑:
    onHide() {  
    uni.stopCamera({  
    success: () => console.log('camera stopped')  
    })  
    }
  • 检查pages.json中是否配置了正确的安全区域设置,参考getWindowInfo文档

若仍存在问题,建议在插件市场搜索camera相关插件替代原生实现。

内容为 AI 生成,仅供参考
拓课云

拓课云 (作者)

复现步骤:在 camera 组件的页面,在这个页面点两次直接退出应用后会报错以下错误,然后再次进入app 后就崩溃。
14:48:47.171 App Exit at App.uvue:34
14:48:47.319 java.lang.NullPointerException
14:48:47.319 at uts.sdk.modules.DCloudUniGetSystemInfo.IndexKt.getWindowInfo$lambda5(index.kt:579) 14:48:47.319 at uts.sdk.modules.DCloudUniGetSystemInfo.IndexKt.r8$lambda2ZZ9Z6xm2E1iweSpMvZyYw0AFE4(Unknown Source:0) 14:48:47.319 at uts.sdk.modules.DCloudUniGetSystemInfo.IndexKtExternalSyntheticLambda4.invoke(D8SyntheticClass:0) 14:48:47.319 at uts.sdk.modules.DCloudUniBarcodeScanning.AndroidScannerImpl.processScanBarCode(index.kt:39) 14:48:47.319 at uts.sdk.modules.DCloudUniCamera.CameraInstancesetScanCode1.callback(index.kt:536) 14:48:47.319 at uts.sdk.modules.DCloudUniCamera.CameraImpl.registerAnalyzerlambda8(CameraImpl.kt:539) 14:48:47.319 at uts.sdk.modules.DCloudUniCamera.CameraImpl.r8$lambda46h4-02Qh60YRbIrLUvrKf3HNR0(Unknown Source:0) 14:48:47.319 at uts.sdk.modules.DCloudUniCamera.CameraImplExternalSyntheticLambda3.analyze(D8SyntheticClass:0) 14:48:47.319 at androidx.camera.core.ImageAnalysis.lambdasetAnalyzer3(ImageAnalysis.java:573) 14:48:47.319 at androidx.camera.core.ImageAnalysisExternalSyntheticLambda4.analyze(D8SyntheticClass:0) 14:48:47.319 at androidx.camera.core.ImageAnalysisAbstractAnalyzer.lambdaanalyzeImage0androidx-camera-core-ImageAnalysisAbstractAnalyzer(ImageAnalysisAbstractAnalyzer.java:284)
14:48:47.319 at androidx.camera.core.ImageAnalysisAbstractAnalyzer$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
14:48:47.319 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
14:48:47.319 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
14:48:47.319 at java.lang.Thread.run(Thread.java:919)
复现的测试代码:

  • DCloud_Android_THB

    我把你的帖子发到issue了,麻烦关注发版状态 issue

    2025-12-04 17:09

  • 拓课云 (作者)

    回复 DCloud_Android_THB: app 业务层有什么临时的避免办法吗?

    2025-12-05 10:34

  • DCloud_Android_THB

    回复 拓课云: 这个问题是扫码模块引发的,你要是不用camera的scanCode 模式,就不会有这个问题了,并且这个是在应用退出情况在控制台打印了错误,对于用户来说是无感的(用户很少注意启动app是冷启动与否)

    2025-12-05 12:29

  • 拓课云 (作者)

    回复 DCloud_Android_THB: 主要问题不是退出的时候在控制台打印了错误,是再次进入app会崩溃

    2025-12-05 15:33

  • DCloud_Android_THB

    回复 拓课云: 双击退出了页面,此时app已经死了,再次启动只是冷启动了,你说的是冷启动闪退?不太可能吧

    2025-12-09 10:26

  • 拓课云 (作者)

    回复 DCloud_Android_THB: 不是,点击两次返回调用 uni.exit() 退出app,这时app进程还存在后台,再次打卡不是冷启动

    2025-12-09 15:19

  • DCloud_Android_THB

    回复 拓课云: 我说的是现在的情况,冷启动和热启动只是启动时间和控制台是否有这个报错,并不会影响用户吧, 我已经修复了这个问题,下次版本会带。

    2025-12-12 15:48

要回复问题请先登录注册