
HarmonyOS Developer 基于ArkTS开发常见问题
概述
Ability框架开发
- 查看配置文件的所有字段说明
- 使Ability可以被其他应用调用
- 分别实现JS Ability跳转JS Ability和Java Ability(JS)
- 旋转屏幕,如何防止界面生命周期重启
- 在设备上设置Ability的landscape属性,运行后如何取消小窗显示
- 跳转到其他应用时报错“[c4d4d3492eb8531, 0, 0] ContextDeal::startAbility fetchAbilities failed”
- 更新SDK后提示 “@ohos.application.Ability”/“@ohos.application.AbilityStage”等模块找不到或者无相关类型声明
- 编译hap包时,找不到registerEnvironmentCallback、unregisterEnvironmentCallback等接口
UI开发
- Shape组件设置填充色为透明(ArkTS)
- 如何设置状态栏颜色(JS/ArkTS)
- 如何创建成对的key:value的Map变量(ArkTS)
- List开发如何获取其滚动时Y轴偏移量(ArkTS)
- 图片资源放置目录(JS)
- video组件无法播放音频(JS)
- 使用npm引入三方包(JS)
- 引用js代码文件时使用工程下的绝对路径(JS)
- 判断方法是否为异步方法(JS)
- 多媒体资源加载失败(JS)
- 使用<image>标签引入的本地图片无法加载(JS)
- 网络图片无法加载(JS/ArkTS)
- 是否可以利用轻量级智能穿戴的物理按键开发应用的交互设计(JS)
- 轻量级智能穿戴的文件句柄是否有上限(JS)
- 关于轻量级智能穿戴k-v键值储存问题(JS)
- 轻量级智能穿戴开发如何获取dom中的元素(JS)
- 如何在页面间传值(JS)
- list如何滚动到某个item(JS)
- 轻量级智能穿戴text是否支持多行(JS)
- 控件不显示(JS)
- 添加的页面不显示(JS)
- 轻量级智能穿戴如何使用定时器(JS)
- 轻量级智能穿戴的Left、Top为什么不生效(JS)
- 动态绑定为什么不生效(JS)
- 轻量级智能穿戴实现相对定位和绝对定位(JS)
- 如何控制组件的显示与隐藏(JS)
- 使用另一个js文件中的常量(JS)
- 控制块元素横纵向排列(JS)
- 控制一个元素显示或隐藏(JS)
- JS是否可以调用C++的so库(JS)
- JS模块export的module在别的JS文件中import,修改不生效(JS)
- 设置了border-left-radius属性后没有任何效果(JS)
- list在手表上有时候自动放大(JS)
- 如何使用list组件的scrollTo方法(JS)
- 去掉list-item在按下时出现的阴影(JS)
- video组件在预览时出现‘初始化播放器失败’(JS)
- image组件切换图源(JS)
- 整齐等宽地展示采用for循环的图片列表(JS)
- 不通过点击控制checkbox的勾选状态(JS)
- 纵向排列文本(JS)
- 文本超出时显示省略号(JS)
- 通过js方法实现点击input组件并打开键盘的效果(JS)
- API 8 slider的步长step设置为0.1之后实际依然为1(JS)
- 使用ForEach/LazyForEach渲染语法渲染组件,组件仅显示一个或者丢失部分子组件(ArkTS)
- 修改ForEach使用的数据对象,UI不刷新(ArkTS)
- 使用LazyForEach渲染语法渲染组件,UI不刷新(ArkTS)
- 使用LazyForEach嵌套LazyForEach(或ForEach)显示异常(ArkTS)
- IF条件变化后UI不刷新(ArkTS)
网络与连接开发
设备管理开发
数据管理开发
DFX开发
使用hilog的格式参数类型为%d或者%s时,日志打印为何显示private
相关资源
- 应用审核相关FAQ
- 智能助手:通过问答的形式,直接获取常见问题的解决方法。
- 开发者论坛:官方问题反馈渠道,方便开发者进行问题讨论。
Ability框架开发
查看配置文件的所有字段说明
Stage模型下应用配置文件为“app.json5”和“module.json5”,各字段说明请查阅应用配置文件(Stage模型)。
FA模型下应用配置文件为“config.json”,各字段说明请查阅应用配置文件(FA模型)。
使Ability可以被其他应用调用
需要在“config.json”文件中将“abilities”字段的“visible”标签设置为“true”。
分别实现JS Ability跳转JS Ability和Java Ability(JS)
JS Ability跳转JS Ability,示例代码参考:
JS Ability跳转Java Ability,使用FeatureAbility.startAbility实现跳转,具体能力说明参考JS FA如何调用PA。
示例代码参考:
旋转屏幕,如何防止界面生命周期重启
适用于:HarmonyOS SDK 3.1.1.1版本,API8 FA模型
在config.json文件中添加configChanges属性为orientation。
在设备上设置Ability的landscape属性,运行后如何取消小窗显示
适用于:HarmonyOS SDK 3.0版本
由于代码中设置了smartWindowDeviceType为手机、平板,代码如下:
即选择了支持浮窗的设备为手机、平板,所以真机运行时会显示浮窗效果,如不需要显示取消设置即可。
跳转到其他应用时报错“[c4d4d3492eb8531, 0, 0] ContextDeal::startAbility fetchAbilities failed”
适用于:HarmonyOS SDK 3.0版本,API8 FA模型
一般用startAbility,实现如下:
可参考PageAbility开发指导。
更新SDK后提示 “@ohos.application.Ability”/“@ohos.application.AbilityStage”等模块找不到或者无相关类型声明
问题现象
更新SDK后报错“Cannot find module '@ohos.application.AbilityStage' or its corresponding type declarations”,“Cannot find module '@ohos.application.Ability' or its corresponding type declarations”。
解决措施
模块名有所变更,可以尝试替换为新的模块名(常用接口如下):
原有接口 | 新接口 |
@ohos.application.Ability | @ohos.app.ability.UIAbility |
@ohos.application.AbilityStage | @ohos.app.ability.AbilityStage |
- 使用了旧接口@ohos.application.Ability。
可以通过直接修改import,来切换到新的namespace上:
- 使用了旧接口@ohos.application.AbilityStage。
可以通过直接修改import,来切换到新的namespace上:
更多问题处理请参考变更说明及适配指导。
编译hap包时,找不到registerEnvironmentCallback、unregisterEnvironmentCallback等接口
问题现象
编译hap包时,报错Property 'registerEnvironmentCallback' does not exist on type 'ApplicationContext',Property 'unregisterEnvironmentCallback' does not exist on type 'ApplicationContext'。
解决措施
注册注销回调方法registerEnvironmentCallback、unregisterEnvironmentCallback接口名变更,需要替换为新的on、off接口。
代码示例
如原先使用了接口registerEnvironmentCallback、unregisterEnvironmentCallback:
可以修改为使用on、off:
网络与连接开发
使用网络图片,运行应用无法加载图片
问题现象
做一个图片展示的demo,使用本地化图片(使用common路径),应用成功加载图片;使用网络化图片(使用图片地址),运行应用无法加载图片。
解决措施
加载网络图片需要授权:ohos.permission.INTERNET。
设备管理开发
如何获取系统API版本号(JS/ArkTS)
示例代码如下:
开发智能穿戴应用,获取心率信息(JS)
请参考如下代码实现,其中heartRate即为心率值:
详情请参考:JS API参考-传感器。
调用getThermalLevel获取热档位信息,返回undefined(JS/ArkTS)
存在服务异常,目前情况下,只能尝试重新调用。
数据管理开发
如何实现数据存储与获取(JS/ArkTS)
导入相关包:
数据存储:
数据获取:
rdb关系型数据库中TEXT类型保存超长文本失败
适用于:API8及以下版本
API7以及API8版本对TEXT文本存储长度限制在1024字节,在API9以上的版本中已经放开了限制。
DFX开发
使用hilog的格式参数类型为%d或者%s时,日志打印为何显示private
直接使用%d、%s等格式化参数时,标准系统默认使用private替换真实数据进行打印,防止数据泄露。
如果需要打印出真实数据,需要使用%{public}d替换%d或者%{public}s替换%s。
