Android开发能够顺滑的转纯血鸿蒙应用开发吗?_android开发转鸿蒙开发-程序员宅基地

技术标签: 华为  android  鸿蒙  鸿蒙系统  harmonyos  

前言

今年1月18日,华为发布了鸿蒙OS星河版,是一个面向开发者的纯血鸿蒙OS预览版本。意味着今年华为将开始脱离安卓生态,纯血鸿蒙生态正式启动。同时,也确认HarmonyOS NEXT将在2024年四季度推出商用版本,与消费者正式见面。

截止目前鸿蒙生态设备增长至8亿,鸿蒙OS将打开万亿产业新蓝海,带来一轮巨大的市场机会。华为鸿蒙OS目前的影响力主要在国内,所以这个机会也将首先从国内市场拉开序幕。

国内市场的传统安卓应用面临三种应对策略:一是应用厂商自行迁移,这部分应该以国内厂商为主。据报导,目前已有超200家头部应用加速鸿蒙原生开发,年内有希望扩大到TOP5000家适配;二是观望,或是寄希望于华为可能会提供的侧载模式苟一段再看;三是缺乏信心,放弃国内鸿蒙市场。但做为开发者,不管是哪一种策略,都会需要大量的鸿蒙开发者迁移或者平替,是时候考虑再点一棵技能树了。

在这里插入图片描述

安卓与鸿蒙的差异

从宏观上看,鸿蒙OS(HarmonyOS)和安卓OS(Android OS)在设计理念、架构、兼容性等方面存在差异:

开发背景和设计理念

安卓OS:由谷歌开发,最初设计为面向智能手机的操作系统,后来扩展到平板电脑、电视、汽车等。它主要基于Linux内核,并且强调开放性和可定制性。

鸿蒙OS:由华为开发,旨在打造一个多设备统一的操作系统,适用于智能手机、平板、智能手表、车载系统甚至物联网设备。鸿蒙OS强调跨平台能力和流畅的多设备协作。

架构和技术

鸿蒙OS

  1. 微内核架构

    • 鸿蒙OS采用了微内核设计,这意味着其核心功能非常精简。微内核的优点在于提高了系统的安全性和可靠性,因为它减少了系统崩溃的风险,并且更易于维护和更新。
    • 微内核还使得鸿蒙OS能够更容易地适应不同类型的设备,从智能手表到智能家居设备,甚至是汽车系统。
  2. 分布式技术

    • 鸿蒙OS专注于实现真正的跨设备功能,通过“分布式技术”实现设备间的无缝连接和协作。这意味着应用可以在不同设备之间更加流畅地移植和运行,为用户提供一致的体验。
  3. 编程语言和开发框架

    • 鸿蒙OS支持多种编程语言,当前主推ArkTS,同时JS辅助补充能力,曾经支持的Java已不再推荐、设备开发使用C/C++。提供了AI大模型、MindSpore AI框架、ArkUI/ArkUI-X、方舟编译器等能力,以上这些都旨在为开发者提供灵活性和开发效率。

安卓OS

  1. 宏内核架构

    • 安卓OS基于Linux内核,这是一种宏内核。宏内核包含了更多的功能和驱动程序,这使得系统功能更为全面,但可能会牺牲一定的安全性和效率。
    • 安卓的这种设计支持了广泛的硬件设备,使其能够在各种不同的智能手机和平板电脑上运行。
  2. 基于Kotlin/Java的应用开发

    • 安卓应用主要使用Kotlin和Java语言开发。安卓提供了一套基于Java的丰富的应用开发框架,如:Activity,Service,Broadcast Receiver, Content Provider,WindowManager,SurfaceFlinger等,允许开发者创建各种复杂和功能丰富的应用。

综合来看,鸿蒙OS和安卓OS在技术和架构上有显著的区别,在应用迁移上还是会存在不小的工作量和众多的技术问题要解决,平滑就别想了。

兼容性和生态系统

安卓OS:拥有庞大的应用生态系统,几乎所有的智能手机制造商都有使用安卓系统的产品。安卓应用生态成熟,应用商店拥有极为丰富的应用资源。

