自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

鴻蒙應(yīng)用開發(fā)入門:進(jìn)一步了解第一個例子里的細(xì)節(jié)

開發(fā)
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)https://harmonyos.51cto.com/#zz

 [[360074]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com/#zz

4.1 開發(fā)完第一個鴻蒙應(yīng)用后,下面在了解一下完整的鴻蒙應(yīng)用打包發(fā)布后應(yīng)該是什么樣子:

一個完整的打包后應(yīng)用結(jié)構(gòu)如下圖所示,這里我們先了解結(jié)構(gòu),具體怎么打包很簡單只要前提是要簽名!


1. HAP的分類

HAP又可分為entry和feature兩種模塊類型:

1)entry:應(yīng)用的主模塊。一個APP中,對于同一設(shè)備類型必須有且只有一個entry類型的HAP,可獨立安裝運(yùn)行。

2) feature:應(yīng)用的動態(tài)特性模塊。一個APP可以包含一個或多個feature類型的HAP,也可以不含。

2. HAP的組成

HAP是由代碼(Ability)、第三方庫、資源以及應(yīng)用配置文件構(gòu)成,只有包含Ability的HAP才能夠獨立運(yùn)行。

1)Ability

Ability是應(yīng)用所具備的能力的抽象,一個應(yīng)用可以包含一個或多個Ability。Ability分為兩種類型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是應(yīng)用的基本組成單元,能夠?qū)崿F(xiàn)特定的業(yè)務(wù)功能。FA有UI界面,而PA無UI界面。

2)庫文件

庫文件是應(yīng)用依賴的第三方代碼形式,存放在libs目錄。

3)資源文件

應(yīng)用的資源文件(字符串、圖片、音頻等)存放于resources目錄下

4)配置文件

配置文件 (config.json) 是應(yīng)用的Ability信息,用于聲明應(yīng)用的Ability,以及應(yīng)用所需權(quán)限等信息

3. pack.info文件

描述應(yīng)用軟件包中每個HAP的屬性,由IDE編譯生成,應(yīng)用市場根據(jù)該文件進(jìn)行拆包和HAP的分類存儲。

HAP的具體屬性包括:

1)delivery-with-install: 表示該HAP是否支持隨應(yīng)用安裝。

2)name:HAP文件名。

3)module-type:模塊類型,entry或feature。

4)device-type:表示支持該HAP運(yùn)行的設(shè)備類型。

4.2 config.json詳細(xì)細(xì)節(jié)

1. 應(yīng)用的每個HAP的根目錄下都存在一個“config.json”配置文件,主要涵蓋以下三個方面:

1)應(yīng)用的全局配置信息,包含應(yīng)用的包名、生產(chǎn)廠商、版本號等基本信息。

2)應(yīng)用在具體設(shè)備上的配置信息。

3)HAP包的配置信息,包含每個Ability必須定義的基本屬性(如包名、類名、類型以及Ability提供的能力),以及應(yīng)用訪問系統(tǒng)或其他應(yīng)用受保護(hù)部分所需的權(quán)限等。

2. config.json配置文件的內(nèi)部結(jié)構(gòu)

應(yīng)用的配置文件“config.json”中由“app”、“deviceConfig”和“module”三個部分組成,缺一不可。

3. “config.json”文件約定

配置文件“config.json”采用JSON文件格式,由屬性和值兩部分構(gòu)成:

1)屬性:屬性出現(xiàn)順序不分先后,且每個屬性最多只允許出現(xiàn)一次。

2)值:每個屬性的值為JSON的基本數(shù)據(jù)類型(數(shù)值、字符串、布爾值、數(shù)組、對象或者null類型)。

學(xué)習(xí)建議:根據(jù)官方文檔自己做一個思維導(dǎo)圖,做的過程中熟悉,用的時候查詢,我學(xué)習(xí)的時候做的,附件在后面,需要一個叫MindMaster的思維導(dǎo)圖工具打開。做完思維導(dǎo)圖系統(tǒng)地熟悉一遍這個配置項后,再在下面的練習(xí)中,把每個配置項目的意思備注后面,加深印象。

練習(xí)1:認(rèn)一遍app部分,把說明注釋在第一個例子的app配置后面:

  1. "app": { //表示應(yīng)用的全局配置信息,就像這樣,后面的自己做...... 
  2.   "bundleName""com.example.myapplication"
  3.   "vendor""example",  
  4.   "version": { 
  5.     "code": 1,  
  6.     "name""1.0"   
  7.   }, 
  8.   "apiVersion": {  
  9.     "compatible": 3,   
  10.     "target": 3  
  11.   } 
  12. }, 

 練習(xí)2:認(rèn)一遍deviceConfig部分,把說明注釋在后面:

  1. "deviceConfig": {//表示應(yīng)用在具體設(shè)備上的配置信息。 
  2.   "default": {  
  3.     "process""com.huawei.hiworld.example"
  4.     "directLaunch"false
  5.     "supportBackup"false
  6.     "network": { 
  7.       "usesCleartext"true
  8.       "securityConfig": { 
  9.         "domainSettings": {  
  10.           "cleartextPermitted"true,  
  11.           "domains": [ 
  12.             { 
  13.               "subDomains"true
  14.               "name""example.ohos.com" 
  15.             } 
  16.           ] 
  17.         } 
  18.       } 
  19.     } 
  20.   } 

 練習(xí)3:認(rèn)一遍認(rèn)一下module部分,把說明注釋在后面:

  1. "module": {//表示HAP包的配置信息。該標(biāo)簽下的配置只對當(dāng)前HAP包生效。 
  2.   "package""com.example.myapplication",  
  3.   "name"".MyApplication"
  4.   "reqCapabilities": [ 
  5.     "video_support"   
  6.   ], 
  7.   "deviceType": [ 
  8.     "tv" 
  9.   ], 
  10.   "distro": { 
  11.     "deliveryWithInstall"true
  12.     "moduleName""entry"
  13.     "moduleType""entry" 
  14.   }, 
  15.   "abilities": [ 
  16.     { 
  17.       "skills": [ 
  18.         { 
  19.           "entities": [ 
  20.             "entity.system.home" 
  21.           ], 
  22.           "actions": [ 
  23.             "action.system.home" 
  24.           ] 
  25.         } 
  26.       ], 
  27.       "orientation""landscape",  
  28.       "formEnabled"false
  29.       "name""com.example.myapplication.MainAbility"
  30.       "icon""$media:icon"
  31.       "description""$string:mainability_description"
  32.       "label""MyApplication"
  33.       "type""page"
  34.       "launchType""standard" 
  35.     }, 
  36.     { 
  37.       "orientation""landscape"
  38.       "formEnabled"false
  39.       "name""com.example.myapplication.Secondbility"
  40.       "icon""$media:icon"
  41.       "description""$string:secondbility_description"
  42.       "label""entry"
  43.       "type""page"
  44.       "launchType""standard" 
  45.     } 
  46.   ] 

 4.3 進(jìn)一步了解資源目錄的細(xì)節(jié)

1. 資源文件的知識點

應(yīng)用的資源文件都在resources目錄下,resources子目錄分兩大類目錄:具體的知識點,同樣我們做成思維導(dǎo)圖,見后面附件。

2. 資源文件的使用

base目錄與限定詞目錄中的資源文件:通過指定資源類型(type)和資源名稱(name)來引用。

1)Java文件引用資源文件的格式:

(1)普通資源:ResourceTable.type_name。

(2)系統(tǒng)資源,則采用:ohos.global.systemres.ResourceTable.type_name。

(3)目前支持的系統(tǒng)資源文件:

① ic_app:表示HarmonyOS應(yīng)用的默認(rèn)圖標(biāo),類型為媒體。

② request_location_reminder_title:表示“請求使用設(shè)備定位功能”的提示標(biāo)題,類型為字符串。

③ request_location_reminder_content:表示“請求使用設(shè)備定位功能”的提示內(nèi)容,類型為字符串。

示例一:在Java文件中,引用系統(tǒng)資源。

  1. ResourceManager rsManager = this.getResourceManager(); 
  2. try { 
  3.     String str = rsManager 
  4.             .getElement(ohos.global.systemres.ResourceTable. 
  5.                     String_request_location_reminder_title).getString(); 
  6.     Text text = (Text) findComponentById(ResourceTable.Id_text); 
  7.     text.setText(str); 
  8. } catch (Exception e) { 
  9.     terminateAbility(); 

 示例二:在Java文件中,引用string.json文件中類型為“String”、名稱為“app_name”的資源。

string.json的例子:

  1.     "color":[ 
  2.         { 
  3.             "name":"red"
  4.             "value":"#ff0000" 
  5.         }, 
  6.         { 
  7.             "name":"red_ref"
  8.             "value":"$color:red" 
  9.         } 
  10.     ] 
  11.  
  12. ohos.global.resource.ResourceManager resManager = getResourceManager(); 
  13. int color = resManager.getElement(ResourceTable.Color_red).getColor(); 

 示例四:在Java文件中,獲取profile中的文件內(nèi)容。

  1. Resource resource = null
  2. try { 
  3.     Text text = (Text) findComponentById(ResourceTable.Id_text); 
  4.     resource = getResourceManager().getResource(ResourceTable.Profile_test1); 
  5.     InputStreamReader inputStreamReader = new InputStreamReader(resource, "utf-8"); 
  6.     BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
  7.     String lineTxt = ""
  8.     while((lineTxt = bufferedReader.readLine()) != null){ 
  9.         text.append(","+lineText); 
  10.     } 
  11. } catch (Exception e) { 
  12.      

 2)XML文件引用資源文件的格式:

(1)普通資源,$type:name

(2)系統(tǒng)資源,則采用:$ohos:type:name。

在XML文件中,引用 string.json文件中類型為“String”、名稱為“app_name”的資源,示例如下:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  3.     ohos:width="match_parent" 
  4.     ohos:height="match_parent" 
  5.     ohos:orientation="vertical"
  6.     <Text ohos:text="$string:app_name"/> 
  7. </DirectionalLayout> 

 9. rawfile目錄中的資源文件

通過指定文件路徑和文件名稱來引用。

在Java文件中,引用一個路徑為“resources/rawfile/”、名稱為“ttt.txt”的資源文件,示例如下:

  1. Resource resource = null
  2. try { 
  3.     Text text = (Text) findComponentById(ResourceTable.Id_text); 
  4.     resource = getResourceManager().getRawFileEntry("resources/rawfile/ttt.txt").openRawFile(); 
  5.     InputStreamReader inputStreamReader = new InputStreamReader(resource, "utf-8"); 
  6.     BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
  7.     String lineTxt = ""
  8.     while((lineTxt = bufferedReader.readLine()) != null){ 
  9.         text.append(","+lineTxt ); 
  10.     } 
  11. } catch (Exception e) { 
  12.  

 文章配套視頻課程《鴻蒙手機(jī)應(yīng)用開發(fā)入門》https://edu.51cto.com/course/26133.html

©著作權(quán)歸作者和HarmonyOS技術(shù)社區(qū)共同所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com/#zz

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2015-10-19 14:57:51

2009-12-28 10:08:07

OracleSQLDevelope開發(fā)框架

2011-07-27 12:58:43

Android MarAndroid應(yīng)用商店

2023-09-01 18:20:43

Chrome代碼測試版

2019-03-22 10:20:39

加速Windows 10啟動

2011-07-29 15:02:22

LifeSize視頻協(xié)作

2020-12-10 20:00:04

數(shù)字貨幣比特幣區(qū)塊鏈

2020-11-12 09:29:29

5G

2009-03-19 19:00:35

虛擬化VmwareEMC

2014-01-08 10:22:28

思科Videoscape

2009-11-30 18:35:05

BizSparkDreamSparkWebSiteSpar

2010-03-15 09:40:19

Windows 8研發(fā)

2009-08-26 14:48:05

C#委托與事件

2024-05-10 15:09:34

2024-10-21 10:45:52

2012-04-30 21:35:08

Windows Pho

2009-03-31 11:12:59

萬兆以太網(wǎng)

2020-09-22 10:49:12

大數(shù)據(jù)旅游技術(shù)

2021-04-05 18:06:36

谷歌安卓Google Play
點贊
收藏

51CTO技術(shù)棧公眾號