HarmonyOS是华为公司自主研发的,基于微内核的全场景分布式操纵系统。
相比基于Linux(宏内核)的Android操作系统,基于微内的HarmonyOS,更安全,更稳定,可维护性更好。
可应用于包含但不限于移动通信终端等在内的,各种各样的硬件设备上。
借助软总线将多个设备组成超级虚拟终端,实现不同设备间的互联互通和信息共享。HarmonyOS堪称物联网时代的操作系统。
目前华为的大部分HarmonyOS设备依然基于Linux内核,LiteOS属于微内核,但仅限于华为的物联网产品。不同的系统内核借助内核抽象层(KAL)向上层提供统一的访问接口,以屏蔽系统内核间的差异性。
将一些非核心功能从系统内核中抽离出来,以体现微内核操作系统的设计原则。系统服务与(微)内核一起实现操作系统内核的功能。
HarmonyOS通过方舟多语言运行时子系统,在操作系统的内核级别处理编译器产出的二进制指令,其性能高于依赖ART虚拟机执行代码的Android。
为应用程序提供访问系统服务的接口。
HarmonyOS的应用框架就相当于Windows SDK或Unix/Linux系统调用。
_____________________________________________
| | | | | | |
| XML | Java | C/C++ | HML | CSS | JavaScript |
|_____|______|_______|_____|_____|____________|
| | | | | | |
| | * | | | | |
|_____|______|_______|_____|_____|____________|
| | | | | | |
| * | * | | | | |
|_____|______|_______|_____|_____|____________|
| | | | | | |
| | * | * | | | |
|_____|______|_______|_____|_____|____________|
| | | | | | |
| * | * | * | | | |
|_____|______|_______|_____|_____|____________|
| | | | | | |
| | | | * | * | * |
|_____|______|_______|_____|_____|____________|
HarmonyOS上的应用由一到多个HAP (HarmonyOS Ability Package)组成。
HAP分为两种类型:
应用需要为其适配的每种设备提供一个相应的入口包。只适配一种设备的应用只有一个入口包。无论哪种情况,特征包的数量都没有限制。
___________________________________________________________________________
| application.app |
| _______________________________________________________________________ |
| | entry.hap | feature1.hap | feature2.hap | feature3.hap | |
| | _____________ | _____________ | _____________ | _____________ | |
| | | abilities | | | abilities | | | | | | | | |
| | | libs | | | libs | | | libs | | | resources | | |
| | | resources | | | resources | | | | | | | | |
| | | config.json | | | config.json | | | config.json | | | config.json | | |
| | |_____________| | |_____________| | |_____________| | |_____________| | |
| |_________________|_________________|_________________|_________________| |
| |
| pack.info |
|___________________________________________________________________________|
其中:
application.app - 应用包(Application Package)
|
|__entry.hap - 入口包
| |
| |__abilities - 界面或服务
| |__libs - 库
| |__resources - 资源
| |__config.json - 包配置
|
|__feature1.hap - 特征包
| |
| |__abilities - 界面或服务
| |__libs - 库
| |__resources - 资源
| |__config.json - 包配置
|
|__feature2.hap - 库特征包
| |
| |__libs - 库
| |__config.json - 包配置
|
|__feature3.hap - 资源特征包
| |
| |__resources - 资源
| |__config.json - 包配置
|
|__pack.info - 包信息
Ability是应用所具备能力的抽象。
https://developer.harmonyos.com/en/develop/deveco-studio
DevEco Studio
Configure
Settings
HarmonyOS SDK
DevEco Studio
Create HarmonyOS Project
Empty Ability(Java)
Project Name: Hello
Project Type: Application
Package Name: com.<你的姓名全拼>.hello
Save Location: <工程所在目录>\Hello
Compatible API Version: SDK: API Version 5
Device Type: Phone
例程:Hello
...\Hello\entry\src\main\resources\zh\element\string.json
{ "string": [ { "name": "entry_MainAbility", "value": "你好" }, { "name": "mainability_description", "value": "你好" }, { "name": "mainability_HelloWorld", "value": "你好,鸿蒙" } ] }
...\Hello\entry\src\main\resources\en\element\string.json
{ "string": [ { "name": "entry_MainAbility", "value": "Hello" }, { "name": "mainability_description", "value": "Hello" }, { "name": "mainability_HelloWorld", "value": "Hello HarmonyOS" } ] }
有关如何将自己开发的HarmonyOS应用,部署到真机设备并运行调试的方法,将在后续课程中为大家介绍。
HiLog用于通过控制台输出日志信息,包括如下静态方法:
这些方法的第一个参数是一个HiLogLabel类型的对象,表示日志标签,其构造方法包含如下三个参数:
HiLog.LOG_APP HiLog.DEBUG HiLog.INFO HiLog.WARN HiLog.ERROR HiLog.FATAL
0x 0 0 1 0 1
\___/ \_/
| |
子系统 模块
通常将日志标签定义为类的静态成员变量。
在指定日志文本的格式化字符串中:
如:
HiLog.warn( label, "Failed to visit %{private}s, reason: %{public}d.", url, errno);
例程:HiLog
...\HiLog\entry\src\main\java\com\minwei\hilog\slice\MainAbilitySlice.java
public class MainAbilitySlice extends AbilitySlice { private static final HiLogLabel label = new HiLogLabel( HiLog.LOG_APP, 0x00101, "标签"); @Override public void onStart(Intent intent) { ... HiLog.debug(label, "调试"); HiLog.info(label, "信息"); HiLog.warn(label, "警告"); HiLog.error(label, "错误"); HiLog.fatal(label, "致命"); } ... }
运行效果如下图所示: