【筆記】OpenHarmony和HarmonyOS區別及應用開發簡介

一、概念

  • OpenHarmony(OH) :?OpenAtom OpenHarmony
  • HarmonyOS(HO):開發 | 華為開發者聯盟 (huawei.com)

HO當前最高是3.1,在華為mate 60上面也是。關于4.0、5.0和next這類版本說法都是面向用戶的,不是開發人員。對于程序員,最高只到了版本3。

OH基于內核,市面了解的是叫HO。先有內核版本才有應用層版本,因此OH的版本會比HO高級。

(一)HarmonyOS

分為應用開發和設備開發,這里只關注HarmonyOS鴻蒙應用開發了。

(二)OpenHarmony

OpenHarmony 4.0 Release對應API能力級別為API 10 Release,

HO比OH找工作容易(估計是應用層需求大上手多),但是OH的API更加完善。

?

二、開發工具 IDE(DevEco Studio)

v3和v4的DevEco 的SDK是不大相同的(下載鏈接也是),而且新的都建議用v4。

?

  • OH 4.0 DevEco Studio 安裝包?:OpenHarmony-v4.0-release
  • HO 3.1 DevEco Studio 安裝包?:HUAWEI DevEco Studio 3.1.1 Release
    • 版本說明-DevEco Studio-工具 | 華為開發者聯盟 (huawei.com)

(一)HarmonyOS?v3.1.1 Release

DevEco Studio 3.1.1 Release 安裝包下載?
DevEco Studio 3.1.1 Release 安裝包下載

版本信息:

?
DevEco Studio 3.1.1 Release 版本信息???

DevEco Studio 3.1.1 Release
Build Version: 3.1.0.501, built on June 20, 2023
Build #DS-223.8617.56.36.310501
Runtime version: 17.0.6+10-b829.5 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

SDK版本:

(二)OpenHarmony-v4.0-release

最新版本,SDK=10,設置OH版本到API10。

24年1月華為發布Next版本,可能會存在以往的版本不兼容問題。

三、應用開發

1、SDK

在設置中檢查項目SDK,可以切換HarmonyOS(當前最高9)和OpenHarmony(10)

SDK?
Settings-SDK

Note:下載OpenHarmony SDK的路徑必須跟HarmonyOS的不同

安裝 OpenHarmony SDK?
下載 OpenHarmony SDK 及路徑配置

?

2、新建項目

創建項目時,不要新建Empty Ability,容易不兼容,建議新建【[OpenHarmony]Empty Ability】(DevEco 3沒有的)

v4 Create Project?
v4 Create Project
v3.1 Create Project?
v3 Create Project

如果還是DevEco v3.1.1的版本會顯示SDK 3.1,如果是v4的SDK則為10(這個不能在HaromonyOS上面跑,可能會模擬器手機報錯)

3、項目配置

類似Android的build.gradle,有單獨(entry目錄下)和全局配置(項目) build-profile.json5

build-profile.json5 項目配置

4、HarmonyOS 開發支持

鴻蒙 {開發} 套件 萬物互聯時代的鴻蒙生態加速器

包含HarmonyOS應用/服務從設計、開發、測試、上架所需的關鍵技術和產品。(鴻蒙指華為終端鴻蒙智能設備操作系統軟件)

上層應用開發所需工具和知識點:

ArkTS 應用開發語言

ArkTS 語言 | 華為開發者聯盟 (huawei.com)

ArkTS是鴻蒙生態的應用開發語言。它在保持TypeScript(簡稱TS)基本語法風格的基礎上,對TS的動態類型特性施加更嚴格的約束,引入靜態類型。同時,提供了聲明式UI、狀態管理等相應的能力。

自然簡潔語法

主要的布局就是build()的內容,外層通過stuct Index包裝,最簡版如下:(看起來類似Android開發,給注解加了個功能。)

