這幾天鴻蒙系統起來了。開源,全場景。
鴻蒙系統又是什么,官網有:
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項目...成功: