鸿蒙系统调研适配

写在前面:

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

一、鸿蒙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.mzph.cn/news/150366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Gateway】基于ruoyi-cloud-plus项目,gateway局部过滤器和过滤返回以及集成nacos

1.使用Gateway路由转发 1.1标题引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>1.2添加YML配置 spring:cloud:gateway:# 打印请求日志(自定义)…

链动2+1模式:创新营销引领白酒产业新潮流

在当今高度竞争的市场环境中&#xff0c;创新营销模式对于企业的发展至关重要。链动21模式作为一种独特的营销策略&#xff0c;将白酒产品与该模式相结合&#xff0c;充分发挥其优势&#xff0c;通过独特的身份晋升和奖励机制&#xff0c;快速建立销售渠道&#xff0c;提高用户…

C++基础从0到1入门编程(二)

系统学习C 方便自己日后复习&#xff0c;错误的地方希望积极指正 往期文章&#xff1a;C基础从0到1入门编程&#xff08;一&#xff09; 参考视频&#xff1a; 1.黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难 2.系统化学习C 1 函数指针和回调函数 如果把函数的地址…

【C语言.oj刷题】有序#整型矩阵元素查找##{思路+C源码}

目录 题目信息 题目分析&#xff1a; 法一&#xff1a; 遍历二维数组&#xff08;低效&#xff09; 思路 源码 局限性 法二&#xff1a; 对每一行二分查找&#xff08;有所提效&#xff09; 思路 源码 局限性 法三&#xff1a; 利用一切有利条件使用二分查找 思路 …

由两个独立的高增益运算放大器组成的运放芯片D258,可应用于音频信号处理系统上

D258是由两个独立的高增益运算放大器组成。可以是单电源工作&#xff0c;也可以是双电源工作,电源的电流消耗与电源电压大小无关。应用范围包括变频放大器、DC增益部件和所有常规运算放大电路。 主要特点&#xff1a; ● 可单电源或双电源 工作 ● 在一个封装内的两个经…

vue3项目安装eslint和prettier

【几乎最全/全网最长的 2 万 字】前端工程化完整流程&#xff1a;从头搭到尾&#xff08;vue3 vite qiankun docker tailwindcss iview......&#xff09;_前端工程化流程-CSDN博客 vue3tsvite项目中使用eslintprettierstylelinthusky指南 - 掘金 上面两篇文章相互结合操…

网络工程师网络配置经典例题(五)

1、配置SwitchA的单臂静态BFD特性 [SwitchA] bfd [SwitchA-bfd] quit [SwitchA] bfd 1 bind peer-ip 10.2.2.2 interface vlanif 10 source-ip 10.1.1.1 one-arm-echo [SwitchA-bfd-session-1] discriminator local 1 [SwitchA-bfd-session-1] min-echo-rx-interval 200 …

音视频项目—基于FFmpeg和SDL的音视频播放器解析(十三)

介绍 在本系列&#xff0c;我打算花大篇幅讲解我的 gitee 项目音视频播放器&#xff0c;在这个项目&#xff0c;您可以学到音视频解封装&#xff0c;解码&#xff0c;SDL渲染相关的知识。您对源代码感兴趣的话&#xff0c;请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…

解决:Error: Missing binding xxxxx\node_modules\node-sass\vendor\win32-x64-83\

一、具体报错 二、报错原因 这个错误是由于缺少 node-sass 模块的绑定文件引起的。 三、导致原因 3.1、环境发生了变化 3.2、安装过程出现问题 四、解决方法步骤&#xff1a; 4.1、重新构建 node-sass 模块 npm rebuild node-sass 4.2、清除缓存并重新安装依赖 npm c…

20231117在ubuntu20.04下使用ZIP命令压缩文件夹

20231117在ubuntu20.04下使用ZIP命令压缩文件夹 2023/11/17 17:01 百度搜索&#xff1a;Ubuntu zip 压缩 https://blog.51cto.com/u_64214/7641253 Ubuntu压缩文件夹zip命令 原创 chenglei1208 2023-09-28 17:21:58博主文章分类&#xff1a;LINUX 小工具 文章标签命令行压缩包U…

