E9C50FX
E9C50FX
  • 发布:2025-12-28 23:09
  • 更新:2025-12-28 23:14
  • 阅读:22

【报Bug】安卓16更新Vulkan后,有很大比例的用户会崩溃

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 14.6

HBuilderX类型: 正式

HBuilderX版本号: 4.87

手机系统: Android

手机系统版本号: Android 16

手机厂商: Google Pixel

手机机型: Google Pixel 8a、Google Pixel 9 Pro XL、Samsung Galaxy A16 5G等

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

未知

预期结果:

无用户崩溃

实际结果:

谷歌商店后台统计3%用户崩溃

bug描述:

根据GooglePlay后台崩溃统计,用户崩溃率高达2.9%,且全部为Android 16
GooglePlay后台给出崩溃常见设备为Samsung Galaxy A16 5G、Google Pixel 9 Pro XL、Google Pixel 8a等

项目为WebView内嵌H5,除基础前端页面、部分translate动画外,使用了基于腾讯tcplayer的webrtc视频播放

90%以上报错为如下两个情况:

情况一:

VK_ERROR_DEVICE_LOST (RenderThread, 2 address info (1:411832422656:4096, 1:411832422656:4096), 2 vendor info (194:4310696642, 194:8605663938)): Exception type 0xc2: TRANSLATION_FAULT at level 2. VA: 0x. Access type 0x2: Read. Source id 0xf0: sc_0, Shader core 0 (tma1, Texture Cache AFBC 1). Group 0.  

pid: 0, tid: 25735 >>> com.xxxx.xxxx <<<  

backtrace:  
#00 pc 0x0000000000076360 /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)  
#1 pc 0x00000000008fde60 /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+1004)  
#2 pc 0x000000000001654c /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_0::__invoke(char const*)+80)  
#3 pc 0x000000000000bc64 /system/lib64/liblog.so (__android_log_assert+212)  
#4 pc 0x00000000006fd0f4 /system/lib64/libhwui.so (android::uirenderer::renderthread::(anonymous namespace)::onVkDeviceFault(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&) (.__uniq.192405051647925496281077346275335259674)+980)  
#5 pc 0x00000000006fccbc /system/lib64/libhwui.so (android::uirenderer::renderthread::(anonymous namespace)::deviceLostProcRenderThread(void*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&) (.__uniq.192405051647925496281077346275335259674)+76)  
#6 pc 0x0000000000207f44 /system/lib64/libhwui.so (skgpu::InvokeDeviceLostCallback(skgpu::VulkanInterface const*, VkDevice_T*, void*, void ()(void, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&), bool)+628)  
#7 pc 0x0000000000207624 /system/lib64/libhwui.so (GrVkResourceProvider::checkCommandBuffers()+1732)  
#8 pc 0x000000000031dec8 /system/lib64/libhwui.so (GrDirectContext::performDeferredCleanup(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l>>, GrPurgeResourceOptions)+104)  
#9 pc 0x0000000000550044 /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+740)  
#10 pc 0x0000000000019bcc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+236)  
#11 pc 0x000000000001bd58 /system/lib64/libutils.so (libutil_thread_trampoline(void*) (.__uniq.226528677032898775202282855395389835431)+24)  
#12 pc 0x00000000000873e4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*) (.__uniq.67847048707805468364044055584648682506)+180)  
#13 pc 0x0000000000079c64 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68)

情况二:

VK_ERROR_DEVICE_LOST (RenderThread): No details: VK_EXT_device_fault not available/enabled.  

pid: 0, tid: 2764 >>> com.xxxx.xxxx <<<  

backtrace:  
#00 pc 0x00000000000a7cc8 /apex/com.android.runtime/lib64/bionic/libc.so (abort+156)  
#1 pc 0x00000000008a0f04 /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+476)  
#2 pc 0x0000000000016188 /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_0::__invoke(char const*)+80)  
#3 pc 0x000000000000d254 /system/lib64/liblog.so (__android_log_assert+288)  
#4 pc 0x000000000088a018 /system/lib64/libhwui.so (android::uirenderer::renderthread::(anonymous namespace)::onVkDeviceFault(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&) (.__uniq.192405051647925496281077346275335259674)+1032)  
#5 pc 0x0000000000889bb4 /system/lib64/libhwui.so (android::uirenderer::renderthread::(anonymous namespace)::deviceLostProcRenderThread(void*, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&) (.__uniq.192405051647925496281077346275335259674)+72)  
#6 pc 0x00000000004037ec /system/lib64/libhwui.so (skgpu::InvokeDeviceLostCallback(skgpu::VulkanInterface const*, VkDevice_T*, void*, void ()(void, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultAddressInfoEXT, std::__1::allocator> const&, std::__1::vector<VkDeviceFaultVendorInfoEXT, std::__1::allocator> const&, std::__1::vector<std::byte, std::__1::allocatorstd::byte> const&), bool)+288)  
#7 pc 0x0000000000402fec /system/lib64/libhwui.so (GrVkResourceProvider::checkCommandBuffers()+1852)  
#8 pc 0x0000000000584550 /system/lib64/libhwui.so (GrDirectContext::performDeferredCleanup(std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l>>, GrPurgeResourceOptions)+112)  
#9 pc 0x000000000068e728 /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+728)  
#10 pc 0x0000000000019060 /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+248)  
#11 pc 0x000000000001b66c /system/lib64/libutils.so (libutil_thread_trampoline(void*) (.__uniq.226528677032898775202282855395389835431)+20)  
#12 pc 0x00000000000b78f4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+232)  
#13 pc 0x00000000000aac5c /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
2025-12-28 23:09 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该bug反馈整体较为完整,标题清晰描述了问题核心,BUG描述详细说明了崩溃率(2.9%)、设备型号(Samsung Galaxy A16 5G、Pixel系列)和技术栈(WebView内嵌H5+腾讯tcplayer webrtc),并提供了两种典型的backtrace日志。分类信息完整包含HBuilderX 4.87、Vue3、Android 16等关键版本信息。但复现步骤标记为"未知"是明显缺失,官方难以直接复现;缺少可运行的代码示例,虽有backtrace但无法验证具体触发条件。

经核查知识库,该问题成立且具有针对性:Android 16对Vulkan图形API进行了重大更新,而反馈中崩溃均源于VK_ERROR_DEVICE_LOST,与系统级Vulkan变更直接相关。知识库显示近期版本(如4.83.2025101713-alpha)已多次更新Android平台渲染相关SDK,包括uni-app x Android平台修复WebView组件优化。用户当前使用的HBuilderX 4.87非最新版,建议优先升级至4.83.2025101713-alpha或更高版本,该问题很可能已在后续Android渲染层修复中得到解决。若仍复现,需补充具体业务代码片段及复现路径以便深度排查。

内容为 AI 生成,仅供参考
DCloud_heavensoft

DCloud_heavensoft

可以打点对比验证下,在不使用腾讯的webrtc时,Android16的用户群里有没有崩溃,或者崩溃率是否低于合理值

  • E9C50FX (作者)

    App核心功能,没法不用的

    2025-12-28 23:17

要回复问题请先登录注册