HarmonyOS 鸿蒙Next中libwebview_napi闪退问题
HarmonyOS 鸿蒙Next中libwebview_napi闪退问题 我这里有一个Crash,从log上看,好像是libwebview_napi相关,有人知道原因吗?
#00 pc 00000000000981cc /system/lib64/module/web/libwebview_napi.z.so(OHOS::NWeb::WebSchemeHandler::GetArkWebSchemeHandler(OHOS::NWeb::WebSchemeHandler*)+248)(1ce856b5ca0d047b5934fff990f1d0d4)
#01 pc 00000000000988e8 /system/lib64/module/web/libwebview_napi.z.so(OHOS::NWeb::WebSchemeHandler::~WebSchemeHandler()+184)(1ce856b5ca0d047b5934fff990f1d0d4)
#02 pc 000000000006b110 /system/lib64/module/web/libwebview_napi.z.so(OHOS::NWeb::NapiWebSchemeHandler::JS_Constructor(napi_env__, napi_callback_info__)::$_3::invoke(napi_env, void, void*)+32)(1ce856b5ca0d047b5934fff990f1d0d4)
#03 pc 00000000000567d4 /system/lib64/platformsdk/libace_napi.z.so(ArkNativeReference::~ArkNativeReference()+100)(e64c8633400073729159d5f939287257)
#04 pc 0000000000056a40 /system/lib64/platformsdk/libace_napi.z.so(ArkNativeReference::~ArkNativeReference()+16)(e64c8633400073729159d5f939287257)
#05 pc 0000000000074de8 /system/lib64/platformsdk/libace_napi.z.so(NativeReferenceManager::~NativeReferenceManager()+56)(e64c8633400073729159d5f939287257)
#06 pc 0000000000074e10 /system/lib64/platformsdk/libace_napi.z.so(NativeReferenceManager::~NativeReferenceManager()+16)(e64c8633400073729159d5f939287257)
#07 pc 0000000000068368 /system/lib64/platformsdk/libace_napi.z.so(NativeEngine::Deinit()+248)(e64c8633400073729159d5f939287257)
#08 pc 0000000000040968 /system/lib64/platformsdk/libace_napi.z.so(ArkNativeEngine::~ArkNativeEngine()+152)(e64c8633400073729159d5f939287257)
#09 pc 0000000000040b60 /system/lib64/platformsdk/libace_napi.z.so(ArkNativeEngine::~ArkNativeEngine()+16)(e64c8633400073729159d5f939287257)
#10 pc 0000000000038118 /system/lib64/module/libtaskpool.z.so(Commonlibrary::Concurrent::TaskPoolModule::Worker::ReleaseWorkerThreadContent()+508)(5f92d1a1d33e6a9f54ee52d0e112d20f)
#11 pc 00000000000369d8 /system/lib64/module/libtaskpool.z.so(Commonlibrary::Concurrent::TaskPoolModule::Worker::ExecuteInThread(void const*) (.cfi)+844)(5f92d1a1d33e6a9f54ee52d0e112d20f)
#12 pc 00000000000320c4 /system/lib64/module/libtaskpool.z.so(Commonlibrary::Concurrent::TaskPoolModule::TaskRunner::TaskInnerRunner::Run()+72)(5f92d1a1d33e6a9f54ee52d0e112d20f)
更多关于HarmonyOS 鸿蒙Next中libwebview_napi闪退问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
操作系统/版本
更完整的crash 日志
工程机版本:(如:NOH-AN00 204.0.0.65(SP1C00E67R1P12))
IDE版本:xxx(如:DevEco Studio 4.0.3.600)
SDK版本:xxx(如:OpenHarmony 4.0.10.10)
我们将在收到信息后尽快处理。
更多关于HarmonyOS 鸿蒙Next中libwebview_napi闪退问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在5.1版本后没有遇到这个问题,可能是已经修复了
在HarmonyOS鸿蒙Next中,libwebview_napi闪退问题可能与WebView组件的初始化或资源加载有关。常见原因包括内存不足、资源文件损坏或API调用不当。建议检查WebView的初始化代码,确保资源路径正确,并监控内存使用情况。此外,查看日志文件以获取更多错误信息,有助于定位问题根源。
从错误日志来看,这是一个典型的NAPI引用管理问题导致的崩溃。主要发生在WebSchemeHandler析构过程中,与NAPI对象生命周期管理相关。
关键点分析:
- 崩溃发生在WebSchemeHandler析构调用链中(#01)
- 涉及NAPI引用释放过程(#03-#09)
- 最终在TaskPool工作线程中触发(#10-#12)
可能原因:
- WebSchemeHandler对象被提前释放,而NAPI层仍持有引用
- 跨线程的NAPI对象访问问题
- 未正确处理NAPI对象的生命周期
建议检查:
- 确保WebSchemeHandler生命周期与NAPI包装对象同步
- 检查是否在非JS线程直接操作了NAPI对象
- 确认所有napi_ref都正确释放
这种问题通常需要检查相关NAPI包装类的实现,特别是析构函数和引用管理部分。