鸿蒙OS:在兼容性方面,之前的鸿蒙OS支持运行经过轻微修改的安卓应用,但以后的纯血鸿蒙则是全新的应用生态。

市场定位和发展前景

安卓OS:作为目前全球最流行的移动操作系统,安卓在智能手机市场有着不可撼动的地位。

鸿蒙OS:作为期望中的安卓地位撼动者,虽然起步较晚,但鸿蒙OS在中国市场尤其受到关注,并且可能会逐渐在全球范围内对安卓形成竞争。华为在鸿蒙OS上的投资表明了其长期发展的决心。

总的来说,鸿蒙OS与安卓OS的主要区别在于它们的设计理念、技术架构、兼容性以及市场定位。鸿蒙OS致力于构建跨多种设备的统一体验,而安卓则主要集中在提供一个开放、可定制的智能手机操作系统。随着技术的发展和市场的变化,这些差异可能还会进一步演变。

开发者在两种平台上面临的问题

从开发者的角度来看,鸿蒙OS(HarmonyOS)和安卓OS(Android OS)各有其优势和劣势。这些看法通常基于操作系统的成熟度、开发工具、生态系统支持、市场潜力等因素。

鸿蒙OS

  1. 较小的用户基础:相比于安卓,鸿蒙OS目前的用户基础较小,这可能影响应用的受众范围和盈利潜力。
  2. 生态系统仍在成长中:鸿蒙OS的应用生态系统相对较新,可能缺乏某些类型的应用或库,给开发者带来额外的挑战。
  3. 市场不确定性:作为一个较新的操作系统,鸿蒙OS在全球市场的接受程度和未来前景仍有不确定性。

安卓OS

  1. 碎片化问题:安卓设备的多样性导致了系统的碎片化,开发者需要适应不同硬件、屏幕尺寸和系统版本。
  2. 安全和性能问题:由于其宏内核架构,安卓可能面临更多的安全挑战和性能限制。
  3. 卡脖子问题:华为这几年所抗争的A国技术卡脖子问题,也是所有的国产应用头顶上的达摩克利斯之剑,凡事都要想个万一……

这样看来,安卓OS有些像骄傲的中年成功人士,家大业大,但家宅不宁,还可能随时翻脸。而鸿蒙OS更像出山少年,双眼带刀,不肯求饶。这……那……,来看看要从安卓转鸿蒙,开发人员要做哪些准备吧。

在这里插入图片描述

转鸿蒙要做哪些准备

从安卓开发人员转向鸿蒙开发人员,虽然无法平滑过度,但只要对鸿蒙OS的特性、开发环境以及与安卓开发的区别有所准备,还是可以加快不少速度的:

  1. 了解鸿蒙OS的基本概念

    • 学习鸿蒙OS的架构,特别是它的微内核设计。
    • 了解鸿蒙OS的设计理念,尤其是它的跨设备协同和分布式能力。
  2. 学习鸿蒙OS的开发环境和工具

    • 安装和熟悉DevEco Studio,这是华为为鸿蒙OS开发提供的官方集成开发环境(IDE)。
    • 理解鸿蒙OS的应用框架和API,目前主要是v9和v10。
  3. 掌握鸿蒙OS的编程语言和框架

    • ArkTS必学,掌握ArkUI/ArkUI-X等框架。
    • 至于盘古、MindSpore等,也可以适当进行了解。
  4. 从安卓到鸿蒙的代码迁移与适配

    • 在技术论坛了解迁移过程中的经验,也可以联系官方提供技术支持。
    • 学习如何使用Ark Compiler,这是华为为提高应用性能开发的编译器。
  5. 测试和优化

    • 掌握DevEco Testing,学习如何在鸿蒙OS设备上测试和调试应用,确保应用在不同设备上都能良好运行。
    • 优化应用性能,确保良好的用户体验。
  6. 学习鸿蒙技术
    首先得是开发语言 ArkTS,这个尤为重要,然后就是ArkUI声明式UI开发、Stage模型、网络/数据库管理、分布式应用开发、进程间通信与线程间通信技术、OpenHarmony多媒体技术……等。像中间还有许多的知识点,这边都以梳理成思维导图的形式了。
    在这里插入图片描述
    有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的《鸿蒙开发学习笔记》,内容包含ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

【有需要的朋友,可以扫描下方二维码免费领取!!!】

快速入门

  • 开发准备
  • 构建第一个ArkTS应用(Stage模型)
  • 构建第一个ArkTS应用(FA模型)
  • 构建第一个JS应用(FA模型)
    在这里插入图片描述

开发基础知识

  • 应用程序包基础知识
  • 应用配置文件(Stage模型)
  • 应用配置文件概述(FA模型)
    在这里插入图片描述

资源分类与访问

  • 资源分类与访问
  • 创建资源目录和资源文件
  • 资源访问
    在这里插入图片描述

学习ArkTs语言

  • 初识ArkTS语言
  • 基本语法
  • 状态管理
  • 其他状态管理
  • 渲染控制
    在这里插入图片描述

基于ArkTS声明式开发范式

  • UI开发(ArkTS声明式开发范式)概述
  • 开发布局
  • 添加组件
  • 显示图片
  • 使用动画
  • 支持交互事件
  • 性能提升的推荐方法

在这里插入图片描述

兼容JS的类Web开发范式

  • 概述
  • 框架说明
  • 构建用户界面
  • 常见组件开发指导
  • 动效开发指导
  • 自定义组件
    在这里插入图片描述

Web组件

  • 概述
  • 设置基本属性和事件
  • 并发
  • 窗口管理
  • WebGL
  • 媒体
  • 安全
  • 网络与连接
  • 电话服务
  • 数据管理

  • 在这里插入图片描述

应用模型

  • 概述
  • Stage模型开发指导
  • FA模型开发指导
    在这里插入图片描述
【有需要的朋友,可以扫描下方二维码免费领取!!!】

最后

转变过程中可能会遇到一些挑战,如适应新的开发环境、理解不同的API和架构等。但是,作为一名有经验的安卓开发人员,你已经拥有了很多可转化的技能和经验。通过持续学习和实践,你将能够顺利过渡并在鸿蒙OS的世界中找到自己的位置。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/star_nwe/article/details/135889241

智能推荐

ThinkPHP5框架知识付费系统uniapp+mysql可以部署PC+app+公众号+小程序版本-程序员宅基地

文章浏览阅读216次。ThinkPHP5框架知识付费系统uniapp+mysql可以部署PC+app+公众号+小程序版本。导师入住,添加课程和商品,出售后分红提现。vip svip功能。

电源管理(PMIC)TPS63070RNMR、TPS650942A0RSKR、LM5175RHFR器件介绍、应用及特点。-程序员宅基地

文章浏览阅读805次。电源管理(PMIC)TPS63070RNMR、TPS650942A0RSKR、LM5175RHFR器件介绍、应用及特点。_tps63070

Flask 通过Axios库前后端交互_flask 框架下axios-程序员宅基地

文章浏览阅读4.9k次。Axios 是一个基于promise的HTTP库,该库是一个更好的替代ajax向后端发送数据或请求数据的前端组件库,其本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,如下案例运用axios向后端提交JSON字符串,后端通过Flask响应请求并处理。Python后端使用Flask接收并处理前端发送过来的JSON字符串。前端发送数据的第一种方式。前端发送数据的第二种方式。_flask 框架下axios

mavon-editor编辑器与图片上传_mavon-editor 关闭图片链接上传-程序员宅基地

