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