开放原子开源基金会于 2020 年 9 月接受华为捐赠的智能终端操作系统基础能力相关代码,随后进行开源,并根据命名规则为该开源项目命名为 OpenAtom OpenHarmony(简称“OpenHarmony”)。全球有兴趣、有需要的组织和个人都可以参与该项目。
应用开发:https://developer.harmonyos.com/cn/documentation
设备开发:https://device.harmonyos.com/
https://gitee.com/openharmony/docs/
传统的终端 OS 主要是面向单端,基于 OpenHarmony 开源项目开发的系统天生是面向万物互联的,可以运行在大大小小的各种智能终端上。
OpenHarmony 用户应用程序基于全新设计的 OpenHarmony API/SDK 开发,可以运行在基于 OpenHarmony 开源项目开发的系统上,并可以在多终端之间无缝流转。
OpenHarmony 程序框架仅支持 OpenHarmony 用户应用程序运行,不支持基于安卓 API/SDK 开发的用户应用程序运行。
万物互联时代,人均持有设备量不断攀升,设备和场景的多样性,使应用开发变得更加复杂、应用入口更加丰富。在此趋势下,应用提供方和用户迫切需要一种新的服务提供方式,使应用开发更简单、服务的获取和使用更便捷。
OpenHarmony 用户应用程序是一种基于服务原子化概念定义的新型应用。与传统终端用户应用程序不同,OpenHarmony 用户应用程序支持在 OpenHarmony 设备间跨端迁移、多端协同,一次开发多端部署,实现可分可合可流转。
OpenHarmony 运行的用户应用程序有两种形态,传统方式需要安装的应用,以及提供特定功能免安装的原子化服务。
原子化服务是 OpenHarmony 提供的一种面向未来的服务,拥有独立入口(例如用户可通过厂家提供的点击、碰一碰、扫一扫等方式直接触发)、和支持免安装(由系统自动安装)的特征。原子化服务基于 OpenHarmony API 开发,支持在 OpenHarmony 系统覆盖的各种类型的终端设备上运行。
OpenHarmony 的应用软件包以 APP Pack(Application Package)形式发布,它是由一个或多个 HAP 以及描述每个 HAP 属性的 pack.info 组成。HAP 是 Ability 的部署包,OpenHarmony 应用代码围绕 Ability 组件展开。
Ability 是应用所具备的能力的抽象,一个应用可以包含一个或多个 Ability。Ability 分为两种类型:FA(Feature Ability)和 PA(Particle Ability)。FA/PA 是应用的基本组成单元,能够实现特定的业务功能。FA 有 UI 界面,而 PA 无 UI 界面。
OpenHarmony 正在以开源开放的姿态,吸引更多的合作伙伴和开发者的加入。OpenHarmony 将全面激活我国软件行业的创造力。对于其未来丰富多样化的发展可能性,无论业界或公众均有所期待。
【全领域·下一代】
OpenHarmony 包含了分布式操作系统所需的完整能力,包括内核层、系统服务层、框架层和应用层。在传统单设备系统能力基础上,OpenHarmony 创造性地提出了基于同一套系统能力、适配多种终端形态的理念,支持在多种终端设备上运行。针对设备开发者,OpenHarmony 采用了组件化的设计方案,可以根据设备的资源能力和业务特征进行灵活适配,满足不同形态的终端设备对于操作系统的要求。可运行在百 K 级别的资源受限设备和穿戴类设备,也可运行在百 M 以上相对内存资源丰富的各种智能设备。
迄今为止,各方在 OpenHarmony 开源项目上投入人力、资金,并取得成果,OpenHarmony 生态初具规模。多家公司先后推出搭载 OpenHarmony 操作系统的多种产品, 如:手表、微波炉、豆浆机、料理机、录音笔、机顶盒、智能汽车等, OpenHarmony 已成为全球智能终端操作系统的重要新生力量。在信息通信技术产业和数字经济进入新时期的背景下,OpenHarmony 拓展了万物互联重塑信息产业生态的新空间,为各行各业打开了富有创新机遇的新世界。
注:应用开发工具都是统一使用华为的DevEco Studio,但是使用的sdk不同,开发前首先要切换sdk配置。虽然HarmonyOS和OpenHarmony都可以用js来开发应用,但是它们的api还是有些细微的区别,OpenHarmony的api参考请参看OpenHarmony的官方文档,千万别看错了。然后OpenHarmony的sdk请下载官方的支持OpenHarmony开发的sdk,而不是DevEco studio自带的HarmonyOS sdk。
HUAWEI DevEco Studio 简介:
面向华为终端全场景多设备的一站式分布式应用开发平台,支持分布式多端开发、分布式多端调测、多端模拟仿真和全方位的质量与安全保障。
官方下载:DevEco Studio下载地址
安装方式:解压后一路next
第二步全部勾选
完成后重启一下。
注:Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。
在“Project”窗口,打开“entry > src > main > java”,右键点击“com.example.myapplication”文件夹,选择“New > Ability > Empty Feature Ability(Java)”。
配置Ability时,将“Page Name”设置为“SecondAbility”,点击“Finish”。创建完成后,可以看到新增了“SecondAbility”和“SecondAbilitySlice”文件。
打开 “SecondAbilitySlice.java”文件,添加一个文本,示例代码如下:
package com.example.myapplication.slice;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.colors.RgbColor;
import ohos.agp.components.DependentLayout;
import ohos.agp.components.DependentLayout.LayoutConfig;
import ohos.agp.components.Text;
import ohos.agp.components.element.ShapeElement;
import ohos.agp.utils.Color;
import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_PARENT;
import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_CONTENT;
public class SecondAbilitySlice extends AbilitySlice {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
// 声明布局
DependentLayout myLayout = new DependentLayout(this);
// 设置布局大小
myLayout.setWidth(MATCH_PARENT);
myLayout.setHeight(MATCH_PARENT);
ShapeElement element = new ShapeElement();
element.setRgbColor(new RgbColor(0, 0, 0));
myLayout.setBackground(element);
// 创建一个文本
Text text = new Text(this);
text.setText("OpenHarmony!");
text.setWidth(MATCH_PARENT);
text.setTextSize(55);
text.setTextColor(Color.WHITE);
// 设置文本的布局
DependentLayout.LayoutConfig textConfig = new DependentLayout.LayoutConfig(MATCH_CONTENT,MATCH_CONTENT);
textConfig.addRule(LayoutConfig.CENTER_IN_PARENT);
text.setLayoutConfig(textConfig);
myLayout.addComponent(text);
super.setUIContent(myLayout);
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
第一次写这种东西,写的不好啊。。。剩下的就看官方文档即可。