文章浏览阅读2k次,点赞9次,收藏27次。mavon-editor编辑器与图片上传图片上传是一个常用的功能,今天我们来实现基于Vue的Markdown编辑器——mavon-editor的图片上传功能。一、安装与引入1. 首先在命令行安装mavon-editor编辑器。npm install mavon-editor --save2. 在main.js中引入。import editor from "mavon-editor";import "mavon-editor/dist/css/index.css"Vue.use(edit_mavon-editor 关闭图片链接上传

Android 迁移到androidX教程 Kotlin支持androidX_migrate to androidx-程序员宅基地

文章浏览阅读3.7k次。背景:由于android前期在使用上存在差异化管理,在后期会出现各种冲突问题。google在后期将库整合一个新库,adnroidX系列。相对原来的v4和v7,这样便于有效管理。AndroidX 对原始 Android支持库进行了重大改进,后者现在已不再维护。androidx软件包完全取代了支持库,不仅提供与支持库同等的功能,而且还提供了新的库。此外,AndroidX 还包括以下功能: AndroidX 中的所有软件包都使用一致的命名空间,以字符串androidx开头。支持库软件包已...._migrate to androidx

Vscode远程调试及gdbserver配置_vscode远程gdb调试-程序员宅基地

文章浏览阅读947次。如果你像我一样更喜欢使用 GUI 而不是命令行来设置断点、单步调试代码以及​​在程序运行时检查值,那么您可以通过以下方法设置 VSCode 和 gdbserver 以在运行时在本地编辑和调试代码它在远程服务器上。_vscode远程gdb调试

随便推点

算法学习,转载记录(持续记录)-程序员宅基地

文章浏览阅读54次。个人转载记录算法优质文章,仅做笔记,侵删

局域网探测器_局域网检测-程序员宅基地

文章浏览阅读648次。局域网探测器可以探测子网中包含的设备和计算机,并获取计算机的基本信息,检测IP地址的在线状态。探测器由以下5个功能模块组成:获取本地网络信息、子网管理、子网扫描、获取子网中计算机的基本信息、检测设备的在线状态。_局域网检测

【C语言基础系列,阿里java面试流程_c语言java面试-程序员宅基地

文章浏览阅读258次。先回计算表达式1;再判断表达式2,若值为“真”,则执行循环体语句,并接着计算表达式3,然后继续循环;若值为“假”,则结束循环,继续执行for的下一条语句。【注】for语句中的三个表达式以及循环体语句的执行顺序和书写顺序有所不同,计算表达式3在执行循环体语句之后。由上图可以看出表达式1值在进入循环前执行一次。在for语句中,常常通过改变和判断某个变量的值来控制循环体的执行。下面来通过一个小案例了解一下for循环。利用for循环计算1 ~ 100中奇数的和,代码如下:#include<stdio._c语言java面试

Linux技术简历项目经验示例(二)_linux简历工作经验怎么写-程序员宅基地

文章浏览阅读2.4w次,点赞37次,收藏263次。服务器上线搭建系统环境1.根据现有结构部署工具(PXE+kickstart);2.结合应用系统需求定制部署模版;3.制作系统优化等一键执行脚本;4.自动化部署实施;5.根..._linux简历工作经验怎么写

安卓手机软键盘弹出后不响应onKeyDown、onBackPressed方法解决方案-程序员宅基地

文章浏览阅读202次。最近在写评论的时候,想要以下的一个需求,就是点击评论按钮,弹出软键盘和对话框,然后按下手机返回按键之后,对话框和软键盘同时消失,而不是软件盘先消失,然后在按下back按键才能消失对话框。先来个gif图震一下。。。哈哈(已经基本实现仿今日头条评论)(这个录屏有点延迟,真实体验和今日头条差不多,mac gif不动。。。。哎,还是在win上发布吧)感觉是不是还可以啊。###问题研究其实之前我..._android 显示dialog时onkeyup失效

使用二维数组实现存储学生成绩_c#创建控制台应用程序studentscore,生成学生成绩单——二维数组的使用。-程序员宅基地

文章浏览阅读1.9w次,点赞5次,收藏45次。需求:1、定义一个20*5的二维数组,用来存储某班级20位学员的5门课的成绩;这5门课 按存储顺序依次为:core,C++,coreJava,Servlet,JSP和EJB2、循环给二维数组的每一个元素赋0~100之间的随机整数。3、按照列表的方式输出这些学员的每门课程的成绩。4、要求编写程序求每个学员的总分,将其保留在另外一个一维数组中。5、要求编写程序求所有学员的某门课程的平均分。im_c#创建控制台应用程序studentscore,生成学生成绩单——二维数组的使用。

推荐文章

热门文章

相关标签