开启辅助访问
 找回密码
 立即注册

如何看待 9 月 10 日华为发布的鸿蒙 OS 2.0 系统,应用前景 ...

HIFILI 回答数5 浏览数652
华为开发者大会 2020 发布鸿蒙 OS 2.0 系统,其中面向开发者 Beta 版本 9 月10 日上线大屏、手表、车机系统,2020 年 12 月发布手机系统。预计明年手机将搭载鸿蒙系统。
相关问题
作为专业技术人员,你如何看待华为宣布鸿蒙系统升级至 2.0 版本?有哪些信息值得关注?
2020 年 9 月 10 日举办的华为 HDC 2020 大会,有哪些你所关注的内容?
使用道具 举报
| 来自北京 用Deepseek满血版问问看
花枝俏 | 来自北京
首先要先明白,操作系统是什么?
操作系统是一组主管并控制计算机操作、运作和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序,同时也是计算机系统的内核与基石。——维基百科
然后,再阅读 @赵俊民 大大的一些文章:
赵俊民:关于分布式交互的一些论文和文章汇总赵俊民:读《M2: Multi-Mobile Computing》赵俊民:多设备交互研究—微软篇以及去年鸿蒙刚发布时我写的回答(不要脸一下哈哈哈):
年轻人啊不要熬夜:如何看待华为 2019 年 8 月 9 日正式发布的 HarmonyOS 鸿蒙系统?然后你大致就能明白,什么“鸿蒙是Android换皮”、“鸿蒙不就是垃圾LiteOS改的嘛”、“鸿蒙还不如YunOS”,等等,完全黑不到点子上,因为鸿蒙OS之所以称为“分布式操作系统”,是因为它的愿景是成为一个可以整合、管理多个设备的硬件、软件资源的系统。有兴趣的人可以多看一些前几年的OS顶会论文(为啥不是最近呢?因为最近基本都是AI相关的/捂脸/捂脸/捂脸)。
举个例子,上面的我去年的回答里提到的论文,里面有个概念叫split kernel,方便理解中文我就直接翻译为分布式内核吧(对不起英语老师!)。在实现时,作者是基于Linux修改的,兼容POSIX接口。那么,它到底是split kernel,还是linux kernel?从底层看,它每一个资源组件都是跑着linux kernel,但作为一个整体的操作系统,它是split kernel。也就是多个linux kernel组成了split kernel。
更新:对于SplitKernel,知乎上也有挺多文章解读,对于体系结构、OS感兴趣的可以去查阅一下。国内大厂例如阿里云、腾讯云对于这类系统的研究还是非常强的。
Dylan:OSDI 18| LegoOS:  分布式操作系统同理,在我个人的理解里,鸿蒙整体也是类似的这种架构。所以,它包含了LiteOS、安卓系统、Linux以及华为所说的微内核。另外,这些东西,在官网的文档里说得很清楚了。
关于它所展现的愿景,大家从华为现在已经很成熟的多屏协同能体会到一些。
更新:M2的论文(MobiSys 2019)演示视频,鸿蒙不一定可以做到下面那样,但是我觉得有助于理解。

M2:Multi-Mobile Computing
https://www.zhihu.com/video/1289143780449193984

<hr/>看了一晚上的文档和代码,我不想讲细节,而且我本来不打算回答这个问题的,但是,看完很多回答,总有一种很奇怪的感觉,那就是:完全没有黑在点子上
不谈立场(这个我也没必要谈,先入为主的思维已经没有意义了)的话,对于鸿蒙的开源,只取决于你是结果导向还是过程导向的人。
而且,就算再怎么黑,舆论导向早已形成,鸿蒙现在也已经有了很多厂家在对接、完善,虽然前途依然模糊,但是对于乐观主义的我,已经够了。
<hr/>对于现在的大家提到的问题,我大致说一下我的理解。
首先是最受争议的那个导入了Android SDK的问题:


首先,这个图片里的东西,是鸿蒙APP的SDK,不是OS代码,OS代码在gitee上的一百三十多个repo里,基本都是C语言写的;其次,鸿蒙需要兼容Android应用,那就会有一个应用间的交互,可以看到图中class叫AbilityShellProvider,继承Android的四大组件之一ContentProvider,这明显就是一个为了兼容Android而写的兼容层代码,没有任何问题。如果直接发这个图,还开始嘲讽,我觉得没有必要去理会这种人了,没有相关的知识积累就算了,独立思考的能力也没有。
然后是如下的图:


红框圈出来的地方,也出现了Android字样。但是,仔细看这个stack trace,你就会觉得不对。因为Android相关的调用只在中间,下面依然是libcore,而且图中调用链是Android->libcore,为了兼容Android,总要用libcore吧?所以这明显也是兼容层代码。
(libcore部分我的描述不准确,这个部分我也不修改了,我可以正视我的错误。但是“兼容层”的看法依旧不变,等我晚上回去补充完整。谢谢你们让我有动力来继续分析/微笑)
既要兼容Android,又要SDK里完全不出现Android的字样?
然后我大致都看了一下SDK的内容,里面引用了Android相关内容的包叫abilityshell_ide_java.jar,这个包的功能会在编译出来的.hap包中有所体现(以后细说)。
更新:对于引用了Android SDK的问题,我的分析结果和如下的回答基本一致,我就不细写了。我发现我被某些人带跑了,我不是来争论这个问题的。
如何评价华为发布的鸿蒙OS 2.0需要导入安卓部分SDK等功能? - Calvin的回答 - 知乎算了,还是补充一下吧。
编译出来的.hap包中包含一个classes.dex和一个.apk文件,其中最外层的classes.dex不知道为啥不能直接反编译。


不过这个是小问题,说到底.dex文件只是一种应用格式。实际反编译出来的结果中,就是我们在项目中写的代码,而且没有任何Android相关的符号:


而那个.apk文件是一个正常的安卓程序格式,查看反编译后的结果可以知道,这是根据项目代码自动生成的,并且里面其实不含任何逻辑代码。它可以安装,但是因为缺少系统支持依赖所以无法运行:


如上,会自动生成两个类,和项目里的Ability类相对应。项目里的MainAbility对应MainAbilityShellActivity,继承自AbilityShellActivity;项目里的MyApplication对应ShellMyApplication,继承自HarmonyApplication。
AbilityShellActivity和HarmonyApplication来自SDK里的abilityshell_ide_java.jar这个依赖,但是编译出来的整个.hap文件中这些符号都没有另外出现了,所以实际上这个.jar包只在开发时会用到,实际跑起来需要系统的支持。类似的还有叫ace_ide_java.jar,名字里带个ide估计也是这个原因?
然后我们细细研究一下abilityshell_ide_java.jar里的东西:


可以看到,安卓中的四大组件,这里有三个(Activity、ContentProvider和Service,气抖冷,我们BroadcastReceiver什么时候可以站起来!),并且还有一个Application的子类HarmonyApplication。
AbilityShellActivity、AbilityShellProvider、AbilityShellService的实现都很简单,就是有一个叫XXXDelegate(SDK里找不到实现)的成员变量delegate,然后所有的方法都会被委托给这个delegate,代码实现太过规整,我都怀疑是Lombok的@Delegate自动生成的。如下图:


看到这里已经可以说明,鸿蒙不是另一套基于Android的UI库或者直接Android改名,因为没必要实现这么绕。
然后重点是HarmonyApplication这个类,和另一个大佬的分析一样,一眼能看到的就是会有一个IPC相关的动态库加载:


然后其他部分的代码反编译后加起来不到300行,也很简单。总的一句话就是,会创建一个加载鸿蒙Application的<del>进程</del>线程(另外加载多个Ability?),然后这个安卓Application实例会和这个鸿蒙Application实例绑定在了一起(同生共死)。


更新:根据与 @dontpanic 的交流,修改了鸿蒙“进程”相关的描述,鸿蒙程序目前是依赖于安卓进程来触发的。
更新:基本可以确定鸿蒙有自己的图形栈服务,不是用的安卓的SurfaceFlinger,名字叫AGP,SDK包里也有相关的东西,不过这个全称是啥不清楚,A(?) Graphics P(Processor?)?例如在ClickedListener里直接抛出异常,可以通过stack trace发现event最终交由AGPEngineAdapter来进行处理,最后通过native调用dispatch到我们写的事件处理函数;而在delegate里的convertTouchEventThenDispatch方法,将安卓的event转为了鸿蒙的event;delegate里估计还会有对于图像绘制的一些转换:


所以现在可以猜测的是:

  • 目前鸿蒙应用都会有一个安卓的Launcher apk,这个apk用于从系统中启动整个程序;因为它更像一个代理,我们就叫它proxy进程吧;
  • proxy进程会创建、启动运行鸿蒙程序的harmony线程,加载、创建鸿蒙程序的对象,并且proxy进程通过委托delegate将鸿蒙应用整体表现得像是一个Android应用,以便于和原生Android程序进行交互;这就是“兼容层”的意思;
  • 图像绘制、事件处理等最终转交给AGP服务;类似地,其他的安卓的Service Manager估计鸿蒙也有对应的;
  • proxy本身没有其他的逻辑代码,它的作用就是做为鸿蒙和Android之间的桥梁;
  • ipc的动态库的用途还不清楚;
  • 这个实现方式有一些绕,而且很明显是一个过渡方案
以下截图可以佐证,第一张是调试时的UI线程:


然后是鸿蒙应用的加载线程栈:


因为这次开源的东西并不包括手机上的鸿蒙,对于Android SDK的问题,我就分析到这里了,我已经把我想说的说清楚了。
<hr/>如果要黑,不管立场怎样,请有自己的主见,不要为黑而黑。例如我就很欣赏下面的文章,我也学到了很多东西:
dontpanic:我的鸿蒙 2.0 App 到底是什么另外,我也可以提供正确的思路:

  • 我看过了的代码里,基本都是采用Apache License 2.0协议,作为国产之光为什么不像去年的方舟一样采用木兰协议?(这个要加个狗头)
  • 之前说的微内核到底是哪个呢?
  • 开源的东西太乱了,一百多个让人怎么看得完?文档比去年方舟有很大进步。但还是不够详细啊!
  • 越看越像QNX,相对于QNX有什么进步吗?
<hr/>SDK还有一个有趣的地方:


这估计是方舟编译器的支持,@Permanent等注解用于RC标记吗?以及真的有一个用于热更新的ClassLoader!
有空我再写写其它东西,顺便分析鸿蒙中安全相关的内容。
年轻人啊不要熬夜:HarmonyOS 2.0安全框架分析
用Deepseek满血版问问看
回复
使用道具 举报
vipmim | 来自北京
作为参与了HMS Core的开发,AppGallery出海,参与了HarmonyOS开源工作的人,从第一个版本到现在的HMS Core 5.0的正式全球发布,从最初筛选的三千个应用,到现在的7w+个应用,个中苦楚只有经历了的人才会懂。看到越来越多的应用加入到HMS生态,看到越来越多的开发者加入到HMS生态,看到越来越多的消费者购买HMS手机,真的很兴奋。
鸿蒙OS投入了很多的人力和物力,和组织上也反映并解决了很多的问题,但是肯定不是那么的完善,希望大家都能宽容一点,给它时间让他变好。此前,网上很多人一直在抨击鸿蒙是PPT,甚至一些不明真相的同事也在说风凉话,我真的很难受,因为保密协议的原因,不能对内外界的各种声音进行回应。甚至有一些编码能力很强的朋友也在问我,鸿蒙到底是不是PPT?在保密协议截止期前,我只能告诉他,请耐心等待开源。现在大家可以去看看官方文档,也欢迎大家通过官方渠道提出自己的建议和意见。
开发 - HarmonyOS顺便附一张“狗粮图”、溪村音乐会的图以及去年参加HDC大会的图:


自己的狗粮,自己吃。

溪村音乐会

HDC2019

最后附上鸿蒙的开源链接:
OpenHarmony: OpenHarmony是开放原子开源基金会(OpenAtom Foundation)旗下开源项目,定位是一款面向全场景的开源分布式操作系统,第一个版本支持128K-128M设备上运行。
回复
使用道具 举报
shev711 | 未知
从0开始在鸿蒙OS中制作一个APP

他来了他来了,他带着质疑走来了。无论怎么说,鸿蒙OS 2.0的发布对于程序员群体来说也应当是值得记住的时刻。毕竟有可能未来开发程序的时候,产品经理一定会问:兼容鸿蒙OS吗?
目前鸿蒙OS给大多数开发者的印象就是一个PPT系统。今天和同事们聊了聊鸿蒙OS发布,大多数人仍然持质疑的态度,似乎想要认真回答题主的问题,从0开始使用鸿蒙制作一个APP似乎是一个不错的想法。
我希望这个应用开发完成后,我和你都有了自己的答案。
利益相关:一名普通的前端工程师。没有安卓开发经验,开发过程中智障行为请谅解。
零、现阶段遇到的BUG汇总

我会将开发过程中遇到的bug汇总到这里,希望能帮到Harmony框架的开发人员

  • IDE -- Project列表文件无法选中:可以选中文件夹,通过键盘操作移动到文件打开,但是有时候鼠标点击无法选中文件。比较频繁
  • IDE -- 初次运行IDE没有提示安装模拟器。
  • 在Chrome浏览器环境下,DevEco调转到网页无法停留在授权页面,导致无法触发登录回调(可能也是首次登录才会这样)。
  • 模拟器中存在focus是  input type是checkbox时样式会丢失(有可能模拟器中focus会清空样式)
  • 模拟器下,input组件type为time或者date时,呼出键盘为数字键盘
  • input组件,有value属性时,输入文字后调用onchange事件会导致组件崩溃
一、环境搭建

华为为HarmonyOS设计了专门的开发IDE:DevEco Studio,目前只支持Windows10,目前而言对于常年使用MacOS的前端不太友好,不过这不是问题,bootcamp启动(mac的双系统)!


DevEco Studio,目前只支持Windows10

HUAWEI DevEco Studio(以下简称DevEco Studio)是面向华为终端全场景多设备的一站式集成开发环境(IDE),为开发者提供工程模板创建、开发、编译、调试、发布等E2E的HarmonyOS应用开发服务。
根据华为的描述,这个IDE支持多语言的开发,构建,发布并支持多模拟器。同时需要注册华为开发者账号。


macOS即将上线,期待

IDE压缩包616M


DevEco支持多种语言,使用JS开发的话需要安装Nodejs。看起来HarmonyOS是支持使用HTML+CSS+JS方式开发WEB应用的。同时我们注意到DevEco支持的标签语言是HML,应该是华为对其进行了一些定制化的设置。