//Index就是應用的入口
@Entry //裝飾器,表示頁面入口
@Component //組件,表示下述結構體有UI的能力
struct Index {build() {    //構建聲明式UIText("Hello world").fontSize(50)}}

數據驅動UI,刷新機制,Binding。

//Index就是應用的入口
@Entry 
@Component //組件,表示下述結構體有UI的能力
struct Index {@State message: string = 'Hello World'build() {    //構建聲明式UIRow() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%')}.height('100%')}
}
輕量化并發機制

ArkCompiler運行時在HarmonyOS上提供了Worker API支持并發編程。在運行時實例內存隔離的基礎上,ArkCompiler通過共享運行實例中的不可變或者不易變的對象、內建代碼塊、方法字節碼等技術手段,優化了并發運行實例的啟動性能和內存開銷。

ArkUI 界面開發框架

聲明式UI框架ArkUI_跨端界面應用開發 | 華為開發者聯盟 (huawei.com)

ArkUI是一套構建分布式應用界面的聲明式UI開發框架。

3.1 UI 更新機制升級(布局渲染)

ArkUI3.1通過編譯期生成特定函數的方式將UI組件更新數據變更進行細粒度地綁定,實現UI更新Diff算法從COMPONENT和ELEMENT樹形結構對比升級為單節點NODE的函數式更新,極大簡化了聲明式開發范式UI組件樹形結構,大幅度優化了UI組件布局渲染性能

COMPONENT和ELEMENT樹形結構
COMPONENT和ELEMENT樹形結構

=>

單節點NODE
單節點NODE函數
邏輯和UI分離(數據雙向綁定機制)

邏輯和UI分離通過利用數據雙向綁定機制傳遞頁面變化邏輯,將流轉7個步驟簡化為2個步驟。可將跨端遷移協同的開發代碼量降低40%以上。

優化前:數據流轉7步

原Ability包含UI+Model,將其分離后,數據流轉優化。

優化后:數據流轉2步
Stage 模型(應用調度)

Stage模型開發概述-Stage模型開發指導-應用模型-開發 | 華為開發者聯盟 (huawei.com)

提供十幾種不同場景的擴展服務Extension機制,在保證了應用后臺進程合理運行的基礎上,規避了應用進程之間無序拉起,達到保證前臺資源供給,應用調度更加有序的目的。

高級UI組件擴展能力

ArkUI框架提供了基于XComponent組件的C++自繪制引擎接入(比如游戲引擎)能力,和基于Web組件的HTML5/Web的渲染能力。滿足了開發者在游戲、相機、地圖、瀏覽器等復雜應用場景的開發訴求,降低了這類應用移植的門檻。

XComponent組件
XComponent組件 Demo

5、功能開發

代碼語法類似flutter,compose。

代碼結構

結構又像網頁開發,index作為入口。好比Android的MainActivity吧。

index.ets 入口
index.ets 入口

設備類型

當前UI開發不用多慮設備類型(如手機、平板、手表等等),視為橫豎屏兩種類型即可。

開發過程中可以把PreviewerMuitl-prifile preview打開,就能看到不同設備的顯示情況。

SDK API閱讀

只能看到聲明和二進制,不能像Android SDK那樣看到java源碼實現。

UI 調試

build中可以設置界面的屬性和數值大小,通過側邊欄的Previewer->Inspector可以快速配置和查看界面情況。

四、學習規劃

1、基本應用開發(2個月?10k+)

100w個崗位,Android?

2、應用高級原理,SDK開發,熟悉源碼原理

3、高級開發,系統、硬件(南向)

GPIO PWM TCP UDP MQTT 線程管理,底層鎖

系統移植、內核裁剪、驅動開發(攝像機、傳感器)

Android 23種設計模式

剛開始學的時候不用看源碼OpenAtom OpenHarmony,后面高級開發的時候需要熟悉。

  • OH源碼下載:zh-cn/device-dev/get-code/sourcecode-acquire.md · OpenHarmony/docs - Gitee.com

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716026.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716026.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716026.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Springboot 項目讀取yaml的配置文件信息給靜態方法使用,以及通過配置 ResourceBundle 類讀取config.properties

讀取yaml 的配置文件 配置文件信息 iot_saas_tenement:user_id: 7........8d9bprivate_key: MII.......qQbj_url: http://4.....5:8088project_name: iot_s.......rojectdevice_name: te.....ice 創建一個類 ProxyProperties 讀取配置文件信息,并對外提供get方法 …

內存的檢測與排查

內存🐎的檢測與排查 文章目錄 內存🐎的檢測與排查查殺Java Web filter型內存馬0x01 內存馬簡歷史0x02 查殺思路0x03 內存馬的識別0x04 內存馬的查殺 查殺Java Web filter型內存馬 0x01 內存馬簡歷史 其實內存馬由來已久,早在17年n1nty師傅的…

QT6 libModbus 用于ModbusTcp客戶端讀寫服務端

雖然在以前的文章中多次描述過,那么本文使用開源庫libModbus,可得到更好的性能,也可移植到各種平臺。 性能:讀1次和寫1次約各用時2ms。 分別創建了讀和寫各1個連接指針,用于讀100個寄存器和寫100個寄存器,讀寫分離。 客戶端&am…

物聯網與智慧城市:科技驅動下的城市智能化升級之路

一、引言 隨著科技的不斷進步和城市化進程的加速,物聯網與智慧城市的結合已經成為推動城市智能化升級的關鍵力量。物聯網技術以其強大的連接和數據處理能力,為智慧城市的建設提供了無限可能。本文旨在探討物聯網如何助力智慧城市的構建,以及…

SLAM ORB-SLAM2(21)基礎矩陣的計算和評分

SLAM ORB-SLAM2(21)基礎矩陣的計算和評分 1. 前言2. 基礎矩陣2.1. 對級約束2.2. 推導2.3. 計算原理 3. ComputeF214. CheckFundamental 1. 前言 在 《SLAM ORB-SLAM2(20)查找基礎矩陣》 中了解到 查找基礎矩陣主要過程&#xff1…

web基礎03-JavaScript

目錄 一、JavaScript基礎 1.變量 2.輸出 3.變量提升 4.區塊 5.JavaScript數據類型 6.查看數值類型 7.undefined和null 8.布爾值 9.和的區別 10.算數/三元/比較/邏輯/賦值運算符 11.特殊字符 12.字符串 (1)獲取字符串長度 (2&am…

備戰藍橋杯Day21 - 堆排序的內置模塊+topk問題

一、內置模塊 在python中,堆排序已經設置好了內置模塊,不想自己寫的話可以使用內置模塊,真的很方便,但是堆排序算法的底層邏輯最好還是要了解并掌握一下的。 使用heapq模塊的heapify()函數將列表轉換為堆,然后使用he…

41、網絡編程/TCP.UDP通信模型練習20240301

一、編寫基于TCP的客戶端實現以下功能: 通過鍵盤按鍵控制機械臂:w(紅色臂角度增大)s(紅色臂角度減小)d(藍色臂角度增大)a(藍色臂角度減小)按鍵控制機械臂 1.基于TCP服務器的機械臂…

Java 創建對象有哪幾種方式

1. 使用new關鍵字:這是最常見和最簡單的創建對象的方式。你可以通過這種方式調用任意的構造函數,無論是無參的還是有參數的構造函數。 例如: Student stu new Student 2. 使用Class類的newInstance方法(反射) 這種…

Python3零基礎教程之數學運算專題進階

大家好,我是千與編程,今天已經進入我們Python3的零基礎教程的第十節之數學運算專題進階。上一次的數學運算中我們介紹了簡單的基礎四則運算,加減乘除運算。當涉及到數學運算的 Python 3 刷題使用時,進階課程包含了許多重要的概念和技巧。下面是一個簡單的教程,涵蓋了一些常…

勒索軟件類型

勒索軟件類型 加密勒索軟件 它使個人文件和文件夾(文檔、電子表格、圖片和視頻)被加密。受感染的文件被加密后會被刪除,用戶通常會在當下無法使用的文件的文件夾中看到一個包含付款說明的文本文件。當您嘗試打開其中一個加密文件時,您才可能…

Tomcat負載均衡、動靜分離

目錄 引言 實驗圖解 1.實驗環境搭建 2.部署Nginx服務器及配置靜態頁面Web服務 3.部署Tomcat服務及配置動態頁面Web服務 4.實驗驗收 動態頁面 靜態頁面 引言 tomcat服務既可以處理動態頁面,也可以處理靜態頁面;但其處理靜態頁面的速度遠遠不如…

Oracle SQL優化概念之集群因子解析

導讀 本文介紹一個Oracle 數據庫SQL優化的一個基本概念【集群因子】,理解了此概念,有助于對Oracle數據庫進行SQL優化。 1. 集群因子名詞解析 集群因子(ClusteringFactor)是如果通過一個索引掃描一張表,需要訪問的表的數…

js優雅的統計字符串字符出現次數

題目如下 統計一串字符串中每個字符出現的頻率 示例字符串 let str asdfasqwerqwrdfafafasdfopasdfopckpasdfassfd小白寫法 let str asdfasqwerqwrdfafafasdfopasdfopckpasdfassfdlet result {}; for (let i 0; i < str.length; i) {if (result[str[i]]) {result[str[…

鏈表基礎知識詳解(非常詳細簡單易懂)

概述&#xff1a; 鏈表作為 C 語言中一種基礎的數據結構&#xff0c;在平時寫程序的時候用的并不多&#xff0c;但在操作系統里面使用的非常多。不管是RTOS還是Linux等使用非常廣泛&#xff0c;所以必須要搞懂鏈表&#xff0c;鏈表分為單向鏈表和雙向鏈表&#xff0c;單向鏈表很…

【Vue3】解鎖Vue3黑科技:探索接口、泛型和自定義類型的前端奇跡

&#x1f497;&#x1f497;&#x1f497;歡迎來到我的博客&#xff0c;你將找到有關如何使用技術解決問題的文章&#xff0c;也會找到某個技術的學習路線。無論你是何種職業&#xff0c;我都希望我的博客對你有所幫助。最后不要忘記訂閱我的博客以獲取最新文章&#xff0c;也歡…

Android Compose - PlainTooltipBox(已廢棄)的替代方案

Android Compose - PlainTooltipBox 的替代方案 TooltipBox(positionProvider TooltipDefaults.rememberPlainTooltipPositionProvider(),tooltip {PlainTooltip {Text(/* tooltip content */)}},state rememberTooltipState(), ) {// tooltip anchorIconButton(onClick {…

跨站腳本攻擊xss-labs(1-20)靶機練手

目錄 一、跨站腳本攻擊&#xff08;XSS&#xff09; 1.1 漏洞簡介 1.2:類型 1.3 XSS危害 1.4XSS防御規則 二、環境搭建 三、xsst通關記錄 Level 1&#xff1a;文本解析為 HTML Level 2&#xff1a;htmlspecialchars;input 標簽 value 注入 定義和用法 字符過濾繞過 …

從零自制docker-1-【環境配置 docker go介紹與安裝】

文章目錄 docker簡介舉例docker安裝go語言go安裝go 配置 docker簡介 Docker可以看作是一種極其輕巧的“虛擬機”&#xff0c;它允許你將一個或多個程序及其運行環境打包在一起&#xff0c;形成一個標準化的單元&#xff0c;這個單元可以在任何支持Docker的系統上運行&#xff…

實用!IntelliJ IDEA離線開發使用要點(一)

如果IntelliJ IDEA在本地網絡之外沒有HTTP訪問&#xff0c;它將無法檢查更新和應用補丁。在這種情況下&#xff0c;您必須下載新版本的IDE并按照離線安裝中的描述手動安裝它們。 IDEA v2023.3正式版下載 注意&#xff1a;沒有互聯網接入&#xff0c;您不能安裝IntelliJ IDEA使…