uni-app UniMPSDK小程序时不时异常闪退,libhwui.so + Crash reason: SIGSEGV /SEGV_MAPERR

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

uni-app UniMPSDK小程序时不时异常闪退,libhwui.so + Crash reason: SIGSEGV /SEGV_MAPERR

操作步骤:

  • 不确定,但是频次相对还是比较高,点着点着不知道在什么地方就会导致小程序闪退

预期结果:

  • 避免闪退

实际结果:

  • 目前会时不时闪退

bug描述:

  • 小程序时不时会闪退,dump下来的crash内容如附件。
  • Target 29下编译的工程
  • Operating system: Android
  • 0.0.0 Linux 5.10.43 #1 SMP PREEMPT Thu Sep 28 16:35:54 CST 2023 aarch64
  • CPU: arm64
  • 8 CPUs
  • GPU: UNKNOWN
  • Crash reason: SIGSEGV /SEGV_MAPERR
  • Crash address: 0x800
  • Process uptime: not available
  • Thread 0 (crashed)
  • 0 libhwui.so + 0x3b124
  • …详细参见附件
信息项 内容
产品分类 uni小程序SDK
手机系统 Android
手机系统版本号 Android 14
手机厂商 华为
手机机型 Mate40Pro
页面类型 nvue
SDK版本号 3.8.12

2 回复

这个问题有官方的大神关注么


在使用 UniMPSDK 开发小程序时,如果遇到 libhwui.so 相关的 SIGSEGVSEGV_MAPERR 异常闪退问题,通常是由于内存访问越界、空指针引用、或资源管理不当等原因导致的。以下是一些可能的排查和解决方法:


1. 检查 Native 层代码

  • 如果你在 UniMPSDK 中使用了 Native 代码(如 JNI 或 C/C++),确保没有内存泄漏、空指针访问或越界访问等问题。
  • 使用工具(如 AddressSanitizerValgrind)检查 Native 代码的内存问题。

2. 检查资源加载

  • libhwui.so 是 Android 的硬件加速渲染库,通常与图形渲染相关。如果小程序中加载了过多的图片或资源,可能会导致内存不足或渲染异常。
  • 优化图片和资源的使用,避免加载过大的资源文件。
  • 使用工具(如 Android Profiler)检查内存和 GPU 使用情况。

3. 检查 UniMPSDK 版本

  • 确保使用的是最新版本的 UniMPSDK,旧版本可能存在已知的 Bug。
  • 更新 SDK 后,重新编译和测试小程序。

4. 检查 Android 系统版本

  • 某些 Android 系统版本可能存在兼容性问题,尤其是在低版本或定制 ROM 上。
  • 测试不同 Android 版本和设备,确认问题是否与特定系统版本相关。

5. 捕获和分析日志

  • 使用 adb logcat 捕获详细的崩溃日志,分析崩溃时的堆栈信息。
  • 查找与 libhwui.so 相关的错误信息,定位问题的具体原因。
  • 示例命令:
    adb logcat | grep -E "SIGSEGV|SEGV_MAPERR|libhwui"

6. 减少硬件加速

  • 如果问题与硬件加速渲染相关,可以尝试禁用硬件加速,看看是否能解决问题。
  • AndroidManifest.xml 中为 Activity 添加以下配置:
    <application
        android:hardwareAccelerated="false"
        ... >
    </application>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!