安装没有什么太多的配置,下载好软件后只要电脑可以联网,DevEco会下载相关依赖。(比如Java以及相关的工具链,看起来环境变量也自动配置了,很适合我。(可以好评)
安装完成后就会进入到软件主界面了,到目前为止还没有遇到坑。


二、开发一个小的Demo

我们回归到题主的问题,这个系统的前景怎么样。这个问题说实话现在回答为时尚早,毕竟一个系统有没有前途,很多时候不是这个系统决定的。
但是有一点可以肯定,一个好的系统,其生态圈是相对容易建立的。简单来说,如果我这种没有接触过HarmonyOS的人也能快速开发一个App,那他至少已经在答题卡上涂过答案了。
让我们先写一个各大前端框架介绍特性时最常用的例子:TODO List
2.1 创建 App

点击Create HarmonyOS Project:目前看来HarmonyOS支持TV,Wearable,Lite Wearable三种设备,有点少,考虑到Huawei是中国公司,应该不存在翻译问题,所以可以说目前来看HarmonyOS不支持PC与Mobile产品。


我们选择一个空的JS模板。(注意使用JS模板你需要安装Nodejs,如果是初学者的话很简单的,在官网下载以后就下一步下一步下一步。。。然后欢迎你成为前端工程师  


起一个喜欢的名字

到目前为止还比较顺畅,初学者也可以开启一个应用。
2.2 启动应用



这里注意到新建项目后 IDE开始使用gradle下载相关的以来。其他的回答已经有人确认这次HarmonyOS不是安卓套壳了,所以我就重复证明了,开始写代码。
JS UI
看了下官方示例,使用JAVA UI采用XML编写页面。作为前端切图仔,怎么可能用那么后端的方法呢,看了看文档,华为提供了另外一种编写方式:JS UI。
根据华为的描述,JS UI是采用类HTML与CSS来进行页面开发。同时他也支持了JS FA的开发模式,可以将JS与JAVA混合开发。(我是不知道混合开发有什么用,或许是后端程序员的坚持吧。狗头)
初次运行需要安装模拟器,按照DevEco的文档说明安装模拟器是有提醒的,但是实际测试我这里没有提示。程序还没有跑起来,我就发现三个bug:后续我会把使用过程中的bug放到开头,希望能帮到华为的同行们。

  • IDE初次运行没有弹出安装模拟器的提示,会影响使用者体验
  • refresh模拟器列表反复要求登录华为开发者账号,但是我已经登录了。登录没有触发IDE内部的登录成功回调(使用chrome会出现这个问题)
  • Project列表文件无法选中:可以选中文件夹,通过键盘操作移动到文件打开,但是有时候鼠标点击无法选中文件。频率比较频繁
开启模拟器后,将代码稍微做一下改动:


类似于vue的模板语法

从UI框架来看 HarmoneyOS应用与传统应用开发差异不大,数据双向绑定的语法来看有些类似Vue。


2.3 新建一个有状态的List

今天看了许多评论,大家的发言都很有道理。
我们先来明确一下这个小demo的需求:

  • 一个有状态的List,能够勾选与取消想要完成的任务
  • 能够新增新的任务
我们先来测试一下HarmonyOS自带组件。List,华为在文档里提供了各组件的api,地址如下:
HarmonyOS 文档中心按照文档的例子,我们将src → js → index中的页面代码简单修改一下
//index.hml
<div class="container">
    <text class="title">
         {{title}}
    </text>
    <list class="todo-wraper">
        <list-item for="{{todolist}}" class="todo-item">
            <text class="todo-title">{{$item.title}}</text>
            <text class="todo-title">{{$item.date}}</text>
        </list-item>
    </list>
</div>
//index.js
export default {
    data: {
        title: "今日事,今日毕",
        todolist: [
            {title: '吃饭',date: '10:00:00',},
            {title: '睡觉',date: '12:00:00',},
            {title: '打豆豆',date: '20:00:00',}
        ],
    },
    onInit() {
    }
}
/* index.css */
.container {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction:column;
    left: 0px;
    top: 0px;
    width: 80%;
    height: 100%;
}

.title {
    font-size: 40px;
}

.todo-wraper{
     padding:20px;
}

.todo-item{
    line-hight:100px;
    flex:1;
}

.todo-title{
    font-wight:bold;
    margin-right:20px;
}
整个JS UI构建页面的方式与小程序是基本相同的,基本上是模板指令的一套。


谢谢@nobody 的评论
这个是快应用,类似微信小程序一样的东西,这个框架是由小米、中兴、华为、金立、联想、魅族、努比亚、OPPO、VIVO等九家联合制定标准的。
看起来HarmonyOS内核上原生程序UI构建应该都会是这种模式。但我认为HarmonyOS与快应用有本质的区别,HarmonyOS并不只是提供了UI层MVVM的框架。
Ability是应用所具备的能力的抽象,一个应用可以包含一个或多个Ability。Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。
我们现在编写的程序UI是就是一个FA,而PA包括Service与Model,分别做数据处理和逻辑处理的工作。(这不就是全栈吗 (#`O′))
2.3 测试数据绑定与MVVM特性

废话不多说,我们继续为应用增加一些交互能力。
反馈一个bug:模拟器中存在focus是  input type是checkbox时样式会丢失(有可能模拟器中focus会清空样式)
吐槽一下:没有热加载和ui调试工具,开发效率太低了。。
接下来我们为列表加入checkbox组件,添加全选和新增按钮,增加一个新增任务的Dialog。
这几个交互实现的逻辑与小程序是非常类似的,但是数据赋值不需要 setData方法,直接赋值即可
this.XXX = 'XXX';        


发现一个有意思的地方,模拟器默认输入法是  百度  


HarmonyOS的组件并没有像Vue一样有 v-model的概念,修改input需要编写onchange事件。
简单修改一下,一个简单的TodoList功能就完成了


提一个bug:
模拟器下,input组件type为time或者date时,呼出键盘为数字键盘
input组件,有value属性时,输入文字后调用onchange事件会导致组件崩溃
2.4 简单Demo的使用体验总结:

实际体验下来,对于前端JS UI来讲开发体验可以说是很差,

  • 没有热加载与页面调试工具,每次修改需要重新编译,大约10s
  • remote模拟器流畅度太差,使用体验介于不可用和用的想哭之间
  • 代码编写阶段没有明显的报错提示,很多时候打错一个字都要找很久
  • 代码的自动补全还不完善
  • 前端组件部分官网缺乏例子,很多API使用的细节还需要不断测试
  • 有些官方的例子也没有正常运行。(譬如这个例子)
虽然说这个开发体验让我有点崩溃,但是最近看文档逐渐发现HarmonyOS的内容其实很多,JSUI只是HarmonyOS架构最表层的东西。如果管中窥豹的讲,抛开华为当下的政治处境不说,我想就以目前HarmonyOS的成熟程度还远远没有达到商用的水平,现在这套开发体系和体验还不足以支撑起庞大的应用生态。
就目前而言,题主的问题我仍然没有得出一个答案。
但是HarmonyOS是一个开始,不可否认当前国家形式将它打造成了一面旗帜,我希望这面旗帜不会倒下,我也希望这样的旗帜越来越多。为了深入尝试HarmonyOS的能力,我会不定期进行后续测试。如果你有什么想要了解的请在评论区提出。

后续测试计划:


  • 尽量多的调用系统API能力,可能调用 HarmonyOS 硬件的时间,声音,视频,网络。。
  • 测试css性能,能否支持一些CSS3的动画特性
  • 调用一些HarmonyOS的分布式任务能力
附:当前的代码
<! -- index.hml  -->
<div class="container">
    <text class="title">
         {{title}}
    </text>
    <list class="todo-wraper" focusable="false">
        <list-item for="{{todoList}}" class="todo-item">
            <div>
                <input type="checkbox" checked="{{$item.checked}}"></input>
                <text class="todo-title">{{$item.title}}</text>
                <text class="todo-title">{{$item.date}}</text>
            </div>

        </list-item>
    </list>
    <div class="todo-operation" focusable="false">
        <button type="capsule" onclick="onSelectAll">全选</button>
        <button type="capsule" onclick="onAddTask">新增</button>
    </div>
    <dialog id="addDialog">
        <div class="container addDialog">
            <div class="add-title">
                <label>新增任务</label>
            </div>
            <div>
                <text class="add-label">名称:</text>
                <input type="text" onchange="onTextInput()"></input>
            </div>
            <div>
                <text class="add-label">时间:</text>
                <input type="text" onchange="onTimeInput()"></input>
            </div>
            <div class="todo-operation" focusable="false">
                <button type="capsule" onclick="onSubmit">确定</button>
            </div>
        </div>
    </dialog>
</div>
// index.js
export default {
    data: {
        title: "今日事,今日毕",
        subTitle:'今日事,今日毕',
        todoList: [
            {title: '吃饭',date: '10:00:00',checked:false},
            {title: '睡觉',date: '12:00:00',checked:true},
            {title: '打豆豆',date: '20:00:00',checked:false}
        ],
        addText:'shuijiao',
        addTime:''
    },
    onInit() {
    },
    onSelectAll(){
        //如果存在checked为false,则全选表示均为true,如果已经全选,则为反选
      if(this.todoList.filter(x=> {return x.checked == false}).length>0){
          this.todoList.forEach(x => {
              x.checked = true
          });
      }else{
          this.todoList.forEach(x => {
              x.checked = !x.checked
          });
      }
    },
    onAddTask(){
        this.$element('addDialog').show();
    },
    onSubmit(){
        this.todoList.push({
            title: this.addText,date: this.addTime,checked:false
        })
        this.addText = '';
        this.addTime = '';
        this.$element('addDialog').close();
    },
    onTextInput(e) {
        this.addText = e.text;
    },
    onTimeInput(e){
        this.addTime = e.text;
    }
}

/* index.css */
.container {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction:column;
    left: 0px;
    top: 0px;
    width: 80%;
    height: 100%;
}

.title {
    font-size: 40px;
}

.todo-wraper{
     padding:20px;
}

.todo-item{
    line-hight:100px;
}

.todo-title{
    font-wight:bold;
    margin-right:20px;
    margin-left:20px;
}

.todo-check{
    margin-right:20px;
}

.todo-operation{
    flex:2;
    width:100%;
    height:100px;
    display:flex;
    flex-direction:row;
    align-items: center;
}

.addDialog{
    width: 90%;
    width:500px;
}

.add-title{
    padding:10px;
}

.add-label{
    font-size:16px;
    width:30%;
}
回复
使用道具 举报
lazyknight | 来自上海
发布会没看,晚上八点多看到消息,在gitee上看了下项目文档:


快速入门里面支持的全部都是Hi35xx系列的芯片,这个系列芯片是属于小海思的产品,常用于视频监控领域,也就是常说的摄像头,性能无法与手机相提并论。

正巧,我手里有一块Hi3518EV300的开发板,跑下试试鸿蒙OS 2.0。


过程很简单,参考下官网的文档:

quick-start/搭建环境-2.md · OpenHarmony/docs - 码云 Gitee.com装一堆的依赖,包括Python3.8 和 llvm 这两个重头戏。构建系统和 Chromium 一样,都是ninja 和 GN。整个安装过程还算比较顺利,当然前提是你使用的是国内的PIP源和镜像站。
下一步就是编译代码了,整个代码包下载(226MB)


解压后如下:
vroot@deskmount:~/packages/code$ tree -L 2
.
├── applications
│   └── sample
├── base
│   ├── global
│   ├── hiviewdfx
│   ├── iot_hardware
│   ├── security
│   └── startup
├── build
│   └── lite
├── build.py -> build/lite/build.py
├── docs
│   ├── api
│   ├── bundles
│   ├── contribute
│   ├── docs-en
│   ├── driver
│   ├── get-code
│   ├── guide
│   ├── kernel
│   ├── quick-start
│   ├── readme
│   ├── Readme-CN.md
│   ├── RELEASE-NOTES.txt
│   ├── security
│   ├── subsystems
│   └── term
├── domains
│   └── iot
├── drivers
│   ├── hdf
│   └── liteos
├── foundation
│   ├── aafwk
│   ├── ace
│   ├── appexecfwk
│   ├── communication
│   ├── distributedschedule
│   ├── graphic
│   └── multimedia
├── kernel
│   ├── liteos_a
│   └── liteos_m
├── prebuilts
│   └── lite
├── test
│   ├── developertest
│   ├── xdevice
│   └── xts
├── third_party
│   ├── bounds_checking_function
│   ├── cJSON
│   ├── cmsis
│   ├── curl
│   ├── FatFs
│   ├── FreeBSD
│   ├── freetype
│   ├── googletest
│   ├── harfbuzz
│   ├── iniparser
│   ├── jerryscript
│   ├── libjpeg
│   ├── libpng
│   ├── Linux_Kernel
│   ├── ltp
│   ├── lwip
│   ├── mbedtls
│   ├── mtd-utils
│   ├── musl
│   ├── NuttX
│   ├── openssl
│   ├── rt_thread
│   ├── unity
│   ├── wpa_supplicant
│   └── zlib
├── utils
│   └── native
└── vendor
    ├── hisi
    └── huawei

77 directories, 3 files里面kernel文件夹里有liteos_a 和 liteos_m这两个文件夹,猜测分别对应ARM的Cotex-A和 Cortex-M 架构???其他还没有来的及看,后面再分析。

helloworld.c 程序在applications/sample/camera/app/src目录,内容也比较简洁,和Linux 的helloworld 基本一致,除了引入los_sample.h和  LOS_Sample(g_num);。


在根目录下,使用python build.py ipcamera_hi3518ev300 -b debug 直接编译,过程很流畅,也没出什么幺蛾子。编译的时候没有看到之前要安装的交叉编译工具链arm-himix100-linux-gcc,用的是clang这套东西。整个编译过程速度还是比较快的,几分钟解决战斗。


下一步就是烧写。

烧写使用的还是海思之前提供的工具,编译好的文件分为OHOS_Image.bin应该是内核文件,
rootfs.img 应该是根文件系统,userfs.img应该是用户文件系统。


内核编译完成只有3.9MB


因为是串口烧录的,整个过程花费了28分钟。。。
继续设置下uboot的参数,对你没看错,用的还是Uboot。
启动后,运行下程序,正确打印!


Hello OHOS!

后记


  • 整个编译过程还是十分顺利;
  • 系统目前只能在嵌入式设备(低端)上运行;
  • 其他功能还需要探索,比如软总线???
  • 看起来支持的设备还比较少,怎么样移植到其他设备上??
  • 去除意识形态后和linux相比又有什么优势?
  • 这个能用来做产品吗?有什么风险和收益?
  • 目前这个版本和TencentOS-tiny比又如何??
  • 鸿蒙OS开源社区能否长久的聚集人气, 吸引开发者???
  • 恭喜鸿蒙OS迈出开源的第一步~
PS : 求教怎么样支持USB网卡,有驱动吗???
回复
使用道具 举报
duskshine | 来自湖北
证明一下在现场


作为比较早期跟鸿蒙团队有接触的开发者。
(此段避免误解,有修改)18年那会是真的一行代码也不给看的,能给看的只有负责人手里的20页ppt,讲鸿蒙概念,都非常宽泛。负责人也很虚心的听了我们开发者的一些想法和诉求。
19年再交流就好了不少,看的出来有成型的思路了。当时讲的一些开发理念,在今天的大会上又再次确认。
到了今年前段时间,突然有了60多Mb的鸿蒙文档,事无巨细的讲每个鸿蒙概念,每个API出入参,用法,只能感慨这个团队是真的能做事的。
今天开源的应该是面向iot那部分,真正给手机用的部分要明年,所以我们跟鸿蒙合作的部分,还是不知道能不能细讲。
只能说手机鸿蒙已经有了,在存量设备上就能跑。但api还不完善,很多android有的特性,鸿蒙还没有,所以应用迁移起来还有点阻碍。到明年应该就还好了。
另外鸿蒙团队也很清楚存量app迁移的问题,跑android虚拟机的方案是不存在的。但他们有一个更折衷的方案去绕。暂不细讲。
最后,来东莞的路上遇到了暴雨,但从会场出来,看到了很漂亮的彩虹。祝福鸿蒙系统,祝福鸿蒙团队。
回复
使用道具 举报

相关问题更多>

快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影