鸿蒙系统调研适配

news/2024/7/21 9:53:09 标签: harmonyos, 华为

写在前面:

以下内容基于我个人翻阅的官方资料以及自己的理解写的,可能存在认知和理解上的偏差,有些地方并不一定是对的,请谨慎对待,注意甄别!

一、鸿蒙OS是什么?

  1. 华为推出的多端统一平台,可以运行在手机、平板、PC、电视(智慧屏)、音响、甚至是热水壶、洗衣机等设备上,通过鸿蒙系统,可以实现设备间的通信协同能力

  2. 通过华为提供的studio,在创建应用时,指定应用的运行平台,studio会自动帮你集成此平台上所能调用的API等资源

以上所有的统称,叫做鸿蒙OS,针对我们而言,需要关注的是鸿蒙应用的手机(平板)端的适配,以下内容均为手机、平板端的适配方案,不包含PC或者智能硬件上的方案

二、鸿蒙OS包括哪些组件:

  1. HarmonyOS 3.1 :系统版本,比如同样为3.0系统版本的电视和手机,兼容性是最好的,但是3.0版本的电视和4.0版本的手机,中间的某些协同能力可能就无法支持了

  2. DevEco Studio :等价与Android Studio 、XCode,是华为提供给开发者使用的开发工具,用来开发鸿蒙应用,调试等,也是我们开发者接触最多的工具

  3. ArkTS :鸿蒙生态的应用开发语言,等价于Android开发中的Java语言,或者kotlin语言

  4. ArkUI : UI开发框架,实现UI绘制显示的东西,类似于Android中的XML布局文件

  5. ArkCompiler :类似于JDK,负责把代码转译为方舟字节码,开发上层应用时无需关心

  6. DevEco Testing : 提供远程真机,性能测试,漏洞检测等

  7. AppGallery Connect :提供应用分发能力,应用列表,链路追踪等

三、鸿蒙应用支持的开发语言: 

ArkTS语言:

指的是 ArkTS以及JavaScript,是鸿蒙首推的开发语言

Java语言:

华为的官方文档上来看,3.0版本的开发文档支持ArkTS和Java两种编程语言,但是华为官方3.1和4.0版本的文档中,已经没有Java语言的开发说明了,虽然官方没有明确声明不再支持Java,但是从现象上来看,的确是在逐步放弃Java的支持

四、鸿蒙应用开发:

1.UI开发:方舟开发框架(ArkUI框架):

开发范式名称

语言生态

UI更新方式

适用场景

适用人群

声明式开发范式

ArkTS语言

数据驱动更新

复杂度较大、团队合作度较高的程序

移动系统应用开发人员、系统应用开发人员

类Web开发范式

JS语言

数据驱动更新

界面较为简单的程序应用和卡片

Web前端开发人员

我们的应用归属于复杂度较大的应用程序,因此采用ArkTS语言进行开发

ArkTS开发框架基于TS语言进行扩展,因此需要开发者具备TS语言开发能力

使用ArkTS开发UI的形式,类似于Android中使用Compose开发UI组件的形式

更多关于ArkTS的相关设计,见这里

2. 应用模型框架:

1) FA模型,鸿蒙已经逐渐废弃,不再调研

2) Stage模型:

描述了应用的开发框架,主要由一下5部分组成:

  1. UIAbility:类似于Android中的Activity

  2. Context:类似于Android中的Context

  3. WindowStage:类似于Android中的window

  4. AbilityStage:类似于Android中的Application

  5. ExtensionAbility:类似于Android中的系统Service,调用这个服务可以拿到一些系统API使用,详情见这里

3. 应用组件开发:

  1. 应用配置:

版本号,启动图标,字符索引等,与Android基本一致,区别在于,从XML配置改为了使用json配置,参考这里

  1. 新增卡片服务:

