华为鸿蒙系统HarmonyOS学习之五:鸿蒙OpenHarmony开发中常见问题

在搭建环境中经常遇到一些问题,下面的三类分别进行了归纳和汇总:

一、环境安装

 

  1. HarmonyOS SDK是否需要手动下载?不需要。在DevEco Studio中的“Settings > Appearance & Behavior > System Settings > HarmonyOS SDK”进行配置,选择安装路径后,DevEco Studio会自动联网进行SDK的下载。
     
  2. 为什么无法自动下载SDK和相关工具?检查是否成功连接Internet网络,如果所在网络被管控,不能直接访问外网,则需配置网络代理。可在“Settings > Appearance & Behavior > System Settings > HTTP Proxy” 进行配置。

二、功能开发

 

  1. 如何查看“config.json”文件的所有字段说明?“config.json”文件的各字段说明请查阅配置文件的元素。
     
  2. 怎么实现Ability可以被其他应用调用?开发者需要在“config.json”文件中将“abilities”字段的“visible”标签设置为true。
     
  3. 权限声明在哪里进行添加?开发者需要在“config.json”文件中的“reqPermissions”字段中声明所需要的权限,具体配置方法请参考申请权限。
     
  4. 使用数据库注解相关功能前有什么注意事项?使用注解功能需在模块的“build.gradle”文件的“ohos”节点中增加如下配置项(不使用注解功能无须配置):
  1. compileOptions{
  2.    annotationEnabled true
  3. }
  1. 使用<image>标签引入本地图片,但图片无法加载?图片无法加载的可能情况有三种:
  • 没有给图片设置宽度和高度,需要在对应的page目录下的css样式文件中设置图片的宽高。使用<image>标签的图片不会自动缩放,图片宽高超过组件的宽高会自动截取。
  • 图片引入路径错误。图片引入的路径必须是项目编译后的静态文件的路径。
  • 在导入图片或添加/删除页面后没有重新编译。需要重新编译刷新target文件中的代码。
  1. 如何在后一个页面获取前一个页面传递过来的参数?有三种方式可以获取前一个页面的参数。以如下场景为例:有两个页面“index”和“detail”,第二个页面“detail”需要获取从第一个页面“index”传递过来的参数。
  • 如果参数需要在页面中引用,可以直接在“detail.hml”中使用`{{参数名}}`的形式进行引用。
  • 如果需要对参数进行操作,在“detail.js”中,直接用this.参数名的形式使用。
  • 可以在“detail.js”的data域中定义一个同名参数进行接收,注意以这种方式接受的参数将覆盖已有的参数。
  1. 如何查询设备支持的硬件/软件功能?如何查询设备是否支持某个硬件/软件特性?
  2. 图片为什么显示不全?父类容器大小不能小于子组件容器大小。
  • 应用通过调用IBundleManager接口类中的getSystemAvailableCapabilities方法,可以查询设备支持的硬件/软件功能列表。具体的功能定义可以通过ohos.utils.CapabilityConstants类查询。
  • 应用通过调用IBundleManager接口类中的hasSystemCapability方法,可以查询设备是否支持某个硬件/软件功能。具体的功能定义可以通过ohos.utils.CapabilityConstants类查询

     9. 图片为什么显示不全?父类容器大小不能小于子组件容器大小。

 三、调测验证

  1. 编译工程提示“This device type does not match project profile.”或安装时出现“DEVICE_NOT_SUPPORT_ERROR”,如何解决?出现这种情况是由于“config.json”中配置的设备类型与调试设备类型不匹配,需要在“module”标签下配置对“deviceType”的定义。具体请参考表7的“deviceType”。
     
  2. 安装HAP失败,并提示“INCONSISTENT_BUNDLE_VERSION”,如何解决?系统中有重复应用,卸载系统中已有的包名相同的应用。
     
  3. 提示“signingConfig 'debug' can not be null or empty”,如何解决?检查“entry”下的build.gradle是否配置了签名。如果配了依然报错,检查是否误配到了工程级的build.gradle当中。
     
  4. 安装HAP失败,并提示“STRING_LENGTH_ERROR”,如何解决?可能原因有:
  • 包信息超过最大长度。包信息中包含的各属性字符串长度需要同时满足以下条件,否则会报错。
  1. bundleName的长度为7~127个字节。
  2. vendor的长度为0~255个字节。
  3. version.name的长度为0~127个字节。
  • 同时安装两个不同module生成的hap时,包信息不一致。需要比对两个module的“config.json”文件中“app”标签配置内容是否一致。