在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony SystemUI開發記錄

OpenHarmony技術社區 ? 來源: OpenHarmony技術社區 ? 作者: OpenHarmony技術社區 ? 2023-04-25 14:53 ? 次閱讀

最近學習 OpenHarmony 應用開發, SDK 版本是 3.2.9.2 Beta4,IDE 版本是 3.1.0.200。

參考官方文檔,做了個 Demo 應用,調試、運行非常順利。啟動應用后,狀態欄和導航欄占用的高度過高,顯得很奇怪,嘗試修改一下系統應用。

摸石頭過河

因為沒做過移動端開發,最初以為狀態欄和導航欄是由 Launcher 控制的。

https://gitee.com/openharmony/applications_app_samples/tree/master/ability/Launcher

從示例中找了個 launcher,按照文檔進行編譯,放在設備上怎么也起不來,Google 查了半天,最后發現該版本中文檔描述不全,參考最新版本文檔進行編譯,運行成功。

有了經驗之后,使用系統 Launcher 進行編譯,報了一堆錯誤。

https://gitee.com/openharmony/applications_launcher

哪里報錯改哪里,修改完之后編譯成功,因為是系統應用,不能使用自動簽名。根據官方提供的簽名方式進行簽名,放到設備中無法顯示應用中心和 Dock。

看了系統 Launcher 代碼,感覺狀態欄和導航欄并不是由 Launcher 控制的,又下載了系統 SystemUI 代碼,編譯時也有幾個報錯,不知道怎么解決。

后來發現下載的代碼不對,應該從分支中選擇版本,從標簽中選擇的版本代碼可能不全或者有問題。

編譯安裝踩坑

替換系統應用方法:

//獲取系統目錄讀寫權限
hdcshell"mount-oremount,rw/"
//拷貝應用到SystemUI目錄
hdcfilesendphone_statusbar-phone_entry-default-signed.hap/system/app/com.ohos.systemui/SystemUI-StatusBar.hap
//應用放在/data目錄下,刪除/data目錄下的所有文件,系統會重新安裝系統應用。
hdcshell"rm-rf/data/*"
//重啟設備
hdcshellreboot

①系統應用簽名

環境: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":"OpenHarmonyApplicationRelease",
"keyPassword":"00000016FD3897FD4C46940ED39FFC652872B7B18BEDCCA07400A6EBEE307C9C41B96DB6B64D",
"profile":"signature/systemui.p7b",
"signAlg":"SHA256withECDSA",
"storeFile":"signature/OpenHarmony.p12"
}
}]

②SystemUI 編譯報錯(SDK 問題)

環境:SDK:Beta4,代碼:Beta4

現象:編譯報錯

信息如下:

>hvigorERROR:Faileddefault@CompileArkTS...
>hvigorERROR:Toolsexecutionfailed.
ArkTS:ERRORFile:/xxx/applications_systemui-OpenHarmony-3.2-Beta4/features/batterycomponent/src/main/ets/default/batteryModel.ts:16:25
Cannotfindmodule'@ohos.batteryinfo'oritscorrespondingtypedeclarations.
Modulenotfound:Error:Can'tresolve'bundle/extensionAbilityInfo'in'/xxx/applications_systemui-OpenHarmony-3.2-Beta4/common/src/main/ets/plugindatasource'
Modulenotfound:Error:Can'tresolve'bundle/extensionAbilityInfo'in'/xxx/applications_systemui-OpenHarmony-3.2-Beta4/common/src/main/ets/plugindatasource/common'
Modulenotfound:Error:Can'tresolve'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

現象:編譯報錯

信息如下:

>hvigorERROR:Faileddefault@CompileArkTS...
>hvigorERROR:Toolsexecutionfailed.
ETS:ERRORFile:/xxx/applications_systemui-OpenHarmony-3.2-Beta4/features/batterycomponent/src/main/ets/default/batteryModel.ts:16:25
Cannotfindmodule'@ohos.batteryInfo'oritscorrespondingtypedeclarations.
排查:api 中 info 的 i 為小寫,而文件中導入包的時候是大寫 I。 ede19c00-e307-11ed-ab56-dac502259ad0.png

