官术网_书友最值得收藏!

1.5 HarmonyOS項目分析

1.5.1 項目邏輯視圖

首先整體了解一下一個HarmonyOS應用軟件的整體項目邏輯視圖及模塊組成,如圖1.38所示。

圖1.38 項目邏輯視圖

HarmonyOS的應用軟件,以App(App Pack)的形式發布,每個App由一個或多個HAP(HarmonyOS Ability Package)及pack.info組成。其中,pack.info用于描述每個HAP的屬性,主要包括該HAP是否隨應用安裝(delivery-with-install)、HAP文件名(name)、HAP模塊包類型(module-type)、支持該HAP運行的設備類型(device-type)等。

其中,每個HAP模塊包由Ability(Ability是應用具備的能力,HarmonyOS應用代碼圍繞Ability組件展開,第3章會詳細講解)、第三方庫(libs)、資源文件(Resources)及應用配置文件(config.json)組成。HAP模塊包分為entry和feature兩種類型。

(1)entry:應用的主模塊。在一個App中,同一設備類型必須有且僅能有一個entry類型的HAP包,可獨立安裝運行。

(2)feature:應用的動態類型模塊。在一個App中,可以包含一個或多個feature類型的HAP包,也可以不包含,但只有包含Ability的HAP包才能獨立運行。

1.5.2 項目結構與文件

現在來看一下之前創建的Hello World項目,項目結構如圖1.39所示。這里逐一介紹每個文件的內容。

圖1.39 項目結構

1).gradle和idea

這兩個文件是由DevEco Studio自動生成的配置文件,一般情況下不需要進行修改。

2)build

build文件夾中包含了一些在編譯時自動生成的文件,一般也不需要進行修改。

3)entry

entry是默認啟動模塊,是項目中的主模塊,隨后開發中的源碼文件和資源文件均在entry中。

4)gradle

目錄下包含了gradle wrapper的配置文件。

5).gitignore

該文件用來將指定的目錄或文件排除在版本控制之外。

6)build.gradle

項目全局的gradle構建腳本。

7)gradle.properties

項目全局的gradle配置文件,其中配置的屬性會影響項目中所有的gradle編譯腳本。

8)gradlew和gradlew.bat

這兩個文件用來在命令行界面中執行gradle命令,其中,gradlew用于Linux或Mac系統,gradlew.bat用于Windows系統。

9)local.properties

文件用于指定本機中的SDK路徑,通常自動生成而無須修改。若更改了本機中的SDK路徑,則應對該文件中的路徑進行修改。

10)MyApplication.iml

.iml文件是由DevEco Studio自動生成的文件,用來標識這是一個DevEco Studio項目,無須進行修改。

11)settings.gradle

該文件用來表示項目中所有引入的模塊。通常在項目中新建一個模塊之后,settings.gradle會自動引入該模塊。

以上是整個項目的外層目錄結構,其中絕大多數為自動生成的文件。entry目錄為整個項目的重點,在這里進行主要的應用開發。下面展開entry進行進一步分析。

這里先介紹Java工程下的entry目錄結構,如圖1.40所示。

圖1.40 Java工程下的entry目錄結構

1)build

與外層的build文件相似,包含一些在編譯時自動生成的文件,一般不需要修改。

2)libs

存放entry模塊下的第三方依賴文件。

3)src→main→java

開發者用于編寫Java源碼文件的存放目錄。

4)src→main→resources

開發者用于存放開發資源文件的目錄,包括圖片、音視頻等資源文件。

5)src→main→config.json

應用配置文件。用于聲明應用的Ability信息,以及應用所需的權限等信息。

6)src→test

開發者用于編寫測試文件的目錄。

7).gitignore

用于將entry模塊內的指定目錄或文件排除在版本控制之外,其作用和外層的.gitignore文件基本一致。

8)build.gradle

entry模塊的gradle構建腳本,指定與項目構建相關的配置信息。

9)entry.iml

DevEco Studio自動生成的文件,無須進行修改。

這是Java項目的目錄結構,這里也可以創建JS項目,以此來學習JS項目的目錄結構。如選擇TV設備下的Empty Feature Ability(JS),創建完成后,在項目的目錄結構中,除了包括Java項目文件外,還多了JS文件夾及相應文件,如圖1.41所示。

圖1.41 JS項目目錄結構

1)js→default→i18n

i18n是英文單詞internationalization的縮寫,是“國際化”的簡稱。i18n文件夾用于存放配置不同語言場景的資源,例如應用文本詞條、圖片路徑等資源。

2)js→default→pages

pages文件夾用于存放多個頁面的開發文件,例如圖中一個index表示一個頁面,每個頁面由HML、CSS和JS文件組成。

(1)index.hml: HML模板文件,用來描述當前頁面的布局結構,類似于網頁中的HTML文件。

(2)index.css: CSS樣式文件,用于描述頁面樣式。

(3)index.js: JS文件,用于處理頁面和用戶的交互。

主站蜘蛛池模板: 北安市| 新兴县| 田林县| 福泉市| 苗栗市| 泽州县| 莱芜市| 二连浩特市| 靖江市| 甘孜县| 调兵山市| 共和县| 富平县| 宝应县| 萨嘎县| 宿州市| 永嘉县| 宣化县| 犍为县| 湟源县| 岑巩县| 泽库县| 古田县| 高尔夫| 康乐县| 关岭| 洮南市| 正蓝旗| 陇川县| 郑州市| 南召县| 鹤壁市| 长岭县| 申扎县| 阳城县| 淄博市| 绥化市| 育儿| 白沙| 新龙县| 壶关县|