- 鴻蒙操作系統應用開發實踐
- 陳美汝 鄭森文等
- 1472字
- 2022-07-28 19:33:57
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文件,用于處理頁面和用戶的交互。
- Linux運維之道(第3版)
- Linux Mint Essentials
- 發布!設計與部署穩定的分布式系統(第2版)
- UNIX操作系統設計
- Linux網絡內核分析與開發
- 高性能Linux服務器構建實戰:系統安全、故障排查、自動化運維與集群架構
- 異質結原理與器件
- 奔跑吧 Linux內核(入門篇)
- 新手學電腦從入門到精通(Windows 10+Office 2016版)
- 直播系統開發:基于Nginx與Nginx-rtmp-module
- Linux使用和管理指南:從云原生到可觀測性
- Windows Server 2012網絡操作系統項目教程(第4版)
- Fedora 12 Linux應用基礎
- Linux服務器配置與管理
- bash shell腳本編程經典實例(第2版)