os 订阅
操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。 展开全文
操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
信息
英文简称
OS
常见系统
Windows,macOS,Linux,iOS,Android
外文名
operating system
体系结构
模块组合结构、层次结构、微内核结构
组成部分
内核、驱动程序、接口库、外围
中文名
操作系统
功    能
处理器管理、存储器管理、设备管理、文件管理
基本类型
批处理系统、分时操作系统、实时操作系统
特    征
并发、共享、虚拟、异步
操作系统简介
在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。从计算机用户的角度来说,计算机操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。事实上,全新操作系统的设计和改良的关键工作就是对体系结构的设计,经过几十年以来的发展,计算机操作系统已经由一开始的简单控制循环体发展成为较为复杂的分布式操作系统,再加上计算机用户需求的愈发多样化,计算机操作系统已经成为既复杂而又庞大的计算机软件系统之一。 [1] 
收起全文
精华内容
下载资源
问答
  • HarmonyOS与Android的全面对比

    万次阅读 多人点赞 2021-07-25 00:27:07
    二、HarmonyOS与Android的对比 2.1 HarmonyOS并不是Android的替代品 2.2 系统定位 2.3 内核对比 2.4 运行速度 三、方舟编译器 一、前言 这段时间我在寻思这学习一下鸿蒙, 第一是因为在着手做一个自己的开源...

    目录

    一、前言

    二、HarmonyOS与Android的对比

    2.1 HarmonyOS并不是Android的替代品

    2.2 系统定位

    2.3 内核对比

    2.4 运行速度

    三、方舟编译器


    一、前言

    这段时间我在寻思着学习一下鸿蒙,
    第一是因为在着手做一个自己的开源项目,技术选型的时候想到了鸿蒙;
    第二是我个人非常看好鸿蒙系统的未来,清楚明白华为和一些民族企业担负的责任和国人的期待,虽然带着一些民族感情;鸿蒙刚发布的时候自己是非常激动的,但是后来项目太忙一直没有认真的去了解过,这次打算花一部分时间认认真真的去研究学习一下。
    于是我开始试探性的去请教身边的大佬们,公司的CTO、中台部门的总监、老东家数十年行业经验的老架构、以及在中科院读研究生的大学老室友、技术圈的网友等等,他们都给出了自己独特的看法,让我从多方面更好的去了解到了大家对鸿蒙的认识,当然期间也发现很多国内开发者对鸿蒙系统嗤之以鼻或者抱着一些不太看好的心态,甚至有人在我的关于鸿蒙开发的博客下评论一些比较难听的话!(当然一千个读者有一千个哈姆雷特,这都是个人自由);
    这肯定是一篇遭到唾弃的文章!但这一切都无法磨灭我坚定的信仰:支持国产、支持民族企业、支持每一个为国家富强而努力的同胞!

    二、HarmonyOS与Android的对比

    2.1 HarmonyOS并不是Android的替代品

    HarmonyOS与Android的对比相信是很多关注鸿蒙的人,非常关注的一个焦点话题,我并不特别了解安卓(Android)开发,只在大学期间有过一些课程的涉猎,但是我想我既然想学鸿蒙(HarmonyOS)那就离不开去硬着头皮探索这个问题!这里事先声明,写这篇文章之前我认真阅读了很多知乎、C站、B站、HarmonyOS官网、腾讯网关于HarmonyOS相关新闻等文章,也稍微跟了一些源码最后做了这些总结。

    文章观点:

    1. HarmonyOS并不是Android的替代品,HarmonyOS与Android并非同一个赛道
    2. HarmonyOS目前缺乏生态支持这一点远远比不上Android,但是HarmonyOS的战略眼光更加高,未来可期
    3. HarmonyOS相比Android有一定的性能提升

    2.2 系统定位

    安卓(Android):是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。

    鸿蒙(HarmonyOS):是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,提供全场景(移动办公、运动健康、社交通信、媒体娱乐等)业务能力。
    建议可以看下华为官方对于HarmonyOS系统定位的介绍视频:
    视频地址:

    https://mos-vod-drcn.dbankcdn.cn/P_VT/video_injection/7C1346286/v3/7C5879811130980925606204416/MP4Mix_H.264_1920x1080_6000_HEAAC1_PVC_NoCut.mp4

    从上面的简单介绍就能很明显的看出,Android和HarmonyOS两款产品的研发初衷完全不一样,根本就不在同一个赛道上,安卓系统面向的是手机端,而鸿蒙系统面向的是这些年比较的新的概念物联网,致力于利用其5G世界领先的技术,优先布局和打造一个超级终端,万物互联的生态。

    2.3 内核对比

    安卓(Android):基于linux的宏内核设计 ,宏内核包含了操作系统绝大多数的功能和模块,而且这些功能和模块都
    具有最高的权限,只要一个模块出错,整个系统就会崩溃,这也是安卓系统容易崩溃的原因。系统
    开发难度低。

    鸿蒙(HarmonyOS):基于微内核设计,微内核仅包括了操作系统必要的功能模块(任务管理、内存分配等)处在核心地位具有最高权限,其他模块不具有最高权限,也就是说其他模块出现问题,对于整个系统的运行是没有阻碍的。微内核稳定性很高。鸿蒙系统包含了两个内核:

    • Linux内核
    • LiteOS内核

    建议可以看下华为官方对于HarmonyOS的技术架构介绍视频,它这个有对内核层总体架构有说明。
    内核层

    • 内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
    • 驱动子系统:硬件驱动框架(HDF)是HarmonyOS硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。

    视频地址:

    https://mos-vod-drcn.dbankcdn.cn/P_VT/video_injection/D71346286/v3/2999FE4A1130980852826641152/MP4Mix_H.264_1920x1080_6000_HEAAC1_PVC_NoCut.mp4

    2.4 运行速度

    安卓(Android):基于Java语言编码,Java语言有个很大的缺点是其不能直接与底层操作系统通信,需要通过虚拟机充当中间转换的角色,这是每一个Java开发人员都知道的知识点,JVM也是我们Java程序员必修的一门高级课程。虽然Java语言由于虚拟机的优化,编译器的优化,热点代码等技术使得其越来越快,但是无法直接与操作系统互相通信一直影响着其性能的突破(AOT(Ahead Of Time)技术我并未研究过,只了解Java的JIT(Just-in-time))。
    安卓(Android)技术架构图如下

    安卓技术架构图.jpg

    鸿蒙(HarmonyOS):鸿蒙的开发也可以采用Java语言,官方也推荐使用Java语言开发,但是华为针对安卓或者说Java语言的这种特性,研发了方舟编译器,通过方舟编译器编译的软件可以直接与底层操作系统通信,方舟编译器在这一层面做到了取代虚拟机。虽然没有研究过,但是推断应该是在打包的时候,通过方舟编译器转换为操作系统能够读懂的机器语言,这样就可以跳过虚拟机解释这一步骤,当然这是肯定对机器的内存要求比较高,应该也存在启动后无法继续优化等问题。
    鸿蒙(HarmonyOS)系统架构图如下:

    鸿蒙系统架构图.png

    三、方舟编译器

    以下部分来源开源中国对方舟编译器的介绍:
    https://www.oschina.net/p/arkcompiler?hmsr=aladdin1e1

    方舟编译器
    华为方舟编译器作为一款全新的编译器可以显著提高手机的运行速度,它不采用现有编译器边解释边执行的模式,而是将这种动态编译改为静态编译,可以做到全程执行机器码,进而高效运行程序,大大缩短程序响应时间。

    095705_VgFL_2720166.jpg

    方舟编译器的优势

    • 多语言联合:将同一应用中的不同语言代码联合编译、联合优化,消除语言间的性能“鸿沟”,降低开发者的优化成本
    • 轻量运行时:通过编译器的语言实现能力和优化能力增强,应用运行时的开销更小
    • 软硬件协同:编译器与芯片实现软硬件协同优化,充分发挥硬件能效,应用体验更佳
    • 多平台支持:支持面向多样化的终端设备平台进行编译和运行,根据设备特征提供便捷的开发与部署策略,提高开发效率

    082446_XqTE_12.png

    展开全文
  • 文章目录1、获取源码2、什么是LiteOS3、LiteOS的目录介绍4、LiteOS 中Make体系5、LiteOS 中Kconfig的配置5.1、顶层Kconfig5.2、具体板级的deconfig文件6、编译7、顶层目录下的config.mk文件主要完成如下功能的配置:...

    在这里插入图片描述

    1、获取源码

    OpenHarmonyHarmonyOS的开源版,由华为捐赠给开放原子开源基金会(OpenAtom Foundation)开源。第一个开源版本支持在128KB~128MB设备上运行,欢迎参加开源社区一起持续演进。

    代码仓库地址1:https://codechina.csdn.net/openharmony
    在这里插入图片描述

    代码仓库地址2:https://openharmony.gitee.com
    在这里插入图片描述

    本专栏主要分析OpenHarmony内核的相关代码:
    Cortex-A系列处理器内核:kernel_liteos_a
    Cortex-M系列处理器内核:kernel_liteos_m

    2、什么是LiteOS

    Huawei LiteOS是华为针对物联网领域推出的轻量级物联网操作系统,是华为物联网战略的重要组成部分,具备轻量级、低功耗、互联互通、组件丰富、快速开发等关键能力,基于物联网领域业务特征打造领域性技术栈,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期,可广泛应用于可穿戴设备、智能家居、车联网、LPWA等领域。

    Huawei LiteOS微内核在OpenHarmony源码中所处的位置:
    在这里插入图片描述

    3、LiteOS的目录介绍

    我们以Cortex-A系列处理器内核为例:kernel_liteos_a
    在这里插入图片描述
    可以看到有12目录、4个文件。

    • 目录的作用
    名称描述
    apps用户态的init和shell应用程序。
    arch体系架构的目录,如arm等。
    bsdfreebsd相关的驱动和适配层模块代码引入,例如USB等。
    compat内核posix接口的兼容。
    fs文件系统模块,主要来源于NuttX开源项目。
    kernel进程、内存、IPC等模块。
    lib内核的lib库。
    net网络模块,主要来源于lwip开源项目。
    platform支持不同的芯片平台代码,如Hi3516DV300等。
    security安全特性相关的代码,包括进程权限管理和虚拟id映射管理。
    syscall系统调用。
    tools构建工具及相关配置和代码。
    • 文件的作用
    名称描述
    Makefile存储了源码文件构建目标文件的规则,具体是否按着规则去执行还要看配置变量。
    Kconfig配置变量
    config.mk主要进行编译选项的设置、编译工具的定义、编译时包含的文件、编译的链接地址。
    build.sh编译脚本

    4、LiteOS 中Make体系

    顶层 Makefile 在编译时是入口点,从整体上组织所有的 Makefile 文件,并定义终极目标,在这里还定义了与平台无关的很多核心变量与一些很重要的 make目标。顶层 Makefile 位于内核源码的根目录,下面我们分析顶层 Makefile 的主要工作。

    用户在内核目录中键入make menuconfig之后 ,工作流程如下 :

    1. 顶 层 Makefile调用解析顶层Kconfig文件,获得待配置条目;
    2. 判断是否有已配置好的.config文件,如果有则导入;
    3. 用户在配置好后,将配置结果存入配置文件。

    Linux类似LiteOSMake体系顶层 makefile会通过读取配置文件,递归编译内核代码树的相关目录。
    /kernel_liteos_a/Makefile

    ##### make menuconfig #####
    export CONFIG_=LOSCFG_
    MENUCONFIG_PATH = $(LITEOSTOPDIR)/tools/menuconfig
    KCONFIG_FILE_PATH = $(LITEOSTOPDIR)/Kconfig
    

    5、LiteOS 中Kconfig的配置

    无论在什么平台上,软件配置是用户接触程序的第一步,我们这里是内核配置,那么入口就是Kconfig文件。

    5.1、顶层Kconfig

    通过顶层的Kconfig我们可以看见内核所以支持的功能,类似说明书一样,等待你去打开功能。
    例如:

    kernel_liteos_a/Kconfig

    //包含其他的Kconfig
    source "../../vendor/hisi/hi35xx/platform/hiedmac/Kconfig"
    source "../../kernel/liteos_a/bsd/dev/usb/Kconfig"
    source "../../drivers/hdf/lite/Kconfig"
    
    config USB_DEBUG
        bool "Enable USB Debug"
        default n
        depends on SHELL && DRIVERS_USB && DEBUG_VERSION
        help
          Answer Y to enable LiteOS support usb debug.
          use shell command to open the specified debug level print.
          
    config MEM_DEBUG
        bool "Enable MEM Debug"
        default n
        depends on DEBUG_VERSION
        help
          Answer Y to enable LiteOS support mem debug.
    

    通过source加载其他的Kconfig例如加载USB相关配置

    kernel_liteos_a/bsd/dev/usb/Kconfig:

    config DRIVERS_USB
        bool "Enable USB"
        default y
        depends on DRIVERS && COMPAT_BSD
        help
          Answer Y to enable LiteOS support usb.
    
    config DRIVERS_USB_HOST_DRIVER
        bool "Enable USB HCD"
        default y
        depends on DRIVERS_USB && DRIVERS
        help
          Answer Y to enable LiteOS to support usb host controller driver.
    ...
    

    5.2、具体板级的deconfig文件

    可配置说明书有了,我们也不能每次都重新配置一遍把,这个时候就有板级默认配置。

    目前LiteOS中Cortex-A系列处理器内核为例:kernel_liteos_a适配的开发板:hi3518hi3516,并提供了已经配置好的.config,下来我们以hi3518为例子对其进行分析。
    源文件为:tools/build/config/hi3516dv300_release.config
    在这里插入图片描述
    通过该文件我们可以知道内核配置包括了些什么?
    CPU、开发板、文件系统、驱动程序和调试等大量的待配置信息。

    # Automatically generated file; DO NOT EDIT.
    # Huawei LiteOS Configuration
    
    # Compiler
    ...
    # Platform
    ...
    # Extra Configurations
    ...
    # Kernel
    ...
    # Lib
    ...
    # Compat
    ...
    # FileSystem
    ...
    # Net
    ...
    # Debug
    ...
    # Driver
    LOSCFG_DRIVERS=y
    LOSCFG_DRIVERS_USB=y
    LOSCFG_DRIVERS_USB_HOST_DRIVER=y
    # LOSCFG_DRIVERS_USB_HOST_EHCI is not set
    LOSCFG_DRIVERS_USB_HOST_XHCI=y
    LOSCFG_DRIVERS_USB_DEVICE_CLASS_DRIVERS=y
    

    后面我们就将以LOSCFG_DRIVERS_USB为切入点分析源码,但在这之前,我们配置有了,下来就是编译了。

    6、编译

    kernel_liteos_a/bsd/dev/usb/Makefile
    最后编译时候,会根据.config编译相关的源代码:

    例如下面这些代码都将会进行编译,生成了目标文件usb_bask

    include $(LITEOSTOPDIR)/config.mk
    
    MODULE_NAME := usb_base
    
    ifeq ($(LOSCFG_DRIVERS_USB), y)
    LOCAL_SRCS += $(CORE_SRC)/usb_dynamic.c  \
                  $(CORE_SRC)/usb_parse.c  \
                  $(CORE_SRC)/usb_error.c  \
                  $(CORE_SRC)/usb_handle_request.c  \
                  $(CORE_SRC)/usb_util.c  \
                  $(CORE_SRC)/usb_lookup.c  \
                  $(CONTROLLER_HOST_SRC)/usb_controller.c  \
                  $(QUIRK_SRC)/usb_quirk.c \
                  $(CORE_SRC)/usb_device.c  \
                  $(CORE_SRC)/usb_process.c  \
                  $(CORE_SRC)/usb_hub.c  \
                  $(CORE_SRC)/usb_request.c  \
                  $(CORE_SRC)/usb_transfer.c  \
                  $(CORE_SRC)/usb_dev.c  \
                  $(CORE_SRC)/usb_mbuf.c  \
                  $(CORE_SRC)/usb_generic.c \
                  $(CORE_SRC)/usb_if.c
    endif
    

    这里生成目标文件是如何链接的内核中,这个时候我们就要开始分析config.mk的作用了:

    7、顶层目录下的config.mk文件主要完成如下功能的配置:

    1、确定生成可执行文件过程中需要的各种工具,如编译器(arm-linux-gcc)、连接器(arm-linux-ld)、反汇编器(arm-linux-objdump
    2、确定CPU、板相关的配置文件,存在于各个目录下的config.mk
    3、确定编译、链接、转换等过程的操作选项
    4、根据步骤3确定的编译连接选项生成需要的文件
    kernel_liteos_a/Makefile:

    $(LD) $(LITEOS_LDFLAGS) $(LITEOS_TABLES_LDFLAGS) $(LITEOS_DYNLDFLAGS) -Map=$(OUT)/$@.map -o $(OUT)/$@ --start-group $(LITEOS_LIBDEP) --end-group
    

    kernel_liteos_a\config.mk:

    ############### this is a makefile that you can config it ###############
    -include $(LITEOSTOPDIR)/tools/build/mk/los_config.mk
    ...
    LITEOS_LIBDEP   := $(LITEOS_BASELIB)
    

    目录:kernel_liteos_a\tools\build\mk\los_config.mk

    ############################# Platform Option Begin#################################
    include $(LITEOSTOPDIR)/platform/bsp.mk
    ...
    ifeq ($(LOSCFG_DRIVERS_USB), y)
        LITEOS_BASELIB  += -lusb_base
        LIB_SUBDIRS     += $(LITEOSTOPDIR)/bsd/dev/usb
        LITEOS_USB_INCLUDE += -I $(LITEOSTOPDIR)/bsd/dev/usb
    ifeq ($(LOSCFG_USB_DEBUG), y)
        LITEOS_CMACRO   += -DLOSCFG_USB_DEBUG
    endif
    endif
    ...
    

    看到这里,我相信大家对kernel_liteos_a整个代码框架有了整体的印象,后面我们就会深入到具体的驱动模块及子系统中看看,它是如何实现的。

    我正在参加 CSDN 的鸿蒙技术征文活动,给我点赞支持,感谢。

    展开全文
  • 抢先学鸿蒙(HarmonyOS)2.0,你就是下一个大咖!

    万次阅读 多人点赞 2020-09-16 18:48:30
    2020年9月10日,华为开发者大会发布了鸿蒙(HarmonyOS)2.0。我在2020-9-11日也发布了全球首套鸿蒙2.0 App开发视频课程《鸿蒙(HarmonyOS)2.0入门与实战》【提前一个月做完了,由于保密协议的原因,只能在发布会后...

    目录

    1. 你不知道的鸿蒙(HarmonyOS)

    2. 搭建HarmonyOS开发环境

    3. 开发第一个基于Java的TV App

    4. 如何运行HarmonyOS App

    5. 开发第一个基于JS的智能手表App

    6. 李宁老师未来关于鸿蒙的课程

     

    1. 你不知道的鸿蒙(HarmonyOS)

    2020年9月10日,华为开发者大会发布了鸿蒙(HarmonyOS)2.0。我在2020-9-11日也发布了全球首套鸿蒙2.0 App开发视频课程《鸿蒙(HarmonyOS)2.0入门与实战》【提前一个月做完了,由于保密协议的原因,只能在发布会后发布视频课程】。HarmonyOS是全场景操作系统。也就是说,从理论上,HarmonyOS可以在任何平台上运行(包括但不限于PC、手机、平板电脑、车载电脑、手表、iot设备等)。那么这是怎么做到的呢?

    大家知道,不管是什么样的设备,通常由下面3个因素决定到底能运行什么的系统:

    (1)CPU架构(x86、ARM、RISC-V等)

    (2)CPU的处理能力

    (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);
    
        @Override
        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);
        }
    
        @Override
        public void onActive() {
            super.onActive();
        }
    
        @Override
        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项目,以及与智能硬件结合的项目;

     

     

     

     

     

     

     

    展开全文
  • VirtualBox安装Mac OS 10.11——虚拟机安装黑苹果

    万次阅读 多人点赞 2016-05-14 18:39:11
    VirtualBox安装Mac OS 10.11 ,安装日期:2016 / 5 / 14 用虚拟机装黑苹果本人也装了不下3次了,这次为了做这个教程还特意把virtualbox和旧版的Mac OS删了,重新再装一遍。 所以保证能运行,不像网上其他教程都是...

    VirtualBox安装Mac OS 10.11 ,安装日期:2016 / 5 / 14

     

    用虚拟机装黑苹果本人也装了不下3次了,这次为了做这个教程还特意把virtualbox和旧版的Mac OS删了,重新再装一遍。

    所以保证能运行,不像网上其他教程都是导出复制,还不要脸的贴个原创。

     

    VirtualBox是官网下的最新版:  5.0.20 for Windows hosts x86/amd64  官网网址是: https://www.virtualbox.org/wiki/Downloads

    2016年3月26日更新 OSX 10.11.4:  正式版官网下载地址:  https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=1018109117&mt=12&ls=1

    如果嫌官网慢,也可以下载这个迅雷种子 OS X 10.11 El Capitan GM Candidate.torrent

     

    1、创建虚拟机

    2、取消 "启动顺序" 中的软驱。(注意:内存大小要根据自身需求而定,我电脑是win7 64位,有6G内存,所以我给苹果占3G内存)

    3、如果你的机器是4核,可选择双核 CPU 数量 = 2(当然默认设置1也是可以的,只是运行速度快慢而已)

    4、设置显存为128M(太小的话刷新图像会很卡)

    5、这时候关闭Virtualbox,以管理员的身份打开 "命令提示符"(俗称cmd),输入以下内容:

     

    cd "C:\Program Files\Oracle\VirtualBox\"
    VBoxManage.exe modifyvm MacOS10.11 --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff
    VBoxManage setextradata MacOS10.11 "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3"
    VBoxManage setextradata MacOS10.11 "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
    VBoxManage setextradata MacOS10.11 "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
    VBoxManage setextradata MacOS10.11 "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
    VBoxManage setextradata MacOS10.11 "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

     

    6、关闭命令行,重新打开VirtualBox。选中 “MacOS10.11” ,单击 “启动” 按钮,打开虚拟机。

    这时候苹果会自动初始化,可能有1分钟左右。(如果报错,说明你上面的命令没有输入正确)

    7、选中 "Show All",这样才有 “china” 选项。

    8、键盘选中 “简体中文” -- > "拼音模式"。

    9、是否需要导入其他Mac电脑的信息到该系统中,我选的是 “不需要”

    10、是否需要位置服务。我选的是 “Don‘t Use”(不需要)。

    11、输入你的Apple ID,也可以不输入。

    12、同意OS X 的软件证书。

    13、创建登录Mac OS 10.11 的账号密码。

    14、选择时区。我是福州人,所以选的是福州。你们也可以选 “北京” 时间。

    15、你是否需要把你使用电脑的统计信息发送给苹果,我不想发送。

    16、开始设置并初始化系统了。。。

    17、Ok,Mac OS X 10.11 EI Capitan(El Capitan即酋长石,称“世界上最大的一块裸露在地面上的单体花岗岩”)安装成功。

     

    如果镜像失效了,可以到该网站(黑苹果小兵)下载最新版 https://blog.daliansky.net/

    展开全文
  • 鸿蒙OS是什么

    万次阅读 多人点赞 2020-09-25 14:41:54
    二、HarmonyOS的特点1.HarmonyOS的设计与理念2.HarmonyOS的创新3.方舟编译器特点分析4.HarmonyOS的应用研究结束 前言 提示: 2019年8月华为推出鸿蒙HarmonyOS,并运用在荣耀智慧屏,HDC 2020,华为消费者业务软件部...
  • python 中os模块os.path.exists()含义

    万次阅读 多人点赞 2018-08-30 09:31:38
    os即operating system(操作系统),Python 的 os 模块封装了常见的文件和目录操作。 os.path模块主要用于文件的属性获取,exists是“存在”的意思,所以顾名思义,os.path.exists()就是判断括号里的文件是否存在的...
  • 目录树1.1.2安装环境:1.1.3所需资源:1.1.4 Unlocker 3.0解锁1.1.5 配置环境1.1.6开始安装1.1.7开启虚拟机进入...VMware15安装MAC(MAC OS 10.13)(OS X 10.14)原版可升级最新可解锁macOS Unlocker3.0 1.1.2安装...
  • win10下虚拟机VMware安装PhoenixOS(凤凰OS)

    万次阅读 多人点赞 2018-05-01 18:30:07
    虚拟机VMware安装PhoenixOS(凤凰OS) 虚拟机VMware安装PhoenixOS(凤凰OS) 0.什么是PhoenixOS 1.下载PhoenixOS镜像 2.下载VMware 3.开始安装系统 第一步新建虚拟机 第二步安装PhoenixOS 第三步为PhoenixOS引导添加...
  • 说明:本篇文章主要讲解,华为 HarmonyOS2.0(鸿蒙OS) 开发者beta公测招募的报名流程 日期:2021-4-29日 报名网址:https://developer.huawei.com/consumer/cn/activity/301607581257578636/signup 适用范围:找不到...
  • Mac os 10.7.2 OSInstall+OSInstall.mpkg

    热门讨论 2011-10-31 21:16:25
    1.安装Mac os 10.7.2操作系统的用户会用到的替换文件:OSInstall+OSInstall.mpkg 2.这个好用,但注意版本是 10.7,对安装最新苹果正式版10.7.2的朋友绝对有用。
  • Python的os模块简介

    万次阅读 多人点赞 2018-01-14 12:52:28
    一、什么是os模块 os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,这时就离不了os模块,...
  • HarmonyOS(鸿蒙)——启动流程

    万次阅读 多人点赞 2021-08-01 00:28:13
    目录 一、准备 1.1 创建项目 1.2 运行项目 ...进入HarmonyOS(鸿蒙)正式开发之前,可以通过一个简单的HelloWorld的示例代码来了解其运行时的相关流程。如下是通过DevEco Studio创建的一个简单Hel
  • 鸿蒙OS下载地址

    万次阅读 多人点赞 2019-08-10 17:27:44
    HarmonyOS 是“第一个适用于所有场景的基于微内核的分布式操作系统”,它可以运行在智能手机、智能扬声器、计算机、智能手表、无线耳塞、汽车与平板电脑上,其支持的 RAM 大小从千字节到千兆字节不等。奈何很多人不...
  • 谷歌将正式推出 Fuchsia OS,已有适配设备

    万次阅读 多人点赞 2021-05-25 20:02:14
    原文链接: https://9to5google.com/2021/05/25/google-releases-fuchsia-os-nest-hub/ ...Fuchsia OS 将向 2018 年发布的初代 Nest Hub 智能显示器推出更新,而此更新都不会更改 Nest Hub 的任何功能 ,而内核.
  • import os

    万次阅读 多人点赞 2019-07-25 15:31:52
    为什么要执行import os? import os的作用是什么? 1、为什么要执行import os? 我们在python下写程序,需要对文件以及文件夹或者其他的进行一系列的操作。但是,我们怎么在python中对文件进行操作呢?这就引入了os...
  • HarmonyOS简介

    千次阅读 多人点赞 2020-09-13 21:44:05
    前两天,华为发布了HarmonyOS 2.0,俺也赶个时髦,给大家简单介绍下HarmonyOS。 定义 首先,我们来看一下官方对HarmonyOS的定义。根据官方的定义,HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、...
  • HarmonyOS

    千次阅读 2019-08-15 09:41:18
    鸿蒙系统(HarmonyOS),是第一款基于微内核的全场景分布式OS,是华为自主研发的操作系统。2019年8月9日,鸿蒙系统在华为开发者大会<HDC.2019>上正式发布,华为会率先部署在智慧屏、车载终端、穿戴等智能终端...
  • HarmonyOS鸿蒙操作系统 Ⅰ。什么是鸿蒙操作系统(HarmonyOS) HarmonyOS 是“第一个适用于所有场景的基于微内核的分布式操作系统”,它可以运行在智能手机、智能扬声器、计算机、智能手表、无线耳塞、汽车与平板...
  • os.system和os.popen和commands

    万次阅读 2019-09-02 10:54:32
    os.system和os.popen os.system(cmd)的返回值是脚本的退出状态码,只会有0(成功),1,2 os.popen(cmd)返回脚本执行的输出内容作为返回值 当你想把执行命令返回值赋值给一个变量的时候就需要使用os.popen commands ...
  • 谷歌Fuchsia OS和华为鸿蒙系统(HarmonyOS)都是属于新一代的操作系统,这两个系统都不基于Linux,更不基于安卓(Android)。基于这个思路,有人认为它们有一些联系,或者说在开发构架上有一致的地方。可惜的是,它们...
  • import os总结

    万次阅读 多人点赞 2018-05-25 13:29:00
    最近在看死磕yolo开源项目,之前没有做过相关的,所以,每一个句代码都要死磕,碰到import os 所以记录一下假装自己学过... .. . 其实我主要还是在造轮子咯 主要是参考下面这个博客:...
  • GuestOS和HostOS是什么?

    千次阅读 2020-03-16 15:21:12
    GuestOS:VM(虚拟机)里的的系统(OS); HostOS:物理机里的系统(OS);
  • Python必学的OS模块详解

    万次阅读 多人点赞 2018-07-04 15:54:22
    面试经典题目:什么是os?第一个:系统操作import os print (os.sep) print (os.name) print (os.getenv('path')) print (os.getcwd())执行结果如下:第二个:目录操作-增删改查如图:输出当前的目录下的所有文件和...
  • python中OS模块;

    万次阅读 多人点赞 2019-07-11 18:07:30
    OS模块 OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作。 在自动化测试中,经常需要查找操作文件,比如查找配置文件(从而读取配置文件的信息),查找测试报告...
  • Python之os

    万次阅读 多人点赞 2019-05-05 19:14:58
    标准库 OS 我们经常会与文件和目录打交道,对于这些操作,python提供了一个os模块,里面包含了很多操作文件和目录的函数。 首先导入OS: import os 下面介绍一些OS库的常用命令:
  • 鸿蒙OS — 基于微内核的全场景分布式OS

    千次阅读 多人点赞 2019-08-10 14:42:57
    2019年8月9日,华为发布了鸿蒙OS(HarmonyOS)。 鸿蒙是一款基于微内核的全场景分布式OS。微内核赋予鸿蒙更高的扩展性和安全性,分布式使得鸿蒙可以全场景多终端交互,高性能IPC和确定性引擎使得鸿蒙天生流畅,是一...
  • OS模块

    千次阅读 2018-11-17 10:54:38
    OS模块 用于处理文件与目录 os.name 属性,访问当前操作系统的名称 &gt;&gt;&gt; os.name 'posix' &gt;&gt;&gt; os.name 'nt' win:nt linux:posix ...
  • 基于LiteOS Studio零成本学习LiteOS物联网操作系统

    千次阅读 多人点赞 2020-12-15 11:25:56
    LiteOS社区现在对外开放了对Qemu模拟器的适配工程,在不使用开发板的情况下,也可以搭建LiteOS开发环境,做到零成本,非常方便初学者学习。 Qemu简介 Qemu是一套由FabriceBellard编写的以GPL许可证的模拟处理器,...
  • 您需要安装OS X 10.10或OS X 10.11以及OS X server v4 或 OS X server v5”, 我自己本身的MAC 中的一个server.app是和我当前的系统是不兼容的, 此时我们需要自己下载一个OS X server重新安装, 在Mac AppSt
  • vim ostest.pyimport os if not os.path.exists(‘testos’): os.mkdir(‘testos’) #如果没有则建立文件路径 print (os.getcwd())os.chdir(‘/’)print os.getcwd()------------------创建目录在Python中可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,885,928
精华内容 754,371
关键字:

os