解決方案:將 batteryModel.ts 文件中大寫I改為小寫 i,即可編譯成功。

如下:

importBatteryInfofrom"@ohos.batteryinfo";

③SystemUI 應用安裝失敗

環境:SDK:Beta4,代碼:Beta4

現象:替換狀態欄應用后,狀態欄消失

排查:使用 bm 命令手動安裝應用報錯

手動安裝應用
bminstall-p/system/app/com.ohos.systemui/SystemUI-Status.hap-u0
//報錯信息
error:failedtoinstallbundle.
error:installreleaseTypenotsame

報錯信息意思是設備中 SystemUI 中 SDK 版本與我自己編譯的 SystemUI SDK 版本不一致。

查看一下設備中 SystemUI 的 SDK 版本:

hdcshellcat/data/app/el1/bundle/public/com.ohos.systemui/phone_statusbar/module.json

edf76a80-e307-11ed-ab56-dac502259ad0.png

解決方案:系統中使用的是 SDK Beta2,而我編譯使用的是 SDK Beta4,所以需要將 SDK 切換到 Beta2 版本。

Beta2 編譯 Beta4 版本代碼也會有問題,參考:SystemUI 編譯報錯(SDK 問題))。

④安裝導航欄后狀態欄消失

環境:SDK:Beta4,代碼:Beta2

現象:單獨安裝狀態欄正常,安裝導航欄后狀態欄消失

排查:查看狀態欄日志,發現有很多日志沒有打出來,追蹤了一下,定位到 features/statusbarcomponent/src/main/ets/com/ohos/common/StatusBarConfiguration.ts 文件中,發現卡在這里:

ee1ba1b6-e307-11ed-ab56-dac502259ad0.png

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 社區能夠建立起來,為開發者答疑解惑。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4802

    瀏覽量

    68738
  • 編譯
    +關注

    關注

    0

    文章

    659

    瀏覽量

    32906
  • 開發者
    +關注

    關注

    1

    文章

    580

    瀏覽量

    17036
  • OpenHarmony
    +關注

    關注

    25

    文章

    3728

    瀏覽量

    16398

