uni-app 崩溃日志反馈

发布于 1周前 作者 sinazl 来自 uni-app

uni-app 崩溃日志反馈

操作步骤

uni统计收集

预期结果

uni统计收集

实际结果

uni统计收集

bug描述

1、UI线程阻塞
java.lang.RuntimeException: Probable deadlock detected due to WebView API being called on incorrect thread while the UI thread is blocked.
at WV.sC0.c(chromium-TrichromeWebViewGoogle6432.aab-stable-584509233:42)
2、使用被回收的Bitmap对象
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@3de4498
at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:98)
3、空对象 getActivity 方法
java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=60505, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.yiqicha.apk/io.dcloud.PandoraEntryActivity}: java.lang.NullPointerException: Attempt to invoke interface method ‘android.app.Activity io.dcloud.common.DHInterface.IWebview.getActivity()’ on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:6754)

开发环境与版本信息

项目创建方式 PC开发环境操作系统 PC开发环境操作系统版本号 HBuilderX类型 HBuilderX版本号 手机系统 手机系统版本号 手机厂商 手机机型 页面类型 vue版本 打包方式
HBuilderX Windows win11 正式 4.36 Android Android 15 华为、小米、vivo Android vue vue2 云端

1 回复

针对您反馈的uni-app崩溃日志问题,这里提供一个基于Vue.js和uni-app框架的示例代码及调试方法,帮助您定位和解决崩溃问题。请注意,由于崩溃日志的具体内容未提供,以下示例将涵盖一些常见的崩溃场景和调试技巧。

1. 捕获全局异常

首先,您可以在uni-app中捕获全局异常,以便在发生错误时记录相关信息。

// main.js
import Vue from 'vue'
import App from './App'

Vue.config.productionTip = false

Vue.prototype.$log = (message) => {
    console.error(message);
    // 您可以将错误日志发送到服务器或保存到本地文件
};

Vue.config.errorHandler = (err, vm, info) => {
    Vue.prototype.$log(`Error: ${err.toString()}\nInfo: ${info}`);
};

window.onerror = (message, source, lineno, colno, error) => {
    Vue.prototype.$log(`Window Error: ${message}\nSource: ${source}\nLine: ${lineno}\nColumn: ${colno}\nError: ${error}`);
};

new Vue({
    render: h => h(App),
}).$mount('#app')

2. 页面级错误处理

在每个页面中,您也可以添加错误处理逻辑,以便更精确地定位问题。

// pages/index/index.vue
<template>
    <view>
        <!-- 页面内容 -->
    </view>
</template>

<script>
export default {
    mounted() {
        try {
            // 可能会抛出异常的代码
        } catch (error) {
            this.$log(`Page Error: ${error.toString()}`);
        }
    },
    methods: {
        someMethod() {
            try {
                // 可能会抛出异常的代码
            } catch (error) {
                this.$log(`Method Error: ${error.toString()}`);
            }
        }
    }
}
</script>

3. 使用第三方日志库

为了更好地管理和分析崩溃日志,您可以考虑使用第三方日志库,如Sentry或LogRocket。这些库通常提供更强大的日志记录和错误追踪功能。

4. 调试技巧

  • 查看控制台输出:在开发过程中,密切关注控制台输出的错误信息。
  • 使用开发者工具:uni-app提供了开发者工具,您可以通过它进行断点调试和查看网络请求等。
  • 分析崩溃日志:仔细分析崩溃日志中的堆栈信息和错误代码,找出可能的问题所在。

以上代码和调试技巧应能帮助您更好地捕获和处理uni-app中的崩溃问题。如果问题依旧存在,请提供具体的崩溃日志信息,以便进行更深入的分析和解决。

回到顶部