1. 程式人生 > 實用技巧 >HarmonyOS鴻蒙入門篇

HarmonyOS鴻蒙入門篇

這幾天鴻蒙系統起來了。開源,全場景。

鴻蒙系統又是什麼,官網有:

HarmonyOS是一款“面向未來”、面向全場景(移動辦公、運動健康、社交通訊、媒體娛樂等)的分散式作業系統。在傳統的單裝置系統能力的基礎上,HarmonyOS提出了基於同一套系統能力、適配多種終端形態的分散式理念,能夠支援多種終端裝置。

  • 華為開發者聯盟論壇

https://developer.huawei.com/consumer/

  • 鴻蒙官網

https://www.harmonyos.com

  • 鴻蒙os開發官網

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

  • Gitee

https://openharmony.gitee.com/openharmony

安裝

下載HUAWEI DevEco Studio。現在還沒支援MacOS
Windows已可以下載。Windows安裝條件:

  • 作業系統:Windows10 64 位
  • 記憶體:8G 及以上
  • 硬碟:100G 及以上
  • 解析度:1280*800 及以上


一開始以為一定要Windows 10,還以為涼涼,因為只有Windows 8, 8G記憶體的老摳傷不起。但是沒有想到成功安裝,並執行。
根據官網文件:

  • 登入HarmonysOS應用開發門戶,點選右上角註冊按鈕,註冊開發者帳號,註冊指導參考註冊華為帳號。如果已有華為開發者帳號,請直接點選登入按鈕。
  • 進入HUAWEI DevEco Studio產品頁,下載DevEco Studio安裝包。
  • 雙擊下載的“deveco-studio-xxxx.exe”,進入DevEco Studio安裝嚮導,在如下安裝選項介面勾選DevEco Studio launcher後,點選Next,直至安裝完成。
  • 如何是JS開發者,則需要多安裝Node.js

  • 鴻蒙os開發工具

https://developer.harmonyos.com/cn/develop/deveco-studio

建立 Demo

開啟DevEco Studio:Create project目前只支援TV,穿戴裝置,輕量級穿戴裝置。支援JS,Java

建立成功後,作為Android 開發者,看到這些介面,甚是熟悉:運用Gradle 構建專案

看到目錄結構,甚是熟悉;

鴻蒙 APP的基礎認識

鴻蒙APP

HarmonyOS的應用軟體包以APP Pack(Application Package)形式釋出,它是由一個或多個HAP(HarmonyOS Ability Package)以及描述每個HAP屬性的pack.info組成。HAP是Ability的部署包,HarmonyOS應用程式碼圍繞Ability元件展開。

一個HAP是由程式碼、資源、第三方庫及應用配置檔案組成的模組包,可分為Entry和Feature兩種模組型別,如圖1所示。

  • Entry:應用的主模組。一個APP中,對於同一裝置型別必須有且只有一個Eentry型別的HAP,可獨立安裝執行。

  • Feature:應用的動態特性模組。一個APP可以包含一個或多個Feature型別的HAP,也可以不含。只有包含Ability的HAP才能夠獨立執行。

DemoApp

A base class used for user to initialize each hap.

package com.yuncai.demoapp;import ohos.aafwk.ability.AbilityPackage;public class DemoApp extends AbilityPackage {    @Override    public void onInitialize() {        super.onInitialize();    }}

MainAbility

Ability....emmmm,我是感覺是Activity....

官網定義:

Ability 是應用所具備能力的抽象,也是應用程式的重要組成部分。一個應用可以具備多種能力(即可以包含一個或者多個Ability),HarmonyOS支援應用以Ability為單位進行部署。Ability分為兩種型別:FA(Feature Ability)和PA(Particle Ability)。FA/PA是應用的基本組成單元,能夠實現特定的業務功能。FA有UI介面,而PA無UI介面。每種型別為開發者提供了不同的模板,以便實現不同的業務功能。

  • Ability API

https://developer.harmonyos.com/cn/docs/documentation/doc-references/ability-0000001054120007

package com.yuncai.demoapp;import com.yuncai.demoapp.slice.MainAbilitySlice;import ohos.aafwk.ability.Ability;import ohos.aafwk.content.Intent;public class MainAbility extends Ability {@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setMainRoute(MainAbilitySlice.class.getName());    }}

MainAbilitySlice

AbilityPackageAbilitySlice主要用於承載Ability的具體邏輯實現和介面UI,是應用顯示、執行和跳轉的最小單元。AbilitySlice通過setUIContent()為介面設定佈局

package com.yuncai.demoapp.slice;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;import ohos.agp.components.Button;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.Element;import ohos.agp.components.element.ShapeElement;import ohos.agp.components.element.StateElement;import ohos.agp.utils.Color;import ohos.agp.utils.TextAlignment;public class MainAbilitySlice extends AbilitySlice {private DirectionalLayout myLayout = new DirectionalLayout(this);@Overridepublic 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);        LayoutConfig titleConfig = new LayoutConfig(                LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_CONTENT);        Text title = new Text(this);        title.setLayoutConfig(titleConfig);        title.setPadding(0, 50, 0, 10);        title.setText("Hello World");        title.setTextColor(new Color(0xFF000000));        title.setTextSize(50);        title.setTextAlignment(TextAlignment.CENTER);        myLayout.addComponent(title);        Text text = new Text(this);        text.setLayoutConfig(titleConfig);        text.setText("暈菜一員");        text.setTextColor(new Color(0xFF000000));        text.setTextSize(50);        text.setTextAlignment(TextAlignment.CENTER);        myLayout.addComponent(text);super.setUIContent(myLayout);    }@Overridepublic void onActive() {super.onActive();    }@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);    }}

執行專案

執行專案前,需選擇裝置。

DevEco ->HVD Manager (模擬器)

當開啟HVD Manager 會跳轉到華為開發者聯盟進行登陸授權,,一開始用chrome還不行,切換到了IE才打開了允許授權彈窗。

點選允許後,回到DevEco,會看到出現了兩臺模擬器:

這時候執行一臺,執行demo專案...成功: