1. 你不知道的鸿蒙(HarmonyOS)
css
2020年9月10日,华为开发者大会发布了鸿蒙(HarmonyOS)2.0。HarmonyOS是全场景操做系统。也就是说,从理论上,HarmonyOS能够在任何平台上运行(包括但不限于PC、手机、平板电脑、车载电脑、手表、iot设备等)。那么这是怎么作到的呢?java
你们知道,不论是什么样的设备,一般由下面3个因素决定到底能运行什么的系统:node
(1)CPU架构(x8六、ARM、RISC-V等)程序员
(2)CPU的处理能力json
(3)内存小程序
目前大多数硬件设备,CPU架构大可能是x86和ARM的。这一点与OS内核有关。目前HarmonyOS支持ARM架构。RISC-V和x86架构在将来也会支持。这些东西其实就是一个纯技术问题,支持也只是时间问题,解决并不费劲。微信小程序
CPU处理能力和内存才是决定一个OS是否可运行的关键。若是OS运行时须要太多的资源(CPU处理能力、内存等),并且当硬件没法提供这么多资源时,OS将没法在该硬件上运行。对于不少OS,都是宏内核的。也就是说,很难将内核进行分解,造成须要更少资源的内核。因此一般来讲,像Linux这种宏内核OS,须要的硬件配置都相对较高。例如,就算不安装GUI,Linux要想跑起来,而且比较顺畅,也须要几十MB内存,而不少低端设备(如iot设备)根本没有这么大的内存,甚至连几MB内存都没有,顶多也就几百KB,这么少的内存,根本没法跑Linux。服务器
HarmonyOS采用了另一种内核机制来设计,这就是微内核。微内核的每一部分都是可拆卸的。这样进可攻,退可守。若是硬件配置很高,就能够用完整的内核。若是硬件配置只有几百K,能够根据须要的功能,将消耗内存资源过多的模块从内核中去除(只须要进行配置便可),这样尽管牺牲掉一些功能,但仍然能够在低配的硬件中跑起来,并且拆份内核很是容易,因此HarmonyOS从理论上支出从KB级到GB级的设备。微信
2. 搭建HarmonyOS开发环境架构
要完HarmonyOS,首先要单击HarmonyOS的开发环境。如今经过下面的连接访问HarmonyOS的官方下载页面:
https://developer.harmonyos.com/cn/develop
会看到以下图所示的“当即下载”按钮
点进去,就是下载页面。在下载以前,看一下系统要求,要求Windows10 64位、8G内存。对于程序员来讲,这个配置应该没问题。下面点击右侧“下载”按钮开始下载吧。但要注意,下载DevEco Studio,须要有华为开发者帐号,没有的同窗赶忙注册一个吧!
目前DevEco Studio 2.0仅支持Windows,因此若是用macOS或Linux的同窗还须要等等了。下载完安装程序,里面就有一个exe文件,双击安装便可。这里省略了n步,在启动DevEco Studio的过程当中,会下载一些组件,下载界面以下图所示。主要是java运行时和一些工具链,就乖乖等着下完吧!
等安装完后,启动DevEco Studio就能够了。操做方式与Android Studio相似,其实就是模仿Android Studio作的。这里再也不详述。建立工程的窗口以下图所示。
如今点击Create HarmonyOS Project,会弹出以下图的窗口。
在这个窗口中,目前有3个设备能够选择,这3个设备的描述以下:
(1)TV:智慧屏,也就是安装了HarmonyOS 2.0的华为智能电视;
(2)Wearable:智能手表;
(3)Lite Wearable:运动手表;
TV不须要解释,其实之后的HarmonyOS手机运行的系统与TV是相似的。就像Android运行在电视和手机上,效果实际上是相似的。那么智能手表与运动手表有什么不一样呢?其实智能手表中运行的HarmonyOS属于富鸿蒙(L3以上的鸿蒙)。支持用Java和JS开发,Java的开发方式与Android相似,JS的开发方式与微信小程序相似。而运动手表中运行的是轻鸿蒙【LiteOS】(L0到L2),只支持JS开发方式,与微信小程序的开发方法相似,只是支持的组件和API没有智能手表多。
TV和Wearable能够根据下面的模板建立支持JS开发和Java开发的工程。
3. 开发第一个基于Java的TV App
本文主要介绍如何用Java和JS开发TV和智能手表的App,本节首先介绍如何用Java开发TV App。首先在建立鸿蒙工程的窗口选择TV设备和Empty Feature Ability(Java)模板,以下图所示。
而后点击Next按钮,进入下一个页面。输入工程名(Project Name),而后工程位置(Save location)会自动变化,以下图所示。Package Name与Android的包相似,会做为鸿蒙App的惟一标识。Compatible SDK不须要懂,由于目前只有一个API版本。
最后点击Finish按钮建立工程。基于Java的HarmonyOS工程的目录结构以下图所示:
这个目录结构整体来上与Android Studio的Android工程相似,一样使用gradle来管理包。这里面有不少目录,但对咱们最有用的是entry。该目录中包含了咱们编写的Java代码。目录会生成一个Slice和一个Ability,还有一个入口文件MyFirstJavaTV。那么到底什么是Slice、什么是Ability,我后续会写文章详细描述。如今只要知道Ability至关于Android中的Activity,Slice至关于Android的Fragment便可。咱们都知道,Activity须要布局才能显示具体的组件,而Ability显示组件则须要Slice。
4. 如何运行HarmonyOS App
因为目前尚未支持富鸿蒙2.0的硬件,因此只能用鸿蒙模拟器运行程序。不过目前鸿蒙模拟器只支持ARM处理器的设备。因此华为在服务端架设了一些ARM服务器,用来运行鸿蒙App。而后将运行后的UI传给客户端。其实目前IDE中的模拟器实际上是一个鸿蒙预览器。下面就说一下如何利用鸿蒙预览器运行鸿蒙App。
首先要启动鸿蒙预览器。也能够称为鸿蒙虚拟设备(HVD)。点击Tools -> HVD Manager菜单项,会显示以下图所示的HVD Manager窗口。不过在打开HVD Manager窗口以前,还会弹出一个以下图的页面,要求登陆华为开发者网站。一般第一次登陆成功后,后续就不须要再登陆了。若是有华为手机,也能够经过扫码登陆。
登陆成功后,会弹出下面的窗口,要求受权,点击“容许”按钮便可。
成功受权后,就会在HVD Manager窗口中显示虚拟设备,以下图所示。
目前有两个设备:TV和Wearable。其中TV是华为智慧屏、Wearable是智能手表。先启动TV(双击便可)。
启动虚拟设备后,在IDE右侧会显示以下图的虚拟设备界面,右侧的按钮用来控制虚拟设备。
如今就能够在虚拟设备上运行鸿蒙App了。
点击右上角entry右侧的箭头按钮,以下图所示。
会弹出以下图的设备选择窗口,目前只有一个虚拟设备,选择该设备,点击OK按钮。
选择虚拟设备后,App就会在虚拟设备中运行,效果以下图所示:
要注意的是,虚拟设备只有1小时的使用时间,若是超过1小时,须要再次申请,而后就会从新计时,并且一个帐号同时只能申请一个虚拟设备。
这是咱们运行的第一个鸿蒙App:Hello World。若是要修改Hello World,须要打开MainAbilitySlice.java文件,而后将Hello World改为“世界你好”便可,该文件的完整代码以下:
package com.example.myfirstjavatv.slice;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;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.ShapeElement;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);
Text text = new Text(this); text.setLayoutConfig(config); 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); }}
运行效果以下图所示:
5. 开发第一个基于JS的智能手表App
在上一节介绍了如何用Java开发鸿蒙TV App,本节会介绍如何用JS开发智能手表App,首先按下图建立智能手表的工程(工程名是MyFirstWatch)。
watch工程目录的结构与TV工程的结构相似,只是源代码除了java部分,还有js部分,并且多了个node_modules目录,用过Node的同窗都应该很清楚,这个目录是保存Node中模块的。js目录包含了全部相关的JS、HTML和CSS代码。watch工程目录结构以下图所示。
如今着重看一下js目录,结构以下:
在js/default目录下,有3个子目录:common、i18n和pages。其中common是一些资源,如图像等。i18n用于国际化,默认有两个文件:en-US.json和zh-CN.json,分别表示英文和中文字符串。pages目录包含了一些代码文件。index是默认生成的首页目录。其中包含3个文件:index.css、index.hml和index.js。其中index.hml是定制的HTML文件(减小了部分标签,也增长了一些标签,但整体风格与HTML很是接近)。如今分别看一下这3个文件的代码:
从这3个文件的代码能够看出,与微信小程序的开发方式很是接近。并且大多数技术都是Web栈的,所以,只要会Web、微信小程序的程序员,很容易上手。
如今按前面的方式申请智能手表虚拟设备,效果以下图所示。
如今运行程序,会获得下面的结果:
若是要修改输出文本,能够直接修改国际化文件zh-CN.json,也能够直接修改index.js或index.hml文件。
6. 李宁老师将来关于鸿蒙的课程
你们都知道,我在2020-9-11号在B站发布了全球第一套鸿蒙开发课程:《鸿蒙(HarmonyOS)2.0入门与实战》,这是我提早一个月到华为作的,因为保密协议的缘由,只能在发布会后再发布。感兴趣的同窗能够识别下面二维码观看。
这套课程只是介绍了鸿蒙App开发的基本方式,以及基础组件的使用方法。鸿蒙的技术远不止这么多,在将来的一段时间,我将不按期推出关于鸿蒙各个方面的技术视频、书和文章。主要课程包括:
(1)全方位介绍鸿蒙App开发技术(Java和JS);
(2)鸿蒙相关智能硬件(多是鸿蒙与arduino、树莓派在一块儿应用);
(3)各种项目实战(若干),包括独立的App项目,以及与智能硬件结合的项目;
得到更多关于鸿蒙的免费学习视频,请关注个人B站:https://space.bilibili.com/477001733 或识别下面二维码打开个人B站:
本文分享自微信公众号 - 极客起源(geekculture)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。