搶先學鴻蒙(HarmonyOS)2.0,你就是下一個大咖!





1. 你不知道的鴻蒙(HarmonyOS)
css


2020年9月10日,華爲開發者大會發布了鴻蒙(HarmonyOS)2.0。HarmonyOS是全場景操做系統。也就是說,從理論上,HarmonyOS能夠在任何平臺上運行(包括但不限於PC、手機、平板電腦、車載電腦、手錶、iot設備等)。那麼這是怎麼作到的呢?java

你們知道,不論是什麼樣的設備,一般由下面3個因素決定到底能運行什麼的系統:node

(1)CPU架構(x8六、ARM、RISC-V等)程序員

(2)CPU的處理能力json

(3)內存小程序

目前大多數硬件設備,CPU架構大可能是x86和ARM的。這一點與OS內核有關。目前HarmonyOS支持ARM架構。RISC-V和x86架構在將來也會支持。這些東西其實就是一個純技術問題,支持也只是時間問題,解決並不費勁。微信小程序

CPU處理能力和內存纔是決定一個OS是否可運行的關鍵。若是OS運行時須要太多的資源(CPU處理能力、內存等),並且當硬件沒法提供這麼多資源時,OS將沒法在該硬件上運行。對於不少OS,都是宏內核的。也就是說,很難將內核進行分解,造成須要更少資源的內核。因此一般來講,像Linux這種宏內核OS,須要的硬件配置都相對較高。例如,就算不安裝GUI,Linux要想跑起來,而且比較順暢,也須要幾十MB內存,而不少低端設備(如iot設備)根本沒有這麼大的內存,甚至連幾MB內存都沒有,頂多也就幾百KB,這麼少的內存,根本沒法跑Linux。服務器

HarmonyOS採用了另一種內核機制來設計,這就是微內核。微內核的每一部分都是可拆卸的。這樣進可攻,退可守。若是硬件配置很高,就能夠用完整的內核。若是硬件配置只有幾百K,能夠根據須要的功能,將消耗內存資源過多的模塊從內核中去除(只須要進行配置便可),這樣儘管犧牲掉一些功能,但仍然能夠在低配的硬件中跑起來,並且拆份內核很是容易,因此HarmonyOS從理論上支出從KB級到GB級的設備。微信


2.  搭建HarmonyOS開發環境架構

要完HarmonyOS,首先要單擊HarmonyOS的開發環境。如今經過下面的連接訪問HarmonyOS的官方下載頁面:

https://developer.harmonyos.com/cn/develop

會看到以下圖所示的「當即下載」按鈕

點進去,就是下載頁面。在下載以前,看一下系統要求,要求Windows10 64位、8G內存。對於程序員來講,這個配置應該沒問題。下面點擊右側「下載」按鈕開始下載吧。但要注意,下載DevEco Studio,須要有華爲開發者帳號,沒有的同窗趕忙註冊一個吧!

目前DevEco Studio 2.0僅支持Windows,因此若是用macOS或Linux的同窗還須要等等了。下載完安裝程序,裏面就有一個exe文件,雙擊安裝便可。這裏省略了n步,在啓動DevEco Studio的過程當中,會下載一些組件,下載界面以下圖所示。主要是java運行時和一些工具鏈,就乖乖等着下完吧!

等安裝完後,啓動DevEco Studio就能夠了。操做方式與Android Studio相似,其實就是模仿Android Studio作的。這裏再也不詳述。建立工程的窗口以下圖所示。

如今點擊Create HarmonyOS Project,會彈出以下圖的窗口。

在這個窗口中,目前有3個設備能夠選擇,這3個設備的描述以下:

(1)TV:智慧屏,也就是安裝了HarmonyOS 2.0的華爲智能電視;

(2)Wearable:智能手錶;

(3)Lite Wearable:運動手錶;

TV不須要解釋,其實之後的HarmonyOS手機運行的系統與TV是相似的。就像Android運行在電視和手機上,效果實際上是相似的。那麼智能手錶與運動手錶有什麼不一樣呢?其實智能手錶中運行的HarmonyOS屬於富鴻蒙(L3以上的鴻蒙)。支持用Java和JS開發,Java的開發方式與Android相似,JS的開發方式與微信小程序相似。而運動手錶中運行的是輕鴻蒙【LiteOS】(L0到L2),只支持JS開發方式,與微信小程序的開發方法相似,只是支持的組件和API沒有智能手錶多。

TV和Wearable能夠根據下面的模板建立支持JS開發和Java開發的工程。

3. 開發第一個基於Java的TV App

本文主要介紹如何用Java和JS開發TV和智能手錶的App,本節首先介紹如何用Java開發TV App。首先在建立鴻蒙工程的窗口選擇TV設備和Empty Feature Ability(Java)模板,以下圖所示。

而後點擊Next按鈕,進入下一個頁面。輸入工程名(Project Name),而後工程位置(Save location)會自動變化,以下圖所示。Package Name與Android的包相似,會做爲鴻蒙App的惟一標識。Compatible SDK不須要懂,由於目前只有一個API版本。

最後點擊Finish按鈕建立工程。基於Java的HarmonyOS工程的目錄結構以下圖所示:

這個目錄結構整體來上與Android Studio的Android工程相似,一樣使用gradle來管理包。這裏面有不少目錄,但對咱們最有用的是entry。該目錄中包含了咱們編寫的Java代碼。目錄會生成一個Slice和一個Ability,還有一個入口文件MyFirstJavaTV。那麼到底什麼是Slice、什麼是Ability,我後續會寫文章詳細描述。如今只要知道Ability至關於Android中的Activity,Slice至關於Android的Fragment便可。咱們都知道,Activity須要佈局才能顯示具體的組件,而Ability顯示組件則須要Slice。

4. 如何運行HarmonyOS App

因爲目前尚未支持富鴻蒙2.0的硬件,因此只能用鴻蒙模擬器運行程序。不過目前鴻蒙模擬器只支持ARM處理器的設備。因此華爲在服務端架設了一些ARM服務器,用來運行鴻蒙App。而後將運行後的UI傳給客戶端。其實目前IDE中的模擬器實際上是一個鴻蒙預覽器。下面就說一下如何利用鴻蒙預覽器運行鴻蒙App。

首先要啓動鴻蒙預覽器。也能夠稱爲鴻蒙虛擬設備(HVD)。點擊Tools -> HVD Manager菜單項,會顯示以下圖所示的HVD Manager窗口。不過在打開HVD Manager窗口以前,還會彈出一個以下圖的頁面,要求登陸華爲開發者網站。一般第一次登陸成功後,後續就不須要再登陸了。若是有華爲手機,也能夠經過掃碼登陸。


登陸成功後,會彈出下面的窗口,要求受權,點擊「容許」按鈕便可。


成功受權後,就會在HVD Manager窗口中顯示虛擬設備,以下圖所示。


目前有兩個設備:TV和Wearable。其中TV是華爲智慧屏、Wearable是智能手錶。先啓動TV(雙擊便可)。

啓動虛擬設備後,在IDE右側會顯示以下圖的虛擬設備界面,右側的按鈕用來控制虛擬設備。


如今就能夠在虛擬設備上運行鴻蒙App了。

點擊右上角entry右側的箭頭按鈕,以下圖所示。


會彈出以下圖的設備選擇窗口,目前只有一個虛擬設備,選擇該設備,點擊OK按鈕。


選擇虛擬設備後,App就會在虛擬設備中運行,效果以下圖所示:


要注意的是,虛擬設備只有1小時的使用時間,若是超過1小時,須要再次申請,而後就會從新計時,並且一個帳號同時只能申請一個虛擬設備。


這是咱們運行的第一個鴻蒙App:Hello World。若是要修改Hello World,須要打開MainAbilitySlice.java文件,而後將Hello World改爲「世界你好」便可,該文件的完整代碼以下:

package com.example.myfirstjavatv.slice;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;import ohos.agp.components.DirectionalLayout;import ohos.agp.components.DirectionalLayout.LayoutConfig;import ohos.agp.components.Text;import ohos.agp.colors.RgbColor;import ohos.agp.components.element.ShapeElement;import ohos.agp.utils.Color;import ohos.agp.utils.TextAlignment;
public class MainAbilitySlice extends AbilitySlice {
private DirectionalLayout myLayout = new DirectionalLayout(this);
@Override public void onStart(Intent intent) { super.onStart(intent); LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT); myLayout.setLayoutConfig(config); ShapeElement element = new ShapeElement(); element.setRgbColor(new RgbColor(255, 255, 255)); myLayout.setBackground(element);
Text text = new Text(this); text.setLayoutConfig(config); text.setText("世界你好"); text.setTextColor(new Color(0xFF000000)); text.setTextSize(50); text.setTextAlignment(TextAlignment.CENTER); myLayout.addComponent(text); super.setUIContent(myLayout); }
@Override public void onActive() { super.onActive(); }
@Override public void onForeground(Intent intent) { super.onForeground(intent); }}


運行效果以下圖所示:


5. 開發第一個基於JS的智能手錶App

在上一節介紹瞭如何用Java開發鴻蒙TV App,本節會介紹如何用JS開發智能手錶App,首先按下圖建立智能手錶的工程(工程名是MyFirstWatch)。


watch工程目錄的結構與TV工程的結構相似,只是源代碼除了java部分,還有js部分,並且多了個node_modules目錄,用過Node的同窗都應該很清楚,這個目錄是保存Node中模塊的。js目錄包含了全部相關的JS、HTML和CSS代碼。watch工程目錄結構以下圖所示。

如今着重看一下js目錄,結構以下:


在js/default目錄下,有3個子目錄:common、i18n和pages。其中common是一些資源,如圖像等。i18n用於國際化,默認有兩個文件:en-US.json和zh-CN.json,分別表示英文和中文字符串。pages目錄包含了一些代碼文件。index是默認生成的首頁目錄。其中包含3個文件:index.css、index.hml和index.js。其中index.hml是定製的HTML文件(減小了部分標籤,也增長了一些標籤,但整體風格與HTML很是接近)。如今分別看一下這3個文件的代碼:

從這3個文件的代碼能夠看出,與微信小程序的開發方式很是接近。並且大多數技術都是Web棧的,所以,只要會Web、微信小程序的程序員,很容易上手。


如今按前面的方式申請智能手錶虛擬設備,效果以下圖所示。


如今運行程序,會獲得下面的結果:



若是要修改輸出文本,能夠直接修改國際化文件zh-CN.json,也能夠直接修改index.js或index.hml文件。



6. 李寧老師將來關於鴻蒙的課程


你們都知道,我在2020-9-11號在B站發佈了全球第一套鴻蒙開發課程:《鴻蒙(HarmonyOS)2.0入門與實戰》,這是我提早一個月到華爲作的,因爲保密協議的緣由,只能在發佈會後再發布。感興趣的同窗能夠識別下面二維碼觀看。


這套課程只是介紹了鴻蒙App開發的基本方式,以及基礎組件的使用方法。鴻蒙的技術遠不止這麼多,在將來的一段時間,我將不按期推出關於鴻蒙各個方面的技術視頻、書和文章。主要課程包括:

(1)全方位介紹鴻蒙App開發技術(Java和JS);

(2)鴻蒙相關智能硬件(多是鴻蒙與arduino、樹莓派在一塊兒應用);

(3)各種項目實戰(若干),包括獨立的App項目,以及與智能硬件結合的項目;

得到更多關於鴻蒙的免費學習視頻,請關注個人B站:https://space.bilibili.com/477001733      或識別下面二維碼打開個人B站:



對本文感興趣,能夠加李寧老師微信公衆號( unitymarvel):


關注   極客起源   公衆號,得到更多免費技術視頻和文章。


本文分享自微信公衆號 - 極客起源(geekculture)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索