鴻蒙系統一經推出就受到了廣泛的關注,更是不少開發者都想提前學習鴻蒙軟件開發,提前布局,所以小千為大家整理了一系列的鴻蒙開發教程,今天我們介紹鴻蒙系統的項目結構邏輯,喜歡的話記得分享收藏一下。
一、用戶應用程序包結構
HarmonyOS的用戶應用程序包以APP Pack(Application Package)形式發布,它是由一個或多個HAP(HarmonyOS Ability Package)以及描述每個HAP屬性的http://pack.info組成。HAP是Ability的部署包,HarmonyOS應用代碼圍繞Ability組件展開。
一個HAP是由代碼、資源、第三方庫及應用配置文件組成的模塊包,可分為entry和feature兩種模塊類型,如圖1所示。
entry:應用的主模塊。一個APP中,對于同一設備類型必須有且只有一個entry類型的HAP,可獨立安裝運行。
feature:應用的動態特性模塊。一個APP可以包含一個或多個feature類型的HAP,也可以不含。只有包含Ability的HAP才能夠獨立運行。
Ability:Ability是應用所具備的能力的抽象,一個應用可以包含一個或多個Ability。Ability分為兩種類型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是應用的基本組成單元,能夠實現特定的業務功能。FA有UI界面,而PA無UI界面。
庫文件:庫文件是應用依賴的第三方代碼(例如so、jar、bin、har等二進制文件),存放在libs目錄。
資源文件:應用的資源文件(字符串、圖片、音頻等)存放于resources目錄下,便于開發者使用和維護。
配置文件:配置文件 (config.json) 是應用的Ability信息,用于聲明應用的Ability,以及應用所需權限等信息。
二、程序目錄結構
首先有一個entry目錄,結合上篇的內容,我們知道一個應用是由一個或多個Hap包所組成的,Hap包又可以分為entry類型和feature類型,每個Hap包由:代碼、資源、第三方庫及應用配置文件組成。所以我們代碼中的entry目錄其實就一個應用的Hap包,它的類型的entry類型的Hap包。一個Hap包由代碼、資源、第三方庫及應用配置文件組成,接著我們來看這些資源,代碼等都分布在entry包的哪里。
在src/main/java下以包名命名的文件夾內分布著Java代碼。這里的代碼可以用來創建布局,動態調整布局以及為交互提供支撐服務。和java文件夾同級的resources目錄下分布應用資源,該目錄的base目錄下,按資源用途又分為多個文件夾資源:
element:表示元素資源,該文件夾下主要存放json格式的文件,主要用來表示 字符串、顏色值、布爾值等,可以在其他地方被引用。
graphic:表示可繪制資源。用xml文件來表示,比如我們項目中設置的 圓角按鈕、按鈕顏色等都是通過引用這里的資源來統一管理的。
layout:表示布局資源,用xml文件來表示,比如頁面的布局資源,都放在這里。
media:表示媒體資源,包括圖片、音頻、視頻等非文本格式的文件。
config.json項目配置文件:每一個hap包下都包含了該hap包的配置信息,這個配置文件位于:entry/src/main/目錄下,由工具幫我們生成,命名為config.json,harmonyOS應用配置采用json格式的形式。下面我們來看一下這個配置文件中的內容,并簡要介紹一下配置的作用。該配置文件中,主要有三個模塊,如下所示:
app:表示應用的全局配置信息。同一個應用的不同HAP包的“app”配置必須保持一致。
deviceConfig:表示應用在具體設備上的配置信息。
module:表示HAP包的配置信息。該標簽下的配置只對當前HAP包生效。
bundleName:表示應用的包名,用于標識應用的唯一性。通常采用反轉的域名。
vendor:表示開發應用的廠商。
version:code表示內部版本號,用于系統管理版本使用,對用戶不可見,name表示應用的版本號,用于向用戶呈現。
apiVersion:包含三個選項,1、compatible:表示應用運行需要的API最小版本。2、target:表示應用運行需要的API目標版本。3、releaseType:表示應用運行需要的API目標版本的類型,取值為“CanaryN”、“BetaN”或者“Release”,其中,N代表大于零的整數。
Canary:受限發布的版本。
Beta:公開發布的Beta版本。
Release:公開發布的正式版本。
以上就是這一期的鴻蒙系統項目結構解析的教程了,最后歡迎對鴻蒙開發感興趣的同學來到千鋒了解一下我們的鴻蒙開發培訓課程,全程名師面授確保教學質量,現在咨詢更有海量優惠和免費的學習教程視頻可以領取,趕緊找在線老師了解一下吧。