HarmonyOS之应用工程结构与设备模板
生活随笔
收集整理的這篇文章主要介紹了
HarmonyOS之应用工程结构与设备模板
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、HarmonyOS APP 工程結構
① HarmonyOS 應用的邏輯結構
- HarmonyOS 應用發布形態為 APP Pack(Application Package,簡稱APP),它是由一個或多個 HAP(HarmonyOS Ability Package)包以及描述 APP Pack 屬性的 pack.info 文件組成。
- 一個 HAP 在工程目錄中對應一個 Module,它是由代碼、資源、第三方庫及應用清單文件組成,可以分為 Entry 和 Feature 兩種類型:
-
- Entry:應用的主模塊,一個 APP 中,對于同一設備類型必須有且只有一個 entry 類型的 HAP,可獨立安裝運行。
-
- Feature:應用的動態特性模塊,一個 APP 可以包含一個或多個 feature 類型的 HAP,也可以不含。
- HAP 是 Ability 的部署包,HarmonyOS 應用代碼圍繞 Ability 組件展開,它是由一個或多個 Ability 組成。
- Ability 分為兩種類型:FA(Feature Ability,中文名稱:元程序)和PA(Particle Ability,中文名稱:元服務)。FA/PA 是應用的基本組成單元,能夠實現特定的業務功能,FA 有 UI 界面,而 PA 無 UI 界面。
② Java 工程目錄結構
- Java 工程目錄結構如下圖所示:
- 結構分析:
-
- .gradle:Gradle 配置文件,由系統自動生成,一般情況下不需要進行修改。
-
- entry:默認啟動模塊(主模塊),開發者用于編寫源碼文件以及開發資源文件的目錄。
-
-
- entry>libs:用于存放 entry 模塊的依賴文件。
-
-
-
- entry>src>main>Java:用于存放 Java 源碼。
-
-
-
- entry>src>main>resources:用于存放應用所用到的資源文件,如圖形、多媒體、字符串、布局文件等。
-
-
-
- entry>src>main>config.json:HAP 清單文件,詳細說明請參考 config.json 配置文件介紹。
-
-
-
- entry>src>test:編寫代碼單元測試代碼的目錄,運行在本地 Java 虛擬機(JVM)上。
-
-
-
- entry>.gitignore:標識 git 版本管理需要忽略的文件。
-
-
-
- entry>build.gradle:entry 模塊的編譯配置文件。
-
- 資源目錄說明如下:
| base>element | 包括字符串、整型數、顏色、樣式等資源的json文件。每個資源均由json格式進行定義,例如:boolean.json:布爾型 color.json:顏色 float.json:浮點型 intarray.json:整型數組 integer.json:整型 pattern.json:樣式 plural.json:復數形式 strarray.json:字符串數組 string.json:字符串值 |
| base>graphic | xml類型的可繪制資源,如SVG(Scalable Vector Graphics)可縮放矢量圖形文件、Shape基本的幾何圖形(如矩形、圓形、線等)等 |
| base>layout | xml格式的界面布局文件 |
| base>media | 多媒體文件,如圖形、視頻、音頻等文件,支持的文件格式包括:.png、.gif、.mp3、.mp4等 |
| base>profile | 用于存儲任意格式的原始資源文件。區別在于rawfile不會根據設備的狀態去匹配不同的資源,需要指定文件路徑和文件名進行引用 |
| rawfile | 用于存儲任意格式的原始資源文件。區別在于rawfile不會根據設備的狀態去匹配不同的資源,需要指定文件路徑和文件名進行引用 |
③ JS 工程目錄結構
- JS 工程目錄結構如下圖所示:
- common目錄:可選,用于存放公共資源文件,如媒體資源、自定義組件和 JS 文檔等。
- i18n 目錄:可選,用于存放多語言的 json 文件,可以在該目錄下定義應用在不同語言系統下顯示的內容,如應用文本詞條、圖片路徑等。
- pages 目錄:pages 文件夾下可以包含1個或多個頁面,每個頁面都需要創建一個文件夾(如圖中的 index)。頁面文件夾下主要包含3種文件類型:css、js 和 hml 文件:
-
- pages>index>index.hml 文件:hml 文件定義了頁面的布局結構,使用到的組件,以及這些組件的層級關系。
-
- pages>index>index.css 文件:css 文件定義了頁面的樣式與布局,包含樣式選擇器和各種樣式屬性等。
-
- pages>index>index.js 文件:js 文件描述了頁面的行為邏輯,此文件里定義了頁面里所用到的所有的邏輯關系,比如數據、事件等。
- resources:可選,用于存放資源配置文件,比如:全局樣式、多分辨率加載等配置文件。resources 資源引用示例請參考根據設備分辨率加載圖片。
- app.js文件:全局的 JavaScript 邏輯文件和應用的生命周期管理。
二、支持的設備模板
- DevEco Studio 支持包括手機、平板、車機、智慧屏、智能穿戴、輕量級智能穿戴和智慧視覺設備的 HarmonyOS 應用開發,預置了豐富的工程模板,可以根據工程向導輕松創建適應于各類設備的工程,并自動生成對應的代碼和資源模板。
- 同時,DevEco Studio 還提供了多種編程語言供開發者進行 HarmonyOS 應用開發,包括 Java、JS 和 C/C++ 編程語言。
- 支持的各設備類型工程模板和對應開發語言的對應關系:
-
- 跨設備模板,如下表所示:
| Empty Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript語言開發,用于Phone、TV、Tablet、Wearable設備的Feature Ability模板,展示了基礎的Hello World功能 |
| Empty Ability(Java) | Phone、Tablet、TV、Wearable、Car | 使用Java語言開發,用于Phone、TV、Tablet、Wearable設備的Feature Ability模板,展示基礎的Hello World功能 |
| Native C++ | Phone、Car | 使用Java和C++語言開發,用于Car設備的Feature Ability模板,作為HarmonyOS應用調用C++代碼的示例工程,界面顯示“Hello from JNI C ++ codes” |
| [Lite]Empty Ability(JS) | Lite Wearable、Smart Vision | 使用JavaScript語言開發,用于Lite Wearable、Smart Vision設備的Feature Ability模板,包含一個簡單的Hello World文本。該模板包含兩個組件:div和text,同時演示了數據綁定的使用方式 |
| About Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript語言開發,用于Phone、Tablet、TV、Wearable設備的Feature Ability模板。展示了一個應用關于頁模板,提供了應用關于信息的實現方式 |
| Full Screen Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript語言開發,用于Phone、Tablet、TV、Wearable設備的Feature Ability模板。用于在全屏模式下沉浸式展示圖片等內容,支持開發者在此模板基礎上進行二次開發,支持手機和平板橫豎屏切換顯示 |
| Grid Ability(JS) | Phone、Tablet、TV | 使用JavaScript語言開發,用于Phone、Tablet、TV設備的Feature Ability模板。展示了一個網格頁模板,用于網格應用和狀態欄的展示 |
| List Tab Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript語言開發,用于Phone、Tablet、Wearable設備的卡片模板。展示了一個列表頁,提供了列表展示和多tab切換功能 |
| Settings Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript語言開發,用于Phone、Tablet、TV、Wearable設備的Feature Ability模板。展示了一個設置頁模板,一般用于App設置頁面的實現 |
| Splash Screen Ability(JS) | Phone、Tablet、TV | 使用JavaScript語言開發,用于Phone、Tablet、TV設備的Feature Ability模板。展示了一個應用啟動頁模板,提供了頁面跳轉以及倒計時器的實現 |
| Video Player Ability(Java) | Phone、TV | 使用Java語言開發,用于Phone和TV設備的視頻播放應用模板。提供給開發者視頻播放的基礎能力以及視頻在手機和大屏之間流轉的能力。支持開發者在此模板基礎上進行快速二次開發,構建視頻應用 |
-
- 單設備模板,如下表所示:
| About Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板。為開發者提供應用關于頁的示例工程,提供了ScrollView布局以及RichText的使用方法 |
| Business Card Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML布局。展示了一個名片詳情頁的樣例工程,主要由一個ScrollView嵌套的兩個ListContainer組成 |
| Category Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML布局,顯示分類頁效果 |
| Category List Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML布局,該模板由標題欄和單行列表組成,其中單行列表被分為多個分組,單行列表中的每一項由左側文本和右側文本組成。該模板還提供了ListContainer和RecycleItemProvider的接口使用方法示例 |
| Device Configure Ability(JS) | Phone | 使用JS語言開發,用于Phone設備的Feature Ability模板,使用hml構建界面布局,使用css描述界面樣式,使用js進行界面交互,此模板提供了對設備快速配網的能力 |
| Device Control Ability(JS) | Phone | 使用JavaScript語言開發,用于Phone設備的Feature Ability模板。支持由開發者編寫JavaScription配置文件來生成對應的設備控制界面,支持HiLink和三方云兩種設備控制方式,示例配置文件中提供了牙刷、臺燈、豆漿機三種樣例 |
| Financial Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML布局,展示金融類應用的常用布局,支持輪播卡片、網格展示、列表資訊以及網絡圖片加載 |
| Full Screen Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的FeatureAbility模板,使用XML布局。為開發者提供全屏頁的示例工程,使用了Image組件,并實現了橫豎屏切換,并保持全屏顯示 |
| Grid Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML布局,顯示內容為兩部分網格表,網格每行顯示4個項目,網格內元素可進行拖動排序 |
| Image Editor Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,提供裁剪以及調節兩種基礎圖片編輯功能 |
| Login Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML來寫布局,顯示登錄頁效果 |
| Navigation Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,用來引導用戶和呈現信息。采用上圖下文的布局,上面為多圖滑動布局,下面為文字列表 |
| News Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML布局,展示了標準的設備發現遷移的功能,實現了新聞可以跨設備分享的場景 |
| Picture Browser Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML布局,用于全屏展示圖片,支持手勢縮放和左右滑動翻頁 |
| Privacy Statement Ability(Java) | Phone | 用Java語言開發,用于Phone設備的Feature Ability模板,用來呈現多樣式的隱私協議文本以及詳情跳轉 |
| Profile Picture List Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,由標題欄、雙行列表和底部選項欄構成。該頭像列表模板包括兩個布局文件,一個是用于提供整體Feature Ability布局,另一個用于提供頁面內列表Item布局。該模板演示了標題欄、復雜列表及底部選項欄的使用及數據綁定方式 |
| Settings Ability(Java) | Phone | 使用Java開發,用于Phone設備的Feature Ability模板,使用XML布局,由標題欄和一個列表組成。列表部分可設置單行和雙行,并分別提供對應的XML布局文件。單行列表由左側文本和右側文本組成;雙行列表由左側圖標以及雙行描述文本和右側開關組成,并提供開關狀態持久化示例 |
| Shopping Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML布局,展示了標準的設備發現遷移的功能,實現了商品可以跨設備分享的場景 |
| Splash Screen Ability(Java) | Phone | 使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML布局。展示了一個應用啟動頁模板,實現了頁面跳轉 |
| OneHop Device Ability(JS) | Phone | 使用JavaScript語言開發,用于Phone設備的Feature Ability模板,支持由開發者編寫JavaScription配置文件來生成對應的設備控制界面,示例配置文件中以風扇作為樣例,支持碰一碰拉起設備然后進行控制 |
| [Lite]Empty Particle Ability(JS) | Router | 使用JavaScript語言開發,用于Router設備的Feature Ability模板,展示了基礎的Hello World功能 |
總結
以上是生活随笔為你收集整理的HarmonyOS之应用工程结构与设备模板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HarmonyOS之搭建和配置开发环境的
- 下一篇: HarmonyOS之在工程中导入Samp