讨论广场 问答详情
OH4.1 浏览器报错
Miss.A_117 2024-07-25 20:02:25
140 评论 分享

浏览器hap,在3.2是正常的,在4.1报错如下:

 

Version:1.0.0
VersionCode:1000000
PreInstalled:Yes
Foreground:Yes
Pid:1867
Uid:20010023
Reason:TypeError
Error name:TypeError
Error message:Cannot read property WebviewController of undefined
SourceCode:
        this.webControllerArray = [new WebObject(new web_webview.WebviewController(), false)];
                                                     ^
Stacktrace:
    at Browser (entry/src/main/ets/model/Browser.ets:55:61)
    at Index (entry/src/main/ets/pages/Index.ets:28:28)
    at func_main_0 (Index.ets:206:14)
 

附件为完整log,怀疑是nweb异常,请问应该如何解决?

    行  38491: 07-25 19:16:21.249   338   338 E C02c11/APPSPAWN: [appspawn_nweb.cpp:116]Fail to dlopen libweb_engine.so, [Error relocating /system/lib/libnative_image.so: eglDupNativeFenceFDANDROID: symbol not found]
    行  38492: 07-25 19:16:21.250   338   338 E C02c11/APPSPAWN: [appspawn_nweb.cpp:122]Fail to dlopen libnweb_render.so, [(null)]

140 评论 分享
相关文件下载
test.001.zip
3.39 MB
下载
写回答
全部评论(3)
1 楼

PFNEGLDUPNATIVEFENCEFDANDROIDPROC eglDupNativeFenceFDANDROIDFunc  =(PFNEGLDUPNATIVEFENCEFDANDROIDPROC)eglGetProcAddress("eglDupNativeFenceFDANDROID");

可以试试,如下(非Mesa3D也可以使用,即去掉OHOS_MESA3D宏也可以使用),如果有效果,可以点下采纳:

 

 

1
2024-07-25 20:49:39
3 楼

需要确认下游览器的 hap 包是基于 3.2 还是 哪个版本编译出来的,还有就是系统环境也麻烦提供下,不同的系统版本,SDK 升级后一般会有一些 api 升级变更。

你可以参考下 4.1 Release 下的 Browser 这里的写法

code/BasicFeature/Web/Browser/entry/src/main/ets/model/Browser.ets · OpenHarmony/applications_app_samples - 码云 - 开源中国 (gitee.com)

2024-07-26 10:04:25

从提供的 标记内容来看,OpenHarmony)的Web相关的类和方法有关。在4.1版本中,浏览器应用报错,错误信息指出Cannot read property WebviewController of undefined,这表明在尝试访问WebviewController对象时出现了未定义的问题。

根据提供的代码片段,this.webControllerArray = [new WebObject(new web_webview.WebviewController(), false)];这一行似乎是在创建一个WebObject实例,但可能在4.1版本中web_webview.WebviewController这个类或其引用发生了变化或者不再可用。由于错误码提到的401和17100001,这可能是API权限问题或者是某个功能被移除或重构。

为了解决这个问题,你可以尝试以下步骤:

  1. 检查版本兼容性:确保你的代码与OHOS 4.1的Webview API兼容。查阅最新的文档,确认WebviewController是否在新版本中有所更改或者已被替换。

  2. 更新依赖:如果WebviewController已经被新的类或接口取代,可能需要更新你的代码以使用新的API。

  3. 错误处理:添加适当的错误检查和异常处理,比如在创建对象之前检查它是否存在,或者提供一个默认值或回退机制。

  4. 日志分析:结合Hilog日志中的其他信息(如行38491和38492的错误),可能与libweb_engine.solibnweb_render.so的加载问题有关。确保这些库在你的应用中正确地被链接和加载。

  5. 查阅更新文档:查看OHOS 4.1的官方更新日志或API变更说明,了解是否有关于WebviewController或其他相关类的重大更改。

  6. 测试用例:创建一个最小可复现的测试场景,只包含必要的代码来触发错误,以便更容易定位问题所在。

如果问题与提供的数据无关,请告知我,我可以进一步帮助。

2024-07-26 09:58:09