HarmonyOS 鸿蒙Next开发 Cef使用
HarmonyOS 鸿蒙Next开发 Cef使用 我已经编译成功鸿蒙版本的cef库,然后在qt程序(简单的窗口应用程序)中通过cef原生api使用cef。之后编译出qt的so库(testcef.so),通过dev studio打包后真机运行testcef.so时,到初始化cef时会崩溃,查看日志提示:com.ohos.ohosqttemplate/chromium: [1010/185124.363306:ERROR:icu_util.cc(228)] Invalid file descriptor to ICU data received.
打包时,libcef.so和testcef.so等相关库放在了entry\libs\arm64-v8a下,icudtl.dat等cef资源文件放在了entry\src\main\resources\resfile下,qt代码中已指定了运行时CefSettings的locales_dir_path和resources_dir_path,分别指向bundle/resources/resfile/locales和bundle/resources/resfile两个目录。
请教各路大神,cef所需要的资源文件怎么放置才能初始化成功?或者在鸿蒙的qt程序中怎么使用libcef?
更多关于HarmonyOS 鸿蒙Next开发 Cef使用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
鸿蒙Next中Cef组件已移除,系统不再提供Chromium内核支持。应用需使用鸿蒙WebView组件加载网页,该组件基于系统统一渲染引擎,支持H5标准。若需扩展功能可通过WebView控制器实现JS与ArkTS交互,或通过Web组件的事件回调处理页面生命周期。第三方浏览器内核无法集成,所有网络请求需遵循鸿蒙网络安全规范。
在HarmonyOS Next中使用CEF时,ICU数据文件路径配置是关键问题。根据日志提示"Invalid file descriptor to ICU data received",说明CEF未能正确加载icudtl.dat文件。
建议检查以下几点:
-
资源文件部署路径:虽然您已将icudtl.dat放在entry/src/main/resources/resfile下,但需要确认打包后实际部署路径。在HarmonyOS应用中,资源文件访问应使用AbilityContext.getResourceManager()提供的路径。
-
CefSettings配置:确保在初始化CEF前正确设置resources_dir_path和locales_dir_path:
CefSettings settings; settings.resources_dir_path = "bundle/resources/resfile"; settings.locales_dir_path = "bundle/resources/resfile/locales"; -
文件权限:确认应用具有读取资源文件的权限,在config.json中配置相应权限。
-
路径验证:在运行时输出当前工作目录和资源路径,验证文件是否存在于预期位置。
-
文件完整性:确认icudtl.dat文件未被损坏且版本与CEF库匹配。
建议重新检查资源文件在应用包中的实际部署路径,并使用绝对路径进行测试。