原文標題:OpenHarmony SystemUI開發記錄

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    OpenHarmony應用開發安裝數學庫

    OpenHarmony應用開發安裝數學庫
    的頭像 發表于 12-01 14:15 ?1190次閱讀
    <b class='flag-5'>OpenHarmony</b>應用<b class='flag-5'>開發</b>安裝數學庫

    HarmonyOS與OpenHarmony應用開發差異

    DevEco Studio是HarmonyOS的配套的開發IDE,因為HarmonyOS是基于OpenHarmony開發的,因此,使用DevEco Studio(配套HarmonyOS)也可以進行
    發表于 10-22 10:35

    OpenHarmony設備開發入門【1】初始OpenHarmony

    操作系統的框架和平臺,促進萬物互聯產業的繁榮發展。官方gitee倉庫:https://gitee.com/openharmony技術架構如下:關于系統的特性,這里不再過多贅述,開發者可以直接在 官方
    發表于 01-20 09:08

    請教大神SystemUI加載過程是如何去完成的

    請教大神SystemUI加載過程是如何去完成的?
    發表于 03-03 07:39

    使用900版本ide編譯systemui,狀態欄和控制中心無法顯示怎么處理?

    碰巧到開發板,上下不顯示、時間和顯示欄可以正常顯示到屏幕控制中心滑動不出來,中間環境如下開發板:dayu200openharmony系統版本:3.2-beta1systemui代碼版本
    發表于 05-26 15:33

    OpenHarmony3.1 Release for Rk3568 如何修改系統應用,如SystemUI-NavigationBar &Settings

    需要定制一下狀態欄,添加一個按鈕。發現修改applications中的systemui 未生效,查看之后發現編譯到out目錄的是applications/standard/hap 中已經編譯好的hap文件。所以我該如何修改呢。
    發表于 08-17 17:09

    openharmony開發企業有哪些

    將會在各種智能終端上運用。那么openharmony開發企業有哪些?下面小編就為大家帶來openharmony開發企業有哪些的答案。 openhar
    的頭像 發表于 06-23 11:13 ?2219次閱讀

    openharmony開發openharmony開發

    現在市面上支持OpenHarmony開發板已經非常多了,OpenHarmony不僅僅只能在海思系列芯片上運行,比較常見的有HiSpark、小熊派系列。這些開發板都是基于海思的Hi38
    的頭像 發表于 06-24 09:03 ?3690次閱讀

    OpenHarmony2.03516編譯燒錄開機成功

    ,具備的主要功能如下: 新增 22 個子系統,支持全面的 OS 能力,支持內存大于 128M 的帶屏設備開發等。 提供系統三大應用:桌面、設置和 SystemUI。 提供全新的 OpenHarmony
    的頭像 發表于 06-25 17:22 ?2417次閱讀
    <b class='flag-5'>OpenHarmony</b>2.03516編譯燒錄開機成功

    OpenHarmony輕量系統開發【1】初始OH

    的。 后續將給大家陸續分享輕量系統開發相關內容 目錄: OpenHarmony輕量系統開發【1】初始OpenHarmony OpenHarmony
    發表于 02-25 17:49 ?1005次閱讀

    openharmony開源社區 OpenHarmony開發樣例上新了

    openharmony開源社區 OpenHarmony開發樣例上新了 OpenHarmony 開源項目是由開放原子開源基金會孵化及運營的開源項目,由開放原子開源基金會
    的頭像 發表于 04-25 16:37 ?2425次閱讀

    OpenHarmony開發體系內容介紹

    初學OpenHarmony開發者最需要構建對OpenHarmony開發體系的整體了解。
    的頭像 發表于 07-04 10:34 ?1497次閱讀

    OpenHarmony輕量系統書籍推薦《OpenHarmony輕量設備開發理論與實戰》

    最近大家問的智能家居套件方面有沒有可以參考的資料,這里給大家統一回復一下 推薦大家可以看這本書 《OpenHarmony輕量設備開發理論與實戰》 本書系統地講授OpenHarmony 輕量系統 設備
    的頭像 發表于 07-20 12:43 ?1273次閱讀

    openharmony開發應用

    隨著智能設備的普及和多樣化,開發者們對于更加靈活、高效的操作系統需求與日俱增。在這個背景下,華為推出了OpenHarmony,一個全場景智能終端操作系統和生態平臺。本文將詳細探討
    的頭像 發表于 12-19 09:42 ?717次閱讀

    基于ArkTS語言的OpenHarmony APP應用開發:HelloOpenharmony

    1、程序簡介該程序是基于OpenHarmony標準系統編寫的UI應用類:HelloOpenHarmony。本案例是基于API9接口開發。本案例已在OpenHarmony凌蒙派-RK35
    的頭像 發表于 09-15 08:09 ?416次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應用<b class='flag-5'>開發</b>:Hello<b class='flag-5'>Openharmony</b>
    主站蜘蛛池模板: 69精品久久久久| 4hc44www四虎永久| 性视频亚洲| 99热99操99射| 欧美黑粗| 午夜久久免费视频| 最近最新中文字幕在线第一页| 97人人艹| 扒开双腿爽爽爽视频www| 可以直接看的黄色网址| 日韩a免费| 色综合久久久久久久久五月| 乱操视频| 手机在线你懂的| 午夜免费片| a一级| 午夜神马福利影院| 黄 色 成 年人在线| 男人资源网| 全免费一级午夜毛片| 婷婷在线观看香蕉五月天| 天堂8在线天堂bt| 国产伦精品一区二区三区高清| 国产香蕉精品视频在| 久久婷婷色综合老司机| 人人揉揉香蕉大青草| 傲视影院午夜毛片| 日本爱爱片| 欧美一卡2卡三卡四卡五卡 | 成人三级在线观看| 国产福利在线观看你懂的| 国产三级毛片视频| 色五月婷婷成人网| 欧美日韩一区二区三区视频 | 中文字幕一区二区三区精彩视频 | 午夜 在线播放| 国产午夜视频在线观看第四页| 一女多夫嗯啊高h| 亚洲永久网站| 亚洲成人资源| 色香色香欲天天天影视综合网|