uni-app UniMPSDK小程序时不时异常闪退,libhwui.so + Crash reason: SIGSEGV /SEGV_MAPERR
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
相关的 SIGSEGV
或 SEGV_MAPERR
异常闪退问题,通常是由于内存访问越界、空指针引用、或资源管理不当等原因导致的。以下是一些可能的排查和解决方法:
1. 检查 Native 层代码
- 如果你在 UniMPSDK 中使用了 Native 代码(如 JNI 或 C/C++),确保没有内存泄漏、空指针访问或越界访问等问题。
- 使用工具(如
AddressSanitizer
或Valgrind
)检查 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>