應(yīng)用中的幾種常見類型的文件
①Ability
Ability 是應(yīng)用所具備的能力的抽象,一個應(yīng)用可以包含一個或多個 Ability。
Ability 分為兩種類型:FA(Feature Ability,中文名稱:元程序)和 PA(Particle Ability,中文名稱:元服務(wù))。
FA/PA 是應(yīng)用的基本組成單元,能夠?qū)崿F(xiàn)特定的業(yè)務(wù)功能。FA 有 UI 界面,而 PA 無 UI 界面。
②庫文件
庫文件是應(yīng)用依賴的第三方代碼(例如 so、jar、bin、har 等二進(jìn)制文件),存放在 libs 目錄。
③資源文件
應(yīng)用的資源文件(字符串、圖片、音頻等)存放于 resources 目錄下,便于開發(fā)者使用和維護(hù),詳見資源文件的分類。
④配置文件
配置文件(config.json)是應(yīng)用的 Ability 信息,用于聲明應(yīng)用的 Ability,以及應(yīng)用所需權(quán)限等信息,詳見應(yīng)用配置文件。
⑤pack.info
描述應(yīng)用軟件包中每個 HAP 的屬性,由 IDE 編譯生成,應(yīng)用市場根據(jù)該文件進(jìn)行拆包和 HAP 的分類存儲。
HAP 的具體屬性包括:
delivery-with-install:表示該 HAP 是否支持隨應(yīng)用安裝。
“true”表示支持隨應(yīng)用安裝;
“false”表示不支持隨應(yīng)用安裝。
name:HAP 文件名。
module-type:模塊類型,entry 或 feature。
device-type:表示支持該 HAP 運行的設(shè)備類型。
⑥HAR
HAR(HarmonyOS Ability Resources)可以提供構(gòu)建應(yīng)用所需的所有內(nèi)容,包括源代碼、資源文件和 config.json 文件。
HAR 不同于 HAP,HAR 不能獨立安裝運行在設(shè)備上,只能作為應(yīng)用模塊的依賴項被引用。
HarmonyOS 應(yīng)用的目錄結(jié)構(gòu)
HarmonyOS 應(yīng)用發(fā)布形態(tài)為 APP Pack(Application Package,簡稱 APP),它是由一個或多個 HAP(HarmonyOS Ability Package)包以及描述每個 HAP(Ability 的部署包)屬性的 pack.info 文件組成。
Hap 包又可以分為 entry 類型和 feature 類型,每個 Hap 包由:代碼、資源、第三方庫及應(yīng)用配置文件組成。
所以我們代碼中的 entry 目錄其實就是一個應(yīng)用的 Hap 包,它是 entry 類型的 Hap 包。接下來我們來了解下這些資源。
entry:應(yīng)用的主模塊。一個 APP 中,對于同一設(shè)備類型必須有且只有一個 entry 類型的 HAP,可獨立安裝運行。
feature:應(yīng)用的動態(tài)特性模塊。一個 APP 可以包含 0 個、一個或多個 feature 類型的 HAP。只有包含 Ability 的 HAP 才能夠獨立運行。
HAP 是 Ability 的部署包,HarmonyOS 應(yīng)用代碼圍繞 Ability 組件展開,它是由一個或多個 Ability 組成。
setting.gradle 文件用于指定應(yīng)用包含哪些 entry 或 feature 模塊。
build.gradle 文件是應(yīng)用的環(huán)境配置文件,如指定編譯應(yīng)用程序使用的 sdk 版本,依賴外部 maven 庫等。
gradle 目錄是 gradle 的配置文件,由系統(tǒng)自動生成,一般情況下不需要進(jìn)行修改。
其中g(shù)radle》wrapper》gradle-wrapper.properties 文件一般用于指定應(yīng)用使用的 gradle 版本。
build 目錄是在編譯構(gòu)建過程中生成的,該目錄中主要包含該 entry 編譯生成的 hap 包及其對應(yīng)的描述文件 pack.info,以及用于索引所有資源文件的 ResourceTable 文件。
特別注意的是:所有資源如包括控件名稱、字符串常量、動畫資源、長度資源、布局資源、圖片、音視頻資源等都將在 ResourceTable 文件中生成唯一的靜態(tài)整型索引常量。
通過這個索引可以訪問到具體的資源,如 Java 代碼中得到名稱為 ability_main.xml 布局文件的方法:ResourceTable.Layout_ability_main。
entry 是該應(yīng)用的主模塊,其目錄下包含 build、libs、src 目錄和一個主要的 build.gradle 文件。
entry 中各目錄及文件含義如下:
①entry》libs 目錄下用于存放第三方的 jar 包,是該 entry 模塊對第三方類庫的存放目錄。
②entry》src 目錄是該 entry 模塊的所有源程序目錄,我們重點關(guān)注該目錄中的 main 目錄和 config.json 文件。
main 目錄下包含 java 和 resources 目錄。
entry》src》main》java 包括應(yīng)用中所有的 java 文件,以包的形式進(jìn)行組織。
一個可視化的 Ability(FA)的呈現(xiàn)包含的 3 個文件,其中的 Slice 和 Ability 都在 main 目錄下。
該目錄下還可以添加其他業(yè)務(wù)邏輯處理的 java 類文件,如實現(xiàn)網(wǎng)絡(luò)操作、數(shù)據(jù)庫操作等業(yè)務(wù)類,用戶自定義的工具類等。需要注意的是,實現(xiàn)一個可視化的 Ability,Slice 并不是必須的。
entry》src》main》resources 目錄是所有資源文件所在的目錄。
resources 目錄包括兩大類目錄:
一類是 base 目錄與限定詞目錄,目錄中的資源文件會被編譯成二進(jìn)制文件,并賦予資源文件 ID(能被 ResourceTable 索引,通過指定資源類型(type)和資源名稱(name)來引用)。
另一類是 rawfile 目錄,目錄中的資源文件會被直接打包進(jìn)應(yīng)用,不經(jīng)過編譯,也不會被賦予資源文件 ID(不能被 ResourceTable 索引,通過指定文件路徑和文件名來引用)。
resources》base》element:表示字符串、整型數(shù)、顏色、樣式等常量資源,采用相應(yīng)的JSON文件來表示,可以在其他地方被引用。
默認(rèn)只包含一個string.json文件,程序員可根據(jù)自己的需要添加其他類型的文件,如圖 6 所示:
圖 6
但文件名稱建議和如下文件名稱一致:
strings.json:字符串值資源(默認(rèn)包含)
boolean.json:布爾型資源
color.json:顏色資源
float.json:浮點型資源
intarray.json:整型數(shù)組資源
integer.json:整型資源
pattern.json:樣式資源
plural.json:復(fù)數(shù)形式資源
strarray.json:字符串?dāng)?shù)組資源
resources》base》graphic:表示可繪制資源,如 SVG(Scalable Vector Graphics)可縮放矢量圖形文件、Shape 基本的幾何圖形(如矩形、圓形、線等)等。
用 xml 文件來表示,比如我們項目中設(shè)置的圓角按鈕、按鈕顏色等都是通過引用這里的資源來統(tǒng)一管理的:
base》graphic:xml 類型的可繪制資源。
resources》base》layout:表示布局資源,用 xml 文件來表示。
resources》base》media:表示媒體資源,包括圖片、音頻、視頻等非文本格式的文件,支持的文件格式包括:.png、.gif、.mp3、.mp4 等。
resources》限定詞目錄:en_…,如 en_element、zh_element、en_GB-vertical-car-mdpi 等。限定詞目錄需要開發(fā)者自行創(chuàng)建。
目錄名稱由一個或多個表征應(yīng)用場景或設(shè)備特征的限定詞組合而成,可以包含移動國家碼和移動網(wǎng)絡(luò)碼、語言、文字、橫豎屏、設(shè)備類型、顏色模式等限定詞。
對應(yīng)限定詞的取值必須與當(dāng)前的設(shè)備狀態(tài)完全一致,該目錄才能夠參與設(shè)備的資源匹配。
例如,限定詞目錄“zh_CN-car-ldpi”不能參與“en_US”設(shè)備的資源匹配。
resources》rawfile/profile 目錄:用于存儲任意格式的原始資源文件。允許程序員創(chuàng)建多層子目錄,目錄名稱可以自定義,目錄下也可以自由放置各類資源文件。該目錄的文件不會根據(jù)設(shè)備狀態(tài)去匹配不同的資源。
entry》src》main》config.json 文件是 entry(或 feature)的配置文件,由“app”、“deviceConfig”和“module”三個部分組成,缺一不可。
其中“app” 表示應(yīng)用的全局配置信息,同一個應(yīng)用的不同 HAP 包的“app”配置必須保持一致;“deviceConfig”表示應(yīng)用在具體設(shè)備上的配置信息;“module”表示 HAP 包的配置信息。該標(biāo)簽下的配置只對當(dāng)前 HAP 包生效。
③entry》build.gradle:entry 模塊的編譯配置文件,包括 entry 使用的 SDK 版本、所依賴的資源(如 maven 庫、Jar 類庫等)。
④entry》src》test:編寫代碼單元測試代碼的目錄,運行在本地 Java 虛擬機(JVM)上。
⑤entry》.gitignore:標(biāo)識 git 版本管理需要忽略的文件。
責(zé)任編輯:haq
-
華為
+關(guān)注
關(guān)注
216文章
34417瀏覽量
251539 -
鴻蒙系統(tǒng)
+關(guān)注
關(guān)注
183文章
2634瀏覽量
66309 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1974瀏覽量
30149
原文標(biāo)題:一文搞懂鴻蒙OS應(yīng)用的目錄結(jié)構(gòu)
文章出處:【微信號:Huawei_Kirin,微信公眾號:華為麒麟】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論