Google身份验证器Google Authenticator的java服务端实现

Google身份验证器Google Authenticator是谷歌推出的一款基于时间与哈希的一次性密码算法的两步验证软件令牌&#xff0c;此软件用于Google的认证服务。此项服务所使用的算法已列于RFC 6238和RFC 4226中。谷歌验证器上的动态密码按照时间或使用次数不断动态变化&#xff08;默认…

从CentOS向KeyarchOS操作系统的wordpress应用迁移实战

文章目录 从CentOS向KeyarchOS操作系统的wordpress应用迁移实战一、使用浪潮信息X2Keyarch迁移工具完成操作系统的迁移1.1 迁移前的验证1.2 执行迁移评估1.3 开始迁移1.4 验证迁移结果1.5 迁移后的验证 二、总结 从CentOS向KeyarchOS操作系统的wordpress应用迁移实战 CentOS是一…

Java-拼图小游戏

文章目录 main方法登录界面游戏主界面User类图片素材获取方式 基于Java实现的拼图小游戏&#xff0c;代码与图片素材来自b站up主黑马程序员的Java教学视频。 main方法 import ui.LoginJframe;public class App {public static void main(String[] args) {new LoginJframe(); …

Element UI 偶发性图标乱码问题

1. 问题如图所示 2. 原因&#xff1a;sass版本低 sass: 1.26.8 sass-loader: 8.0.2 3. 解决方法 (1) 提高sass版本 (2) 在vue.config.js中添加配置 css: {loaderOptions: {sass: {sassOptions: {outputStyle: expanded}}}},4. 遇到的问题 升级后打包&#xff0c;报错 Syntax…

CTFhub-RCE-过滤cat

查看当前目录&#xff1a;输入:127.0.0.1|ls 127.0.0.1|cat flag_42211411527984.php 无输出内容 使用单引号绕过 127.0.0.1|cat flag_42211411527984.php|base 64 使用双引号绕过 127.0.0.1|c""at flag_42211411527984.php|base64 使用特殊变量绕过 127.0.0.…

ES7.x 新特性与重大变化

1.1 ES7.0 自适应副本选择。更智能的选择副本。refresh刷新策略。在不设置刷新时间的情况下,从原来的默认1s刷新一次,添加一个判断策略,如果30s内没有搜索,则不再refresh。默认配置5个分片,改为1个分片。使用Lucene8, 改进了 top-k 查询的搜索性能 。更好的主节点选举能力…

微服务学习|Feign:快速入门、自定义配置、性能优化、最佳实践

RestTemplate方式调用存在的问题 先来看我们以前利用RestTemplate发起远程调用的代码 存在下面的问题 代码可读性差&#xff0c;编程体验不统一 参数复杂URL难以维护 Feign的介绍 Feign是一个声明式的http客户端&#xff0c;官方地址: https://github.com/OpenFeign/feign …

16.Oracle的数据字典和动态性能视图

oracle11g的数据字典和动态性能视图 一、什么是数据字典二、数据字典视图类型三、Oracle11g的动态性能视图 一、什么是数据字典 数据字典是整个oracle的核心&#xff0c;记录了数据库的最基本的信息。数据字典包括数据字典基本表和数据字典视图。数据字典基本表由$ORACLE_HOME…

【CSS】各百分比透明度 opacity 对应的 16 进制颜色值(例如:#FFFFFF80)

文章目录 使用&#xff1a;6位颜色值2位透明度值 color: #000000D4; /* 等价于 */ color: #000000; opacity : 0.83; /* 等价于 */ color: #000000; opacity : 83%; 对照表&#xff08;0&#xff1a;完全透明&#xff0c;1&#xff1a;不透明&#xff09; 透明度值百分百值十…

OpenAI 董事会与 Sam Altman 讨论重返 CEO 岗位事宜

The Verge 援引多位知情人士消息称&#xff0c;OpenAI 董事会正在与 Sam Altman 讨论他重新担任首席执行官的可能性。 有一位知情人士表示&#xff0c;Altman 对于回归公司一事的态度暧昧&#xff0c;尤其是在他没有任何提前通知的情况下被解雇后。他希望对公司的治理模式进行重…