鸿蒙APP开发基础知识
鴻蒙開發基礎知識目錄
- DevEco Studio編輯器de使用
- 創建新項目
- 打開一個項目
- 新建一個文件夾
- 新建一個布局文件
- 新建一個Page Ability(Feature Ability)
- 配置Ability
- 設置自己的名字和時間
- 設置字體大小
- DevEco Studio編輯器de常用快捷鍵
- 代碼查找
- 代碼注釋
- 手動代碼聯想
- 快速對代碼進行格式化
- 對文件進行重命名
- 鴻蒙項目和Android項目的對比
- 資源文件
- 資源文件介紹
- 資源文件的使用
- elemen元素資源的創建
- XML引用資源文件
- Java引用資源文件
- 為Element資源文件添加注釋或特殊標識
- config.json應用配置文件
- "app"、"deviceConfig"
- "module"
- 配置系統的權限
- 限定詞目錄
- 限定詞目錄的命名
- 限定詞目錄與設備狀態的匹配規則
- 日志工具
- 日志工具的使用
- 日志工具類
- 調試
DevEco Studio編輯器de使用
DS與AS在視覺和使用上大同小異,也有代碼智能補齊、代碼錯誤檢查、代碼自動跳轉等功能,本節主要就DevEco Studio的使用(或使用技巧)做一個歸納(會一直更新哦~)。
創建新項目
打開一個項目
新建一個文件夾
新建一個布局文件
在 src\main\resources\base\layout 目錄下,右鍵點擊 layout 目錄 , 在彈出的菜單中選擇New選項,再選擇Layout Resource File
在彈出的對話框中,輸入布局文件名稱,以及選擇布局類型(目前只能生成DirectionalLayout 線性布局)后,點擊Finish完成創建
生成的布局文件如下
在該布局文件中,自動添加了線性布局 DirectionalLayout 作為根布局
新建一個Page Ability(Feature Ability)
Page Ability可以理解為安卓的Acitvity
在你想創建Ability的文件上右鍵,New>Ability>Empty Page Ability(Java)
在彈出的對話框中填寫相應信息后,點擊Finish
新的Page Ability與其對應的layout就創建好了呀
可以看見,在鴻蒙應用中在創建頁面時,會生成兩個類:“MyAbility”和“MyAbilitySlice”,和一個布局文件“ability_my.xml”。
想了解這三個文件,可以看本人的從零開始看鴻蒙代碼文件的文章。
配置Ability
創建了一個新的Ability以后,會在config.json中的"abilities"標簽下自動添加新的Ability的配置,如下:
對Ability配置的解讀參照本文章后面config.json 應用配置文件。
設置自己的名字和時間
File>Settings…
設置字體大小
File>Settings…
然后選擇Editor>Font
DevEco Studio編輯器de常用快捷鍵
代碼查找
全局查找:ctrl+shift+F
局部查找:ctrl+F
代碼注釋
注釋代碼(或者對已注釋的代碼塊取消注釋):Ctrl+/
手動代碼聯想
手動代碼聯想需要重新設置快捷鍵
File>Settings
Keymap>Main menu>Code>Completion>Basic
在 Basic 上點擊右鍵,選擇Add Keyboard Shortcut添加鍵盤快捷鍵
然后在彈窗內,輸入快捷鍵Alt+/后,點擊OK(當然你也可以設置自己習慣的快捷鍵)
這時候你會發現,這里有兩個快捷鍵,所以我們需要刪除Ctrl+空格快捷鍵
在 Basic 上點擊右鍵,選擇Remove Ctrl+空格,刪除該快捷鍵
最后Apply一下就OK啦
快捷鍵就可以使用了呀
快速對代碼進行格式化
Ctrl+Alt+L
對文件進行重命名
Shift+F6
鴻蒙項目和Android項目的對比
(部分為自己創建的文件夾)
資源文件
資源文件介紹
資源文件(官方文檔):
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-resource-file-categories-0000001052066099
資源文件的使用
官方文檔:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-resource-file-example-0000001051733014
elemen元素資源的創建
包括字符串、整型數、顏色、樣式等資源的json文件。每個資源均由json格式進行定義,例如:
boolean.json:布爾型
color.json:顏色
float.json:浮點型
intarray.json:整型數組
integer.json:整型
pattern.json:樣式
plural.json:復數形式
strarray.json:字符串數組
strings.json:字符串值
先在element文件夾下New一個File
然后取好名字點擊OK
這樣就創建好了一個新的boolean.json
然后模仿原有的string.json寫一個存放boolean類型的json
boolean.json(布爾型)示例
其他元素資源也可以模仿著寫
color.json(顏色)示例
float.json(浮點型)示例
{"float":[{"name":"float_1","value":"3.19"},{"name":"float_copy","value":"$float:float_1"},{"name":"float_px","value":"100px"}] }integer.json(整型)示例
{"integer":[{"name":"integer_1","value":1},{"name":"integer_2","value":2},{"name":"integer_3","value":3}] }intarray.json(整型數組)示例
{"intarray":[{"name":"intarray_1","value":[100,200,"$integer:integer_3"]}] }strings.json(字符串值)示例
{"string": [{"name": "app_name","value": "MyApplication"},{"name": "mainability_description","value": "Java_Phone_Empty Feature Ability"},{"name": "HelloWorld","value": "Hello World"},{"name": "myability_description","value": "Java_Phone_Empty Feature Ability"},{"name": "page","value": "This is a page."},{"name": "button","value": "This is a button."}] }strarray.json(字符串數組)示例
{"strarray":[{"name":"strarray_num","value":[{"value":"one"},{"value":"$string:HelloWorld"},{"value":"two"},{"value":"three"}]}] }pattern.json(樣式)示例
{"pattern":[{"name":"base","value":[{"name":"width","value":"100vp"},{"name":"text_size","value":"100fp"},{"name":"size","value":"25px"}]},{"name":"child","parent":"base","value":[{"name":"noTitile","value":"Yes"}]}] }plural.json(復數形式)示例
{"plural":[{"name":"eat_apple","value":[{"quantity":"one","value":"%d apple"},{"quantity":"other","value":"%d apples"}]}] }XML引用資源文件
通過一個示例來解釋
現在有一個xml布局如下
圖中框出的就是XML引用資源文件的方式(引用的資源文件如前節elemen元素資源的創建)
ohos:text="$string:button"這句話的意思就是,在XML文件中,引用string.json文件中類型為“String”、名稱為“button”的資源
一般來說,XML文件引用資源文件的格式如下:
$type:name
特別地,如果引用的是系統資源,則采用:
$ohos:type:name
效果如下:
其實在xml中,點擊色塊是可以直接選擇顏色的哦~
Java引用資源文件
通過一個示例來解釋
現有一個MainAbilitySlice.java如下
(ability_main.xml如前節XML引用資源文件,引用的資源文件如前節elemen元素資源的創建)
圖中框出的就是JAVA引用資源文件的方式
ResourceManager rsManager = this.getResourceManager(); text.setText(rsManager.getElement(ResourceTable.String_HelloWorld).getString());這句話的意思就是,在Java文件中,引用string.json文件中類型為“String”、名稱為“String_HelloWorld”的資源
注意:
在使用getElement的時候,一定要用try/catch包起來
一般來說,Java引用資源文件的格式如下:
ResourceTable.type_name
特別地,如果引用的是系統資源,則采用:
ohos.global.systemres.ResourceTable.type_name
效果:
如果你在xml或者java中引用的系統資源顯示為一串數字,有可能是你的DS不是最新版本!!!!
截至2021.4.21,官方文檔中明確表明目前支持的系統資源文件為:
xml中可以引用到的為:
Java引用profile資源文件,去獲取profile中的文件內容:
Java引用rawfile目錄中的資源文件:通過指定文件路徑和文件名稱來引用。
在Java文件中,引用一個路徑為“resources/rawfile/”、名稱為“rawfile_text.txt”的資源文件,示例如下:
為Element資源文件添加注釋或特殊標識
Element目錄下的不同種類元素的資源均采用JSON文件表示,資源的名稱“name”和取值“value”是每一條資源的必備字段。如果需要為某一條資源備注信息,以便于資源的理解和使用,可以通過“comment”字段添加注釋。
eg:
在string、strarray、plural這三類資源中,可以通過特殊標識來處理無需被翻譯的內容。例如,一個字符串資源的Value取值為“We will arrive at %s”,其中的變量“%s”在翻譯過程中希望保持不變。
法一:在value字段中添加{}。
法二:添加xliff:g</xliff:g>標記對。
{"string":[{"name":"message_arrive","value":"We will arrive at <xliff:g id='time' example='5:00 am'>%s</xliff:g>"}] }具體使用示例:
config.json應用配置文件
配置文件的元素(官方文檔):https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-config-file-elements-0000000000034463
DS的config.json就相當于AS的AndroidManifest.xml
主要的分為三個部分:app、deviceConfig、module
①app表示應用的全局配置信息
②deviceConfig包含在具體設備上的應用配置信息
③module表示HAP包的配置信息(可以理解為當前模塊的配置信息)
“app”、“deviceConfig”
“module”
值得一提的是
在abilities對象的內部結構中,如果在該Ability的“skills”屬性中,“actions”的取值包含 “action.system.home”,“entities”取值中包含“entity.system.home”,則該Ability的icon、label將同時作為應用的icon、label。如果存在多個符合條件的Ability,則取位置靠前的Ability的icon、label作為應用的icon、label。
也就是說,如果你要設置該 Ability 為啟動 Ability,將 config.json 中該 Ability 配置放在"abilities"標簽中第一個,或者在該Ability的“skills”屬性中,“actions”的取值包含 “action.system.home”,“entities”取值中包含“entity.system.home”。
配置系統的權限
在config.json中的"module"下的"reqPermissions"可以配置系統的權限。
權限開發指導官方文檔:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/security-permissions-guidelines-0000000000029886
應用權限列表官方文檔:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/security-permissions-available-0000001051089272
在安卓中,權限申請過程是:先清單文件靜態聲明,然后根據是否需要版本適配,在代碼中動態申請權限(在Android 6.0之前,只要指明了權限,系統一般都會自動授權,也有需要詢問用戶是否授權,但是在Android 6.0以及后對于危險權限必須用戶同意后才能進行)。
鴻蒙權限申請步驟:
1、靜態聲明
在config.json文件"module"中的"reqPermissions"靜態聲明
如果需要聲明多個權限就用逗號隔開
①name:必須,填寫需要聲明的權限的名字(可在官方文檔中查找)。
②reason:可選,當申請的權限為user_grant權限時此字段必填。描述申請權限的原因。
③usedScene:可選,當申請的權限為user_grant權限時此字段必填。描述權限使用的場景和時機。ability:可以使用的ability的名稱,when:使用時間(inuse(使用時)、always(始終))。
2、代碼動態申請權限
值得一提的是,敏感權限的申請需要按照動態申請流程向用戶申請授權,非敏感權限不涉及用戶的敏感數據或危險操作,僅需在config.json中聲明,應用安裝后即被授權,受限開放的權限通常是不允許三方應用申請的。
限定詞目錄
限定詞目錄可以由一個或多個表征應用場景或設備特征的限定詞組合而成(有語言、國家或地區、屏幕密度等維度)。限定詞目錄需要開發者自行創建,但需要遵循限定詞目錄的命名要求以及與限定詞目錄與設備狀態的匹配規則。
官方文檔:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-resource-file-categories-0000001052066099(進入后搜索限定詞目錄)
限定詞目錄的命名
移動國家碼_移動網絡碼-語言_文字_國家或地區-橫豎屏-設備類型-深色模式-屏幕密度
開發者可以根據應用的使用場景和設備特征,選擇其中的一類或幾類限定詞組成目錄名稱。需要注意的是,語言、文字、國家或地區之間采用下劃線連接,移動國家碼和移動網絡碼之間也采用下劃線連接,除此之外的其他限定詞之間均采用中劃線連接。eg:zh_CN-phone-ldpi(設備使用的語言類型為中文,用戶所在的國家或地區為中國,設備的類型是手機,設備的屏幕密度是大規模的屏幕密度)。限定詞取值要求參照官方文檔
限定詞目錄與設備狀態的匹配規則
在為設備匹配對應的資源文件時,限定詞目錄匹配的優先級從高到低依次為:移動國家碼和移動網絡碼 > 區域(語言_文字_國家或地區)> 橫豎屏 > 設備類型 > 顏色模式 > 屏幕密度。
如果限定詞目錄中包含移動國家碼和移動網絡碼、語言、文字、橫豎屏、設備類型、顏色模式限定詞,則對應限定詞的取值必須與當前的設備狀態完全一致,該目錄才能夠參與設備的資源匹配。
日志工具
日志工具的使用
HarmonyOS提供了HiLog日志系統
在輸出日志前,需要先調用HiLog的輔助類HiLogLabel定義日志標簽。
使用HiLogLabel(int type, int domain, String tag)定義日志標簽,其中包括了日志類型、業務領域和TAG。
參數type:用于指定輸出日志的類型。HiLog中當前只提供了一種日志類型,即應用日志類型LOG_APP。
參數domain:用于指定輸出日志所對應的業務領域,取值范圍為0x0~0xFFFFF,開發者可以根據需要進行自定義。一般情況下,我們建議把這 5 個 16 進制數分成兩組,前面三個數表示應用中的模塊編號,后面兩個表示模塊中的類的編號。
參數tag:用于指定日志標識,可以為任意字符串,建議標識調用所在的類或者業務行為。
開發者可以根據自定義參數domain和tag來進行日志的篩選和查找。
HiLog中定義了五種日志級別,并提供了對應的方法用于輸出不同級別的日志
①DEBUG:調試信息。默認不輸出,輸出前需要在設備的“開發人員選項”中打開“USB調試”開關。
②INFO:INFO級別日志表示普通的信息。
③WARN:WARN級別日志表示存在警告。
④ERROR:ERROR級別日志表示存在錯誤。
⑤FATAL:FATAL級別日志表示出現致命錯誤、不可恢復錯誤。
例如輸出一條INFO級別的信息:
HiLog.info?(HiLogLabel label, String format, Object... args)
示例代碼:
參數label:定義好的HiLogLabel標簽。
參數format:格式字符串,用于日志的格式化輸出。格式字符串中可以設置多個參數,例如格式字符串為“Failed to visit %s”,“%s”為參數類型為string的變參標識,具體取值在args中定義。每個參數需添加隱私標識,分為{public}或{private},默認為{private}。{public}表示日志打印結果可見;{private}表示日志打印結果不可見,輸出結果為。
參數args:可以為0個或多個參數,是格式字符串中參數類型對應的參數列表。參數的數量、類型必須與格式字符串中的標識一一對應。
開發者可以在HiLog窗口查看日志信息。可通過設置設備、進程、日志級別和搜索關鍵詞來篩選日志信息。搜索功能支持使用正則表達式,可通過搜索自定義的業務領域值和TAG來篩選日志信息。
(有時候設置標簽過濾會有問題,也可以使用搜索框過濾)
日志工具類
在實際開發中,可以寫一個工具類來對日志做一個適當封裝,方便調用、打印日志和調試程序。
日志封裝類
實際調用
public class MyAbilitySlice extends AbilitySlice {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_my);HiLogUtils.d("debug");HiLogUtils.i("info");HiLogUtils.w("wran");HiLogUtils.e("error");HiLogUtils.f("fatal");} }輸出效果
調試
這里介紹的是使用模擬器進行調試。
官方文檔:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_emulator-0000001115721921
第一步:調試前的檢查
在啟動Feature模塊的調試前,請檢查Feature模塊下的config.json文件的abilities數組是否存在“visible”屬性,如果不存在,請手動添加,并將該屬性取值為true,否則Feature模塊的調試無法進入斷點。Entry模塊的調試不需要做該檢查(下圖只是示例“visible”屬性的位置)。
然后就是需要啟動模擬器!!
第二步:設置斷點(如果需要設置斷點調試的話)
選定要設置斷點的有效代碼行,在行號(比如:28行、29行)的區域后,單擊鼠標左鍵設置斷點(如圖示的紅點)。
設置斷點后,調試能夠在正確的斷點處中斷,并高亮顯示該行。
第三步:點擊Debug
在工具欄點擊Debug
然后在彈窗中,選擇設備,點擊OK
現在就可以進行調試了呀~
(如果Debug報錯,請參考本人的鴻蒙Debug報錯:Could not connect to remote process. Aborting debug session.文章)
下面是一些調試的按鈕說明
在Ability和AbilitySlice中都是可以使用HiLog與調試的
如果需要本文配套代碼的可以去本人的上傳的資源中下載哦!
總結
以上是生活随笔為你收集整理的鸿蒙APP开发基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吗咿呀嘿-用js来搞个简单的人脸识别
- 下一篇: steps 步骤条中插入自定义描述des