OpenHarmony SystemUI开发记录 天天快看
最近学习OpenHarmony应用开发, SDK版本是3.2.9.2 Beta4,IDE版本是3.1.0.200。参考官方文档,做了个Demo应用,调试、运行非常顺利。启动应用后,状态栏和导航栏占用的高度过高,显得很奇怪,尝试修改一下系统应用。
摸石头过河因为没做过移动端开发,最初以为状态栏和导航栏是由Launcher控制的,从示例中找了个launcher,按照文档进行编译,放在设备上怎么也起不来,Google查了半天,最后发现该版本中文档描述不全,参考最新版本文档进行编译,运行成功。
有了经验之后,使用系统Launcher进行编译,报了一堆错误,哪里报错改哪里,修改完之后编译成功,因为是系统应用,不能使用自动签名。根据官方提供的签名方式进行签名,放到设备中无法显示应用中心和Dock。
(资料图片仅供参考)
看了系统Launcher代码,感觉状态栏和导航栏并不是由Launcher控制的,又下载了系统SystemUI代码,编译时也有几个报错,不知道怎么解决,后来发现下载的代码不对,应该从分支中选择版本,从标签中选择的版本代码可能不全或者有问题。
编译安装替换系统应用方法:
// 获取系统目录读写权限hdc shell "mount -o remount,rw /"// 拷贝应用到SystemUI目录hdc file send phone_statusbar-phone_entry-default-signed.hap /system/app/com.ohos.systemui/SystemUI-StatusBar.hap// 应用放在/data目录下,删除/data目录下的所有文件,系统会重新安装系统应用。hdc shell "rm -rf /data/*"// 重启设备hdc shell reboot1.系统应用签名环境
SDK:Beta4,代码:Beta4
现象
系统应用无法使用自动签名。
解决方案
参考链接:系统应用签名,我使用的是标准签名。
下载material文件夹、OpenHarmony.p12文件、OpenHarmonyApplication.pem文件,放在signature目录下,修改项目中的build-profile.json5文件,添加以下信息,重新编译即可。
"products": [ { "name": "default", "signingConfig": "default" } ], "signingConfigs": [{ "name": "default", "material": { "storePassword": "00000016D9DCF063F0FC4BBD0E7FE1E3B06A67C07BECE1BDD4E2A3EFDAE20F890810EC02AA2A", "certpath": "signature/OpenHarmonyApplication.pem", "keyAlias": "OpenHarmony Application Release", "keyPassword": "00000016FD3897FD4C46940ED39FFC652872B7B18BEDCCA07400A6EBEE307C9C41B96DB6B64D", "profile": "signature/systemui.p7b", "signAlg": "SHA256withECDSA", "storeFile": "signature/OpenHarmony.p12" } }]2.SystemUI编译报错(SDK问题)环境
SDK:Beta4,代码:Beta4
现象
编译报错,信息如下:
> hvigor ERROR: Failed :phone_statusbar:default@CompileArkTS... > hvigor ERROR: Tools execution failed. ArkTS:ERROR File: /xxx/applications_systemui-OpenHarmony-3.2-Beta4/features/batterycomponent/src/main/ets/default/batteryModel.ts:16:25 Cannot find module "@ohos.batteryinfo" or its corresponding type declarations. Module not found: Error: Can"t resolve "bundle/extensionAbilityInfo" in "/xxx/applications_systemui-OpenHarmony-3.2-Beta4/common/src/main/ets/plugindatasource" Module not found: Error: Can"t resolve "bundle/extensionAbilityInfo" in "/xxx/applications_systemui-OpenHarmony-3.2-Beta4/common/src/main/ets/plugindatasource/common" Module not found: Error: Can"t resolve "bundle/metadata" in "/xxx/applications_systemui-OpenHarmony-3.2-Beta4/common/src/main/ets/plugindatasource/common"排查
查看API发现bundle目录下没有extensionAbilityInfo和metadata文件,而bundleManager中有这两个文件。
解决方案
在报错的地方将bundle/extensionAbilityInfo改为bundleManager/extensionAbilityInfo,bundle/metadata改为bundleManager/metadata,编译通过。
环境
SDK:Beta2,代码:Beta4
现象
编译报错,信息如下:
> hvigor ERROR: Failed :pc_statusbar:default@CompileArkTS... > hvigor ERROR: Tools execution failed. ETS:ERROR File: /xxx/applications_systemui-OpenHarmony-3.2-Beta4/features/batterycomponent/src/main/ets/default/batteryModel.ts:16:25 Cannot find module "@ohos.batteryInfo" or its corresponding type declarations.排查
api中info的i为小写,而文件中导入包的时候是大写I
解决方案
将batteryModel.ts文件中大写I改为小写i,即可编译成功,如下:
import BatteryInfo from "@ohos.batteryinfo";3.SystemUI应用安装失败环境
SDK:Beta4,代码:Beta4
现象
替换状态栏应用后,状态栏消失
排查
使用bm命令手动安装应用报错:
手动安装应用bm install -p /system/app/com.ohos.systemui/SystemUI-Status.hap -u 0// 报错信息error: failed to install bundle.error: install releaseType not same报错信息意思是设备中SystemUI中SDK版本与我自己编译的SystemUI SDK版本不一致,查看一下设备中SystemUI的SDK版本:
hdc shell cat /data/app/el1/bundle/public/com.ohos.systemui/phone_statusbar/module.json解决方案:
系统中使用的是SDK Beta2,而我编译使用的是SDK Beta4,所以需要将SDK切换到Beta2版本(Beta2编译Beta4版本代码也会有问题,参考:SystemUI编译报错(SDK问题))。
4.安装导航栏后状态栏消失环境
SDK:Beta4,代码:Beta2
现象
单独安装状态栏正常,安装导航栏后状态栏消失
排查
查看状态栏日志,发现有很多日志没有打出来,追踪了一下,定位到features/statusbarcomponent/src/main/ets/com/ohos/common/StatusBarConfiguration.ts文件中,发现卡在这里
status_bar_size_landscape搜索一下这个字段,发现base/element/string.json文件中存在该字段,zh_CN/element/string.json文件中不存在该字段。(zh_CN/element/string.json添加字段后状态栏正常显示,是什么原因不清楚)
解决方案
product/phone/statusbar/src/main/resources/zh_CN/element/string.json文件中添加以下内容:
{ "name": "status_bar_size_portrait", "value": "16" }, { "name": "status_bar_size_landscape", "value": "16" }, { "name": "phone_status_bar_size_portrait", "value": "16" }, { "name": "phone_status_bar_size_landscape", "value": "16" },定制化开发经过摸索,状态栏和导航栏布局在窗口管理中控制,可以修改模块下的ServiceExtAbility.ts文件来自定义实现,也可以修改配置文件resources/zh_CN/element/string.json中的以下字段,来控制状态栏和导航栏的高度(这里高度不能加单位,按照官网文档的说法默认使用的VP单位)。
{ "name": "nav_bar_size_portrait", "value": "26" }, { "name": "nav_bar_size_landscape", "value": "26" }, { "name": "status_bar_size_portrait", "value": "16" }, { "name": "status_bar_size_landscape", "value": "16" },总结做普通应用Demo上手容易,ArkTS做页面布局方便,使用组件点点点即可得到想要的样式。因为使用的是Beta版本,修改SystemUI过程中遇到很多坑,比如编译报错,应用安装失败,应用消失等问题,在Google上基本搜不出来解决方案,只能在官方文档、51CTO社区、华为开发者联盟上搜索、提问来解决。像是安装导航栏后状态栏消失问题,解决起来很容易,但是寻找解决方法要花很长时间,这也是写这篇文章的原因,希望可以帮助开发者解决问题,同时也希望OpenHarmony社区能够建立起来,为开发者答疑解惑。最后,感谢Haoc_小源同学的帮助,感谢TiZizzz的OpenHarmony应用签名 - 系统应用签名文章。
标签:
精彩推送
哈登打趣:比赛中有一回合没执行教练战术 然后他叫暂停骂我们
直播吧4月18日讯今日NBA季后赛,76人在主场以96-84击败篮网,系列赛2-0领先。赛后,哈登接受了记者采访。本场
【世界速看料】右舵MG你见过吗?名爵两款新车亮相上海车展!
在2023年上海车展正式开幕前夕,我们率先给大家体验了1 5T版本的MG7,以及MG面向欧洲市场出口的MG4车型...
被控受贿937万余元,中储粮安徽分公司原副总经理胡群受审|全球视讯
4月18日上午,合肥市中级人民法院一审公开开庭审理了中国储备粮管理集团有限公司安徽分公司原党委常委、...
世界资讯:五大封测龙头重磅亮相五月深圳半导体展,600+精选展商已就位
SEMI-e深圳国际半导体展将于2023年5月16日-18日在深圳国际会展中心(宝安新馆)盛大开幕!本届展会以“芯机会•
新闻快讯
X 关闭
X 关闭
新闻快讯
- OpenHarmony SystemUI开发记录 天天快看
- 《互联网保险消费者洞察报告》:主力消费人群转向“新青年” 行业呈智能化、个性化、普适化趋势
- 不锈钢厂高镍生铁采购动态
- 6寸照片尺寸多少厘米宽和高_6寸照片尺寸
- 华为孟晚舟:数字化是全行业的共同机遇
- 环球快消息!军粮城效春物流有限公司一仓库起火 无人员伤亡
- 2023上海车展:宝马新款X6 M首发亮相
- 平顶山新华区:小手拉大手 共创文明城 资讯推荐
- 对媳妇说的话 全球快讯
- 环球速讯:世邦魏理仕独家代理出售香港深水湾洋房
- ChatGPT威胁版权?42家德国作者和表演者协会呼吁欧盟对AI加强监管
- BWZJ-FTA DC24V防爆一体化火焰检测器维护与故障排除-全球快播
- 中国华融在香港起诉德宝地产前CEO,要求偿还2.84亿美元
- 任鸿斌会见乌拉圭外长布斯蒂略 当前通讯
- 全程帮办到底 邱县“事办不成找我”窗口
- 热消息:ai复制快捷键有几个(ai复制快捷键)
- 全球观天下!8.99万元 长安逸达新增车型正式上市
- 福能东方收到中山市翠亨新区关于地块有偿收储函件_今日热搜
- 世界快报:农发行镇赉县支行开展诵读红色家书活动
- 世界热点评!国泰君安期货:打造优质金融服务产品助提实体产业风险管理质量
- 西安城市交通技师学院为患病同学捐款献爱心
- 四大机场2022年总亏损超80亿元,今年国际航班航线逐步优化_每日速看
- 飞机上能带酒吗_民航局最新携带液态物品规定-热点
- 一季度末天津存贷款综合增速9.2% 创2017年9月以来新高-独家焦点
- 山笔画顺序_山的笔画简介 环球观察
- 今天最新消息 数字人总部呼叫:请报告地球情况!
- 今日热议:蝙蝠侠大战蝙蝠侠大战超人正义黎明迅雷下载_蝙蝠侠大战超人正义黎明迅雷下载
- 热点聚焦:英费尔德_关于英费尔德的简介
- 环球快报:北京长峰医院火灾事故 39 名伤病员仍在治疗
- 焦点快报!上港在先进1球多打一人的极有利情况下最终被苏宁90分钟内逼成1比1平
- 订火车票的电话 电话订火车票号码
- 回稳、向上!一季度财政收入有何特点?二季度能否持续向好
- 全球快看点丨发改委谈消费市场:开局良好 服务消费明显恢复
- 这些地方从“夏”穿越到“冬”:大暴雨+暴雪+降温近30℃
- 世界微速讯:江苏索普: 江苏索普:华泰联合证券关于公司非公开发行股票之保荐总结报告书
- 灵活的胖达!大运会项目图标动起来
- 世界速看:国际油价18日微涨 纽约市场收于每桶80.86美元
- 摩托罗拉新机外观细节全曝光!带手写笔的手机不多了 每日快讯
- 天天热消息:奈飞将关闭运营25年的DVD邮寄业务 不会扩大原创作品影院上映数量
- 俄罗斯:南千岛群岛是俄方领土 日本无法逃避现实
- 昆明哪家医院做人流靠谱?诊所是否可靠呢?靠
- 每日精选:筑巢引“凤”揽人才 祁阳赴高校招才引智
- 昆明天空为啥灰蒙蒙?相关部门回应
- 2023马鲁蒂铃木Brezza S-CNG预订开放价格即将公布
- 今年春天火了一种鞋,叫“德训鞋”,简单大方又实穿,女明星都爱
- 全球通讯!财富通每日策略
- 小五郎喜欢的偶像是谁_小五郎
- 男士+功效护肤,“华熙生物”们的第三条曲线?
- 华为“廉价手机”公布:配备惊人7000mAh电池|故障比苹果少好几倍
- 2023年初级会计职称准考证打印时间