重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
之前测试过使用华为DevEco开发智能电视应用。前几天华为发布了手机的测试版,不能免俗,抓紧尝试一下。
10年积累的网站建设、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有苏尼特右免费网站建设让你可以放心的选择与我们合作。
手头没有华为手机测试系统,现在试一下开发环境跑模拟器感受一下。
以前DevEco里是没有手机选项的,现在该选项可以看到了:
这里测试一下Business Card Ability(Java)开发。
DevEco和Android Studio一样基于开源的Idea版本开发的,其结构与安卓开发环境非常像,熟悉安卓的小伙伴应该能很快上手。
入口程序是一个MyApplication,从AbilityPackage继承。
它首先找到了连接的荣耀手机,但这个手机不是鸿蒙系统。
编译是成功了,但提示设备无法使用:
点击Tools - HVD Manager
首先提示登陆华为账号,登陆后,选择一个模拟器运行:
启动以后长这个样:
点击设置,先看看关于:
上面显示大大的HarmonyOS。但感觉画面很模糊,不知道模拟器到底是运行在本地的,还是云端的。但DevEco上显示是Remote Device字样。
鸿蒙OS版本号 2.0.0 Developer Beta1。
再点运行,在指定的模拟器上运行程序。
不过仍然运行失败:
鸿蒙OS版本与平板是一致的,
程序终于跑起来了:
看起来安卓程序好像真能在鸿蒙直接运行,安装一个快手试试:
还真能看:
我真分不清这是安卓还是鸿蒙了 。
鸿蒙操作系统是华为公司研发的。
华为鸿蒙系统(HUAWEI HarmonyOS),是华为在2019年8月9日于东莞举行华为开发者大会,正式发布的操作系统鸿蒙OS。HarmonyOS 是华为基于开源项目OpenHarmony 开发的面向多种全场景智能设备的商用版本。
华为鸿蒙系统是一款全新的面向全场景的分布式操作系统,创造一个超级虚拟终端互联的世界,将人、设备、场景有机地联系在一起,将消费者在全场景生活中接触的多种智能终端实现极速发现、极速连接、硬件互助、资源共享,用合适的设备提供场景体验。
系统简介
鸿蒙OS是华为公司开发的一款基于微内核、耗时10年、4000多名研发人员投入开发、面向5G物联网、面向全场景的分布式操作系统。鸿蒙的英文名是HarmonyOS,意为和谐。不是安卓系统的分支或修改而来的。与安卓、iOS是不一样的操作系统。
性能上不弱于安卓系统,而且华为还为基于安卓生态开发的应用能够平稳迁移到鸿蒙OS上做好衔接——将相关系统及应用迁移到鸿蒙OS上,差不多两天就可以完成迁移及部署。
以上内容参考 百度百科-华为鸿蒙系统
7月8日,鸿蒙系统升级量就已达3000万部手机,这是一个很理想的速度。加上升级用户普遍反映体验非常好,这让大家普遍认为鸿蒙大有希望,成功在即。
的确,初出茅庐的鸿蒙,这样的成绩很优秀,但这个时候要注意千万不可以盲目乐观。我们必须清醒地意识到,鸿蒙的成功之路,这才是小试牛刀、刚刚开始,更艰难的工作,还在后头。
一、鸿蒙系统的体验,还基本上没有发挥出其比安卓、iOS领先一代的优势。鸿蒙还需要尽快地把其优势性能体现出来,以持续增加对广大用户的吸引力。
目前升级用户最普遍的反馈,主要集中在日常操作的流畅性、升级的平滑、便利以及对安卓应用的兼容性等方面。
但要知道鸿蒙系统是面向万物互联时代的统一的物联网操作系统,并不只是安卓系统的一个平行替代品。真正体现出鸿蒙作为 领先安卓一代 的优势,才是鸿蒙系统获得稳定市场地位的法宝,不可以疏忽。
比安卓系统强,甚至在很多方面也要比iOS强,这才是鸿蒙成功、成熟的一个标志。 强大的多设备协同、超低时延、更高的存储及文件管理性能、更强大的安全性 等充分发挥,才是战胜安卓系统的真正利器。
这些领先优势的闪亮展现,才会 吸引更多用户,才会督促其它手机厂家也参与到鸿蒙大家庭中来 ,这很重要。
二、适配、升级的节奏要快,要更快。
现在的升级速度当然已经很快了,华为工程师们肯定也是在提速、再提速。工程师们辛苦了,但适配、升级速度对鸿蒙之成功确实很关键,还是要加把劲、再加把劲。
华为手机的增量恢复常态,恢复到每年2-3亿部新机出货,短期内解决的困难很大。这个时候存量手机就是适配、升级的主要载体。但是要知道毕竟 手机的寿命是有限的 。再好用、再可靠的手机,使用寿命也不过三、五年。
此前适配、升级的主要是新机型,往后才逐步拓展到更早的机型。目前的适配、升级已经开始拓展到二、三年前的一些机型,无论如何,这些手机使用寿命已经进入后期。 晚一点儿适配,能升级的存量手机就会少一些 。
三、鸿蒙原生应用开发及生态建设。
这同样是保持对用户吸引力的一个关键因素。用户用的,就是手机上的一个个app,没有足够的app,就谈不上操作系统的成功。目前鸿蒙应用还主要以兼容的安卓应用为主,需要尽早推动更多原生app的开发上线。
真正的原生app,也才能最大程度展现鸿蒙系统的技术优势 。绝大多数主流移动应用都推出原生的鸿蒙app,且功能不弱于相应的安卓应用,鸿蒙才具备了独立发展、繁荣生态的根基。
四、越早升级的用户,要么是铁铁的花粉,要么是对新事物、新技术感兴趣的人。
他们对鸿蒙系统的热情度很高,升级要求也很迫切。但是随着这些用户逐步完成升级,其它用户对于升级鸿蒙系统的热情可能就会弱了。加上更多人其实很难对操作系统有准确、深入的认识,他们其实并不关心系统升级,或是根本就不懂系统升级这个事。
很多手机用户其实从来就不关心系统的升级,或者是清理、重置系统等。要想说服他们升级鸿蒙系统,可就没那么容易了。如果华为新手机还能如2020年之前那样,每年2亿部以上的新机出货量,通过预装鸿蒙就可以达到普及的目的。
但 现在主要靠的是从旧的安卓系统升级而来,这就要求用户要有主动升级的意识,难度要大很多 。越往后,铁粉和有主动意识升级鸿蒙者,就会越少,这个趋势要值得关注。
五、鸿蒙系统成功的根本,还在于华为手机必须恢复到以正常的节奏推出新机,至少也要达到2019年那时的出货量。
每年保持2亿部以上的新机出货,并且直接搭载鸿蒙系统,这才是鸿蒙系统的彻底成功和成熟标志。毕竟存量手机要逐步退出使用的,2021年年底能完成升级的一些早期机型,可能已经使用了3-4年,这些手机大概率在1-2年内就要换新了。
尽管目前 很多铁杆花粉纷纷推迟了换机计划,期待升级、体验鸿蒙系统,并热切期待着华为能彻底解决缺芯困难,华为手机能王者归来 。 但这个过程,显然未必是那么顺利,这个时刻的到来,可能不会那么快。
市场上的存量华为手机也就那么几亿部,而且从明年起每年不得不淘汰的老手机,一年下来也得上千万部。如果短期内不能恢复新手机的正常出货,2年以后的华为存量手机不可避免地开始快速减少,一年换新量就可能达到大几千万部以上。
而今年华为新手机出货能达到1亿部已经很难了,这还基本上是靠存量芯片支撑。明年存量麒麟芯片肯定也剩不下多少了,用高通等芯片也不是办法,毕竟明年了再推4G手机,市场接受度也更低。
但彻底解决缺芯问题,华为手机王者归来,确实是一个大工程,而且还 不能只靠华为自己 。鸿蒙系统的成功,与华为手机的制造、出货恢复正常紧密相关,这其实就是与芯片(半导体)产业的国产化进程密切相关。这需要全国协同,团结一致,共同解决我国半导体产业的太多短板。
期待芯片这座大山尽早彻底攻克,期待华为手机王者归来,期待鸿蒙系统一统天下。
开发前可以了解下鸿蒙: [鸿蒙开发 序]华为鸿蒙操作系统(HarmonyOS)简介及开发环境搭建
开发前的准备:「鸿蒙开发 1」华为鸿蒙应用集成开发环境DevEco Studio安装和设置
了解鸿蒙应用开发的基本开发流程:「鸿蒙开发 2」第一个华为鸿蒙(HarmonyOS)应用程序(App)
本章目标:
1 了解华为鸿蒙应用开发的可视化(低代码)方式
2 通过构建一个简单的具有页面跳转功能的应用
低代码开发方式,即通过可视化界面开发方式快速构建布局、编辑UI界面,可有效降低用户的上手成本并提升用户构建UI界面的效率。
1 打开DevEco Studio,创建一个新工程,选择支持Phone / Tablet / Wearable(手机 / 平板 / s可穿戴)的模板,我们在此直接选择Empty Ability
Project name工程名称填SuperVisual
Development mode开发方式选择Super Visual
其它的可以使用默认设置,点击完成,进入编辑界面
1 在Project(项目)窗口,删除工程运行默认的入口文件夹:“entry src main js default pages index”文件夹
2 在Project窗口,选择工程中的“entry src main js default pages”,单击鼠标右键,选择“New JS Visual”
JS visual name填first,点击完成,进入编辑界面
创建完成后,可以看到“entry src main supervisual default pages page page.visual”的文件目录结构
3 第一个页面内有一个容器、文本和一个按钮,通过Div、Text和Button组件来实现
(1)分别选中first.visual画面中的Text、Div组件,单击鼠标右键,选择Delete删除
(2)选中UI Control中的Div组件,将其拖至画布
点击右侧属性样式栏中的通用样式图标(General),设置Div组件的高度Height为100%,使其占满屏幕
点击右侧属性样式栏中的样式图标(Flex),设置Div组件的FlexDirection样式为column,使Div的主轴垂直;设置Div组件的JustifyContent样式为center,使得其子组件在主轴上居中显示;设置Div组件的AlignItems样式为center,使得其子组件在交叉轴上居中显示
(3)选中UI Control中的Text组件,将其拖至Div组件的中央区域
点击右侧属性样式栏中的属性图标(Properties),设置Text组件的Content属性为 “ Hello World ”
点击右侧属性样式栏中的通用样式图标(General),设置Text组件的宽(width)为100%,高(height)为100px
点击右侧属性样式栏中的样式图标(Feature),设置组件的FontSize样式为60px,使得其文字放大;设置组件的TextAlign样式为center,使得组件文字居中显示
(4)选中UI Control中的Button组件,将其拖至Text组件下面
点击右侧属性样式栏中的属性图标(Properties),设置Button组件的Value属性为 “ Next ”,
点击右侧属性样式栏中的通用样式图标(General),设置按的宽(width)为40%,高(height)为60px
点击右侧属性样式栏中的样式图标(Feature),设置组件的FontSize样式为40px
至此,第一个页面创建完成
我们可以在预览窗口中看效果,点击右侧边栏的Preview打开预览窗口
1 在Project窗口,选择工程中的“entry src main js default pages”,单击鼠标右键,选择“New JS Visual”
Visual配置界面,JS visual name填second,回车(Enter键)或者点击完成,进入编辑界面
2 第二个页面中有一个容器和文本,通过Div、Text组件实现,现在编辑器已经为我们创建好了,我们就来修改下它们的属性(你也可以删除原有的自己创建,具体步骤参考本章第二节“二 创建第一个页面”)。
选中Text组件,点击右侧属性样式栏中的属性图标(Properties),设置Text组件的Content属性为 “ Hi,I'm always here. ”
点击右侧属性样式栏中的通用图标(General),设置组件的宽(width)为100%,高为60px
点击右侧属性样式栏中的样式图标(Feature),设置组件的FontSize样式为36px,TextAlign样式为center
这样我们的第二个页面创建成功了
1 在Project窗口,打开工程中的“entry src main js default pages first first.js”, 导入router模块,页面路由router根据页面的uri来找到目标页面,从而实现跳转。示例代码如下:
2 打开或者切换到first.visual页面,选中画布上的Button组件,点击右侧属性样式栏中的事件图标(Events),鼠标点击Click事件的输入框,选择launch事件
3 在预览窗口中查看项目效果,点击Next按钮后发现我们的页面成功跳转了。
到此,本章的目标就完成了。
Intent
Intent是对象之间传递信息的载体。当一个Ability需要启动另一个Ability时,或者一个AbilitySlice需要导航到另一个AbilitySlice时,可以通过Intent指定启动的目标同时携带相关数据。Intent的构成元素包括Operation与Parameters。
Intent的构成元素
Operation
Action: 表示动作,通常使用系统预置Action,应用也可以自定义Action。例如IntentConstants.ACTION_HOME表示返回桌面动作。
Entity:表示类别,通常使用系统预置Entity,应用也可以自定义Entity。例如Intent.ENTITY_HOME表示在桌面显示图标。
Uri:表示Uri描述。如果在Intent中指定了Uri,则Intent将匹配指定的Uri信息,包括scheme, schemeSpecificPart, authority和path信息。
Flags:表示处理Intent的方式。例如Intent.FLAG_ABILITY_CONTINUATION标记在本地的一个Ability是否可以迁移到远端设备继续运行。
BundleName:表示包描述。如果在Intent中同时指定了BundleName和AbilityName,则Intent可以直接匹配到指定的Ability。
AbilityName: 表示待启动的Ability名称。如果在Intent中同时指定了BundleName和AbilityName,则Intent可以直接匹配到指定的Ability。
DeviceId: 表示运行指定Ability的设备ID。
当Intent用于发起请求时,根据指定元素的不同,分为两种类型:
如果同时指定了BundleName与AbilityName,则根据Ability的全称(例如,“com.demoapp.FooAbility”)来直接启动应用。
如果未同时指定BundleName和AbilityName,则根据Operation中的其他属性来启动应用。