7 Star 30 Fork 8

Gitee Community / OpenHarmony组件开发大赛-有奖征文

 / 详情

OpenHarmony实践经验-OpenHarmony应用开发

意向
需求
创建于  
2021-10-04 20:05

OpenHarmony是自主研发、不兼容安卓的全领域下一代开源操作系统。

开放原子开源基金会于 2020 年 9 月接受华为捐赠的智能终端操作系统基础能力相关代码,随后进行开源,并根据命名规则为该开源项目命名为 OpenAtom OpenHarmony(简称“OpenHarmony”)。全球有兴趣、有需要的组织和个人都可以参与该项目。

HarmonyOS官方文档地址

应用开发:https://developer.harmonyos.com/cn/documentation
设备开发:https://device.harmonyos.com/

OpenHarmony官方文档地址

https://gitee.com/openharmony/docs/

OpenHarmony特色

传统的终端 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 拓展了万物互联重塑信息产业生态的新空间,为各行各业打开了富有创新机遇的新世界。

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
安装1
第二步全部勾选
安装2
安装3

完成后重启一下。

编写您的第一个OpenHarmony的App页面

创建Feature Ability

注: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

配置Ability

配置Ability时,将“Page Name”设置为“SecondAbility”,点击“Finish”。创建完成后,可以看到新增了“SecondAbility”和“SecondAbilitySlice”文件。

配置ability
配置ability_

用代码编写界面

打开 “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);
    }
}

总结

第一次写这种东西,写的不好啊。。。剩下的就看官方文档即可。

评论 (0)

sf 创建了需求
sf 修改了描述
展开全部操作日志

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(1)
其他
1
https://gitee.com/gitee-community/OHZW210809.git
git@gitee.com:gitee-community/OHZW210809.git
gitee-community
OHZW210809
OpenHarmony组件开发大赛-有奖征文

搜索帮助

53164aa7 5694891 3bd8fe86 5694891