HarmonyOS 引入了一个不支持模拟器的库,怎么处理能让工程能在模拟器和真机都能运行?

引入了一个三方库,不支持模拟器运行,运行报错,怎么做可以让工程既可以在模拟器运行,又可以在真机运行,模拟器可以不使用该功能。

阅读 679
1 个回答

如果只是需要运行而不使用该功能的话,可以使用动态import方案:以speech Kit为例,可以通过检测运行的手机的类型,来确定是否动态加载speech包来避免闪退。

参考示例:

const productModel = AppStorage.get<string>('productModel');
//启动时从deviceInfo获取productModel信息存放到appstorage中,然后在后续页面中获取
if (productModel != "emulator") {
  //将包含了speech kit的UI封装到一个har中 @ohos/readerfeature 不是模拟器就加载
  import('@ohos/readerfeature').then((ns: ESObject) => {
    this.nodeController =
      new ns.ReaderNodeController(this.contentid, this.articleItem.title, this.articleItem.content, this.onBackPressed)
    // 用NodeController包装包含speech kit 及其text reader的UI,动态创建传给页面上的参数 nodeController
  })
}

然后再页面上任意位置使用NodeContainer(this.nodeController) 加载到页面UI中,关于动态import可参考以下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-dynamic-import-V5

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进