uni-app运行鸿蒙系统时崩溃

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app运行鸿蒙系统时崩溃

操作步骤:

  • 新建项目运行到鸿蒙

预期结果:

  • 能够正常运行

实际结果:

  • 应用崩溃

bug描述:

运行鸿蒙真机,直接崩溃,堆栈信息如下所示
Error name: ReferenceError
Error message: WebKeyboardAvoidMode is not defined
Stacktrace:

  • at anonymous (oh_modules/.ohpm/@dcloudio+uni-app-runtime@2.3.7/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/WebBuilder.ets:35:24)
  • at updateFunc (…/…/…/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/jsXNode.js:258:1)
  • at observeComponentCreation2 (…/…/…/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/jsXNode.js:274:1)
  • at WebBuilder (oh_modules/.ohpm/@dcloudio+uni-app-runtime@2.3.7/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/WebBuilder.ets:32:35)
  • at build (…/…/…/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/jsXNode.js:178:1)
  • at build (…/…/…/foundation/arkui/ace_engine/frameworks/bridge/declarative_frontend/engine/jsXNode.js:68:1)
  • at createWebNode (oh_modules/.ohpm/@dcloudio+uni-app-runtime@2.3.7/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:667:1)
  • at WebView2 (oh_modules/.ohpm/@dcloudio+uni-app-runtime@2.3.7/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:895:1)
  • at createLaunchWebView (oh_modules/.ohpm/@dcloudio+uni-app-runtime@2.3.7/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:1451:1)
  • at anonymous (oh_modules/.ohpm/@dcloudio+uni-app-runtime@2.3.7/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:2306:1)

更多关于uni-app运行鸿蒙系统时崩溃的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

鸿蒙ide升级到5.0.3.800以上

更多关于uni-app运行鸿蒙系统时崩溃的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙IDE版本是Build Version: 5.0.3.806

WebKeyboardAvoidMode是在鸿蒙HarmonyOS Next Developer Beta3新增的,我设备是Developer Beta2,所以不支持

在处理uni-app运行在鸿蒙系统(HarmonyOS)时崩溃的问题时,首先需要确保你的开发环境、依赖库以及代码本身都是针对鸿蒙系统做了适配的。由于鸿蒙系统有其特定的API和运行时环境,直接使用为其他平台(如Android或iOS)编写的代码可能会导致兼容性问题。

以下是一些可能的解决步骤和相关的代码检查点,这些可以帮助你定位和解决崩溃问题:

  1. 检查manifest.json配置: 确保你的manifest.json文件中已经正确配置了鸿蒙平台的相关设置。例如,你可能需要指定特定的权限或者适配鸿蒙特有的API。

    {
      "mp-huawei": { // 鸿蒙平台配置
        "appid": "your_app_id",
        "setting": {
          "requestPermissions": ["ohos.permission.INTERNET"] // 示例权限配置
        }
      }
    }
    
  2. 使用条件编译: 利用uni-app的条件编译功能,为鸿蒙平台编写特定的代码逻辑。这有助于处理鸿蒙特有的问题或优化性能。

    #ifdef MP-HUAWEI
    // 鸿蒙平台特有的代码
    console.log("Running on HarmonyOS");
    #endif
    
  3. 检查第三方库: 如果你使用了第三方库,确保这些库支持鸿蒙系统。不兼容的库可能会导致应用崩溃。你可以尝试查找是否有鸿蒙专用的库版本或者替代品。

  4. 捕获异常: 在关键代码段添加异常捕获逻辑,这可以帮助你了解崩溃发生的具体位置。

    try {
      // 可能引发崩溃的代码
    } catch (error) {
      console.error("Error occurred:", error);
    }
    
  5. 查看日志: 详细查看鸿蒙系统提供的日志信息,这通常能提供更多关于崩溃原因的线索。你可以使用鸿蒙的开发者工具或者日志系统来获取这些信息。

  6. 更新uni-app和依赖: 确保你的uni-app框架和所有相关依赖都是最新版本,因为新版本可能修复了旧版本中的已知问题。

  7. 模拟器和真机测试: 在鸿蒙模拟器上测试你的应用,如果可能的话,也在真机上进行测试。模拟器可能无法完全模拟真机的所有行为。

通过上述步骤,你应该能够定位并解决uni-app在鸿蒙系统上运行崩溃的问题。如果问题依旧存在,可能需要更深入地分析代码或者寻求uni-app社区或鸿蒙开发者的帮助。

回到顶部