uni-app 鸿蒙真机运行无控制台错误但用户闪退 鸿蒙DevEco Studio显示多错误日志

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

uni-app 鸿蒙真机运行无控制台错误但用户闪退 鸿蒙DevEco Studio显示多错误日志

产品分类

uniapp/App

开发环境信息

详情
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win11
HBuilderX类型 正式
HBuilderX版本号 4.44
手机系统 HarmonyOS NEXT
手机系统版本号 HarmonyOS NEXT Developer Beta2
手机厂商 华为
手机机型 ipad
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码

运行到鸿蒙真机HBuilder X控制台没有错日志,真机上的用户闪退,鸿蒙DevEco Studio有很多错误日志

操作步骤

运行到鸿蒙真机HBuilder X控制台没有错日志,真机上的用户闪退,鸿蒙DevEco Studio有很多错误日志

预期结果

运行到鸿蒙真机HBuilder X控制台没有错日志,真机上的用户闪退,鸿蒙DevEco Studio有很多错误日志

实际结果

运行到鸿蒙真机HBuilder X控制台没有错日志,真机上的用户闪退,鸿蒙DevEco Studio有很多错误日志

bug描述

以下是鸿蒙DevEco Studio错误日志

startSceneWithRotationIfNeed currentContainerRotation=0 container name=uzztong.huawei.com/entry/EntryAbility(persistentId: 90)(containerId: 23)
01-02 15:32:16.729   1318-1318     C014C0/render_service/GRALLOC   render_service        E     getmeta invalid offset
01-02 15:32:16.730   850-61248     C01703/resourc...rvice/socperf  resource...service  E     [DoPerfRequestThremalLvl]: thermal level is too low to trigger perf request level
...
(省略部分重复的日志)
...
01-02 15:32:16.895   61072-61072   C01317/uzztong...ei.com/AppKit  apppool               E     [main_thread.cpp:1582]
uzztong.huawei.com is about to exit due to RuntimeError
Error type:ReferenceError
Error name:ReferenceError
Error message:cannot find record '&@dcloudio/uni-app-runtime/Index&2.3.4', please check the request path.'/data/storage/el1/bundle/entry/ets/modules.abc'.
Stacktrace:
SourceMap is not initialized yet
00 pc 00000000006eb364 /system/lib64/platformsdk/libark_jsruntime.so(76359649b760261c0213b7c12fecc049)
#01 pc 00000000006eb8d8 /system/lib64/platformsdk/libark_jsruntime.so(76359649b760261c0213b7c12fecc049)  
#02 pc 0000000000324ca0 /system/lib64/platformsdk/libark_jsruntime.so(76359649b760261c0213b7c12fecc049)  
...
(省略部分重复的堆栈信息)
...
01-02 15:32:16.967   911-1029      C015B5/netmanager/BoosterNet    netmanager            E     [bundle_mgr_proxy.cpp] GetBundleNameForUid# get bundle name result. bundlename: com.ohos.sceneboard, uid: 20020014

更多关于uni-app 鸿蒙真机运行无控制台错误但用户闪退 鸿蒙DevEco Studio显示多错误日志的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

我看你发了俩,是同一个问题吧,在那个帖子里交流吧。

更多关于uni-app 鸿蒙真机运行无控制台错误但用户闪退 鸿蒙DevEco Studio显示多错误日志的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在处理uni-app在鸿蒙真机上运行时出现的用户闪退问题,而控制台无错误提示的情况下,鸿蒙DevEco Studio显示的多错误日志通常是排查问题的关键。由于无法直接查看具体的错误日志,我将提供一个通用的代码案例和调试思路,帮助你根据DevEco Studio中的错误日志进行问题定位和解决。

1. 检查日志并定位问题

首先,你需要仔细查看DevEco Studio中的错误日志,特别是那些与uni-app相关的部分。日志中通常会包含错误类型、发生错误的文件路径以及具体的行号。例如,你可能会看到类似这样的日志:

E/MyApp(12345): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
E/MyApp(12345):    at com.example.myapp.MainActivity.onCreate(MainActivity.java:45)

2. 根据日志修改代码

假设上述日志是导致闪退的原因之一,你需要检查MainActivity.java文件的第45行,看看是否有可能为null的对象被调用了方法。对于uni-app项目,这部分代码可能是通过JS桥接生成的,但问题可能源于JS代码中的某些操作。

3. 示例代码修正

假设问题源于一个未正确初始化的Vue组件,在JS中可能类似于:

export default {
  data() {
    return {
      text: null // 假设这里应该有一个初始值,但不小心设置为了null
    };
  },
  mounted() {
    this.someFunction();
  },
  methods: {
    someFunction() {
      this.$refs.myText.setText(this.text); // 这里尝试调用setText,但this.text可能为null
    }
  }
}

修正后的代码:

export default {
  data() {
    return {
      text: 'Hello, World!' // 提供一个初始值
    };
  },
  mounted() {
    this.someFunction();
  },
  methods: {
    someFunction() {
      if (this.$refs.myText && this.text) {
        this.$refs.myText.setText(this.text);
      } else {
        console.error('Text ref or text value is null');
      }
    }
  }
}

4. 重新编译并测试

在修正代码后,重新编译你的uni-app项目,并在鸿蒙真机上进行测试。观察是否还会出现闪退,并检查DevEco Studio中的日志是否有新的错误信息。

总结

处理此类问题时,关键在于详细阅读和分析DevEco Studio中的错误日志,定位到具体的代码行,并根据日志中的提示进行相应的代码修正。由于每个项目的具体情况不同,上述示例仅供参考,实际调试时需根据具体的错误日志进行调整。

回到顶部