除了上述 4.2.2中列举的Stage模型,鸿蒙新增了服务卡片,服务卡片与Android的桌面部件不是一回事儿,详情见这里

  1. 跨页面通信:

      Android中使用的是Intent,鸿蒙中使用的是Want,详情见这里

  2. 广播Broadcast:

      广播作为Android中跨进程(页面)通信的工具,在鸿蒙中并不支持

      鸿蒙提供CommonEvent来发布公共事件用以实现跨进程通信的能力,应用可以监听系统的CommonEvent,也可以发送自己的CommonEvent

  3. 服务Service:

      鸿蒙中的FA模型支持Service,但是在Stage模型中并不支持,转而使用以下方式实现:

短时任务:应用在前台或者退到后台的5秒内申请短时任务,同一时机最多申请三个短时任务,每24小时内最多为每个应用执行10分钟短时任务,每个短时任务最多执行3分钟,低电量下最多执行1分钟,运行时间即将超时时,系统会有回调,如果在超时时应用不主动取消任务,则系统会直接关闭应用进程

长时任务:适用于音乐播放、导航等场景,一个UIability最多申请一个长时任务,长时任务运行时会在通知栏有显著提示;同时系统也会对长时任务进行校验(比如开启了音乐播放服务,但是并没有播放音乐,系统会直接关闭应用进程)

延时任务:类似与Android上面的WorkManager,实行分级管控,与用户使用的应用频率有关系,频率越高,延时任务的等级越高,任务越快被执行,默认执行时长2分钟,申请豁免权后,充电下最长20分钟,非充电下最长10分钟

代理提醒:(典型使用场景秒杀活动),由应用注册到系统中,系统在准点时间会通知到用户,用户点击通知后可打开应用(A应用注册的代理,那么只能打开A应用)

4. 进程模型概念:

同一个应用的所有的UIAbility运行在同一个进程中

WebView组件运行在单独的进程中

跨进程通信需要用到CommonEvent来实现

5. 线程模型概念:

与Android一样,鸿蒙中的UI绘制归属于主线程来实现,子线程不能进行UI绘制

鸿蒙中的子线程叫做Worker线程,最多只能创建8个Worker线程,Worker线程不能刷新UI,更多关于Worker见这里

线程间通信:使用Emitter实现,类似于Handler,用于传递事件到队列中,详情见这里

注意点:Worker线程不会自动销毁,当运行完毕后,需要手动销毁

五、应用发布:

1.应用构建:

鸿蒙应用中,API 1~7使用Gradle语言进行构建,在API 8、9中使用Hvigor语言进行构建

2.应用签名:

类似于Android应用签名,详情见这里

3. 鸿蒙发布:

跟Android应用的分发一样,区别在于上传应用时选择鸿蒙应用即可,后缀为 .app

六、一些问题:

1.华为是否准备放弃Android应用的支持?

先说结论:

到目前为止,华为并没有公开声明放弃Android应用的支持;如果宣布放弃的话,也会给广大的开发者一定的时间去做迁移适配工作

下面是支撑信息:

华为开发者大会上提到的harmonyOS NEXT 是提供给开发者用于开发应用的版本,因为它的目的就是拿来调试鸿蒙应用的,所以本质上就不兼容Android(NEXT预览版仅针对合作企业开放,我们暂时看不到它是个什么样子)

目前在官方暂未找不到任何关于此方面的言论,一些民间说法是鸿蒙4.0 NEXT系统上会放弃Android的支持,但是没有找到任何官方的证实

网上的各种充斥着各种鸿蒙放弃Android应用的“沸腾文章”,不排除有小道消息的可能性,但是,如果华为真的决定放弃Android应用的支持,那必定会给广大开发者一定的时间去做适配,而不是靠着各种“沸腾文章”来做宣传

2.现有Android应用可否转换为鸿蒙应用?

先说结论:

Android-apk不能转,需要从源码上转,而且不支持无缝转换,需要改动的地方很多,难度不小,不建议

支撑信息:

从官方文档看到,目前鸿蒙的SDK-API 最新是到 9,而从SDK-API 7开始,就不再新增Java的API了,也就是说,如果我们使用Java开发鸿蒙应用,那么只能使用低于API 7 版本的SDK ,而新增的API,则无法使用Java调用

官方文档上没有找到支持kotlin的说明,而我们的应用大部分代码都是用的kotlin编写

如果依然要使用Java开发,那么,华为官方并没有提供相关API或者转换工具供我们使用,但是现有的一些基于Java的三方SDK仍然可以直接使用,最新最全鸿蒙常用开源库总结,也就是说我们可以创建一个Java版的鸿蒙应用工程,然后把代码拷贝进去,具体的工作量在于:

  • 现有Android提供的四大组件,在鸿蒙的SDK中是不存在的,需要改为使用鸿蒙提供的API

  • 现有的XML布局无法使用,需要换成鸿蒙提供的UI框架来做

  • 替换一些鸿蒙无法支持的三方SDK

3. 鸿蒙应用可否使用Java语言进行开发?

先说结论:Java要被放弃

支撑信息:见5.2

4. 是否支持使用方舟编译器开发出来的应用编译为Android、iOS、鸿蒙App?

不支持,方舟编译器只能开发鸿蒙应用

5. 鸿蒙中的免安装应用是怎么实现的?

此类应用在鸿蒙系统中称之为元服务(原子化服务),应用大小不超过10MB,其实是有安装过程的,但是对于用户来讲是无感的,由系统进行下发

七、参考文档:

Harmony-最新最全鸿蒙常用开源库总结 - 掘金

华为开发者社区_开发者中心 | 华为开发者联盟

开发准备-快速入门-入门-HarmonyOS应用开发


http://www.niftyadmin.cn/n/5198759.html

相关文章

媲美有线操作,支持4KHz响应和无线充电的游戏鼠标,雷柏VT3S上手

对于无线鼠标来说,操作延迟和精度对游戏操作影响很大,常见的游戏鼠标至少都有1KHz的回报率,而雷柏今年已经出了很多支持4KHz回报的鼠标了,像是我现在用的这款VT3S游戏鼠标,就搭载了旗舰级的原相3395引擎,支…

机器学习-笔记

绪论 参考期刊 ICCV 偏向视觉CVPR 偏向MLIAAA AI原理ICML 参考链接 CSDN 机器学习知识点全面总结 课堂内容学习-0912-N1 对于特征提取,简而言之就是同类聚得紧,异类分得开;   detection研究的是样本二分类问题,即分为正样本…

Java格式化类Format

文章目录 Format介绍Format方法- format(格式化)- parseObject(解析) 格式化分类日期时间格式化1. DateFormat常用方法getInstancegetDateInstancegetTimeInstancegetDateTimeInstance 方法入参styleLocale 2. SimpleDateFormat常…

音视频同步笔记 - 以音频时间为基

音视频同步 - 以音频时间为基 上图介绍: 该图是以音频的时间为基,对视频播放时间的延迟控制方案,只调整视频的播放延时。delayTime是视频播放的延迟时间,初始值是1 / FPS * 1000 (ms),如果FPS为25帧率,初始…

python趣味编程-5分钟实现一个贪吃蛇游戏(含源码、步骤讲解)

Python 贪吃蛇游戏代码是用 Python 语言编写的。在这个贪吃蛇游戏中,Python 代码是增强您在创建和设计如何使用 Python 创建贪吃蛇游戏方面的技能和才能的方法。 Python Tkinter中的贪吃蛇游戏是一个简单干净的 GUI,可轻松玩游戏。游戏设计非常简单,用户不会觉得使用和理解…

[github配置] 远程访问仓库以及问题解决

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于新西兰奥克兰大学攻读IT硕士学位。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。跨领域…

Vue使用基本教程(基本介绍及对比,初步使用,构建项目,编辑器等)

一、Vue及与其他前端框架的异同。 Vue.js(通常简称为Vue)是一个用于构建用户界面的渐进式JavaScript框架。它专注于视图层,采用简单的API设计,使得开发者能够更轻松地构建交互式的单页面应用(SPA)和用户界…

python爬虫SHA案例:某直播大数据分析平台

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、找出需要加密的参数 js运行 atob(‘aHR0cDovL3d3dy5oaDEwMjQuY29tLyMvc2VhcmNoL3NlYXJjaA’) 拿到网址,F12打…