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 {
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 {
public 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);
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);
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);
}
public void onActive() {
super.onActive();
}
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
執行專案
執行專案前,需選擇裝置。
DevEco ->HVD Manager (模擬器)
當開啟HVD Manager 會跳轉到華為開發者聯盟進行登陸授權,,一開始用chrome還不行,切換到了IE才打開了允許授權彈窗。
點選允許後,回到DevEco,會看到出現了兩臺模擬器:
這時候執行一臺,執行demo專案...成功: