在线观看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>
    主站蜘蛛池模板: 特级生活片 | 国产精品久线观看视频 | 天天综合天天综合色在线 | 色综合天 | 激情六月天婷婷 | 狠狠干免费视频 | 韩国午夜精品理论片西瓜 | 二区三区在线 | 久久成人综合网 | 38pao强力打造永久免费高清视频 | 亚洲欧洲色 | 免费a级网站 | 国产精品久久久久久影院 | 久久婷婷丁香七月色综合 | 天天在线看片 | 成人剧场 | 天天av天天翘天天综合网 | 污污的黄色小说 | 色婷婷久久合月综 | 欧美三级午夜伦理片 | 午夜片在线观看 | 亚洲伊人色一综合网 | 激情丁香小说 | 天天久久综合网站 | 六月婷婷视频 | 欧美成人午夜精品一区二区 | 4虎影视国产在线观看精品 4虎影院永久地址www | 国产精品一久久香蕉产线看 | 亚洲人成电影院 | 久久riav二区三区 | 午夜视频免费在线 | toyota东热综合网 | 人人干天天干 | 国产一级特黄aaaa大片野外 | 操插干 | 亚洲男人的天堂久久香蕉 | 亚洲乱论 | 亚洲午夜网站 | 35pao强力打造| 欧美一区二区精品 | 97射射|