上周发了一篇 《鸿蒙终于不套壳了?纯血 HarmonyOS NEXT 行将到来》的相关资讯,没想到大家「讨(fa)论(xie)」的热情很高,莫名蹭了一波流量,尽管流量对我来说也没什么用,但几百条谈论也收成了一些比较有意思的问题,随着谈论区「沦亡」,这儿统一挑出来汇总下。
⚠️PS,不卖课不推广不站队,只考虑技能视点,假如有更进一步的材料或许问题就更好了,由于现在大部分人都在观望和评估
首要讨论的条件是依据 「HarmonyOS NEXT 版本,去掉了传统的 AOSP 代码,仅支撑鸿蒙内核和鸿蒙体系的运用」的场景,已然是剥离,那就不是「不支撑 apk 后缀装置」的场景了,那么适配的作业量也就随之而来。
现在现已有一些企业在进行适配或许现已适配的,适配的方法根本都是依据 skia 的场景去完成,由于 HarmonyOS NEXT 的烘托底层仍是 skia ,所以做一些兼容转化,游戏不用说,依据 OpenGL 和 unity 兼容难度相对不高,主要仍是集中于 App 怎么兼容的适配等问题上。
那么接下来便是一些风趣的抢手问题汇总
鸿蒙运用能装置在 Android 体系上吗?
鸿蒙现在用的是 ArkTs 和 ArkUI ,它们成了仅有指定言语和结构,依照现在的状况看,ArkUI 是无法直接用到 Android 体系,可是华为开源了别的一个项目 ArkUI-X ,ArkUI-X 扩展ArkUI 开发结构到多个 OS 渠道,所以从这个视点看,鸿蒙运用又能够运行到其他渠道。
不负责任的说,有点相似于 compose 和 compose-multiplatform 的联系。
当然,ArkUI-X 项目并不是从 0 开端,它和 Flutter 仍是有一些缘分。
ArkUI-X 项目属于 OpenHarmony 管理,而在 OpenHarmony 下存有 third_party_flutter 等项目依赖,ArkUI-X 里 Flutter 应该仅仅用于窗口管理和烘托管道到 skia ,没用到 Dart 部分的 UI 结构,相似于之条件到的微信小程序 skyline 底层运用 Flutter 烘托输出场景相似。
尽管 ArkUI-X 让鸿蒙 App 能够运行到其他渠道,可是大家现在更多诉求是现有 App 能够持续「兼容」到鸿蒙 Next。
鸿蒙 Next 晋级会造成断代吗?会和WinPhone 相同滑铁卢吗?
的确,一旦鸿蒙开端正式不支撑 Android ,那么对开发者生态和用户必定会有直接的「冲击」,这也是鸿蒙 Next 需求面对的最大门槛。
现在我个人了解,鸿蒙的策略便是先稳住大厂,尽量让大厂能跟进「首发适配」,已知的小红书、百度、美团、京东等企业都有一定鸿蒙基础,一些团队也许是依据 KPI ,也许是依据领导要求,都提早开端了 鸿蒙 Next 的支撑,所以鸿蒙 Next 在开始生态基础上仍是比当年的 WinPhone 好一些。
例如美图从前就有在 skia 层适配鸿蒙的 《让 Flutter 在鸿蒙体系上跑起来》
当然,鸿蒙必定不会一上来就强制晋级,到时分正式推送更新的时分,应该会有提示框告知用户,我猜想会双线「鸿蒙 4」 和「鸿蒙 Next」 共存保护一段时刻,便是你不更新,能够持续用打补丁的鸿蒙 4 过度较长的一段时刻,过渡期和用户保护仍是需求的。
接下来是「个人屁话」时刻,用于解说别的一部分谈论问题:
从现在来看,鸿蒙 Next 是个博弈,便是华为有存量用户,也有新增用户,便是博弈企业的产品愿不愿意放弃这部分商场份额:
之前的谈论区说到的,假如网易音乐适配了,那 QQ 音乐是否会跟进?这是一个看谁愿意卷的问题。
现在华为商场份额大约 9.2%,鸿蒙现阶段还只在国内,Counterpoint 披露的数据显示,2023 年 Q1,在中国商场,鸿蒙操作体系的市占率为 8% 。。。。。而 2023 年第一季度,在中国商场,安卓体系占据 72% 商场份额,iOS为 20%,所以这是一个存量商场和新增商场的博弈。
华为手机销量从 2.4 亿台(2019年)达到顶峰后,跌至3,000万台(2022年),而 2023 Q1 开端对比 2022 逆势增长41%,所以 2023 年给的方针手机出货量是 4000 万部。
这部分问题在于,它说多不多,可是你说它少,又不能完全忽视,毕竟有存量有新增。
扯远了,这个论题终究说一下两个忧虑的问题:
- 晋级到 Next 之后,运用数据是否支撑晋级兼容,在整个体系结构都剥离重组的状况下,原先运用的本地数据是否支撑兼容或许迁移,这是一个非常影响晋级指标的要素,或许说晋级后丢掉率多高。
- App 后续支撑也是一个风向标,运用厂商在鸿蒙上「首发」App 之后,是否能和 Android/iOS 渠道相同及时迭代跟进,仍是「又不是不能用」的保护躺平?
鸿蒙为什么能够经过 OTA 晋级剥离 AOSP?怎么兼容高通芯片的机器?
这是谈论区一个抢手讨观点之一,首要大家或许会觉得,自己怎么更新自己的内核?看谈论区有人的说到的便是「一个人怎么举起自己来」。
这儿我也不知道鸿蒙更新的详细路线,依据我的了解和谈论区的内容,这儿做一些总结:
- 首要 AOSP 是依据 Linux 内核开发,也便是 AOSP 尽管有 Linux 内核,可是它是以特别方法存在 AOSP 里,由于一些前史 GPL 传染性协议问题,AOSP 不是一个 GUN Linux发行版,所以 AOSP 和 Linux 内核能够分隔处理。
- 相似于 OpenHarmony 运用 LiteOS 内核,HarmonyOS 这层壳能够在 LiteOS 与 AOSP 直接切换,「非常不谨慎」的比喻:「Flutter 能够经过晋级把底层烘托从 skia 更新到 Impeller」,这次 Harmony Next 说到的应该是替换为 “鸿蒙内核”与“华为方舟图形引擎”。
- 相似 Android 的 bootloader 是支撑 A/B 更新,可用于引导和传递需求加载对应内核:source.android.com/devices/tec…
以上这个主要是从技能层面介绍「一个人怎么举起自己来」的完成,仅作为猜想,纷歧定是鸿蒙的路子。
别的,华为现存高通芯片和麒麟芯片的机器,这些机器怎么经过 OTA 晋级支撑到 Harmony Next ?麒麟不用说,高通怎么能够直接说晋级兼容?
这个就要说到本来 AOSP 里边的 HAL(Hardware Abstraction Layer) 层的作用了,例如在 Android 8.0之后,framework 与 hal 进行了解耦, framework 存在于 system.img,hal 存在于 vendor.img,进行版本晋级时,分为两次晋级。
SoC 厂商的兼容,能够经过适配 hal, 将修改打包到 vendor.img, 生成OTA 晋级包,推送到手机进行 OTA 晋级(framework产生改变,hal 层产生改变) 。
详细能够参阅: m.elecfans.com/article/202…
这儿有个关键词,SoC 厂商的兼容,也便是到时分或许会是 mate40系列(麒麟)更早能够更新到 next,mate50 系列(高通)会相对晚一些。
剥离后的鸿蒙OS怎么样?和本来 Android 还像吗?开发方法怎么?
这个问题大家仍是比较关心,用谈论区一位网友的总结便是:
“ ArkUI这玩意很多运用了napi, 逻辑几乎都封装在c++写的framework里,说个笑话: 用他们的弹框组件改个圆角值都改不了,由于底层写死了。
framework很多借鉴了Android(看ability发动源码能够很好复习activity发动的八股文) , 权限和组件封装又和iOS靠齐,能够说非常合适跨渠道开发踩坑。”
所以从 java 层面 Android framework 等的代码现已不见了,Harmony Next 的 framework 根本封装在 c++ 层,与渠道调用多数走 ffi 调用。
是不是有一种了解的滋味?嗯,是 Flutter 的滋味。
开发体会上相似 Flutter/Compose 项目,假如硬要说,或许会是像是 SwiftUl 和 Compose 的优点缝合?主要是声明式 UI开发,然后链式写法和组件命名关于客户端开发来说应该会很有了解感。
开发构建上,鸿蒙 Next 运用的 ArkTS 相似 Dart 构建形式,都是 AOT ,ArkTS 经过 ArkCompiler 构建并优化成机器码:
ArkCompiler 运用 ArkTS 的静态类型信息,进行类型推导并生成目标描绘和内联缓存,加速运行时对字节码的解说执行;AOT(Ahead-of-Time)Compiler 运用静态类型信息直接将字节码编译生成优化机器码……
之所以提一嘴这个编译,是由于有如下图相似的谈论,质疑 ArkTS 是一种网页运用的,所以也就当纯做一个回应,尽管叫 TS,可是其实它并不能「直接」开发 Web。
顺带提一句,华为这次仍是「明确」指出了,ArkTS 是在 TypeScript(简称TS)的基础上进行自研的开发言语,便是不知道这个到了自媒体宣传上会怎么解读了。
接着不得不提一句的便是 「三棵树」,Flutter 开发应该关于这个很了解,官方的解说是:
ArkUI3.1 经过编译期生成特定函数的方法将 UI 组件更新和数据改变进行细粒度地绑定,完成 UI 更新 Diff 算法从 COMPONENT 和 ELEMENT 树形结构对比晋级为单节点 NODE的函数式更新。
从这儿看,如图所示仍是了解的滋味 ,其实 「ArkUI 对 Flutter 开发者的确很友爱」。
终究,ArkUI 还供给了一些「高级UI组件扩展才能」大约便是:
-
XComponent
组件的 C++ 自制作引擎接入(比如游戏引擎)才能 - 依据Web组件的 HTML5/Web 的烘托能
主要是为了满足开发者在游戏、相机、地图、浏览器等复杂运用场景的开发诉求,降低了这类运用移植的门槛。
关于这部分有待后续大家的体会报告了,能够了解此刻大约便是「又不是不能用」的状况。
是否会封闭侧载?
其实这个问题我也很猎奇,不过我也不确定,Harmony Next 是不是会让自己生态「对齐」 iOS ,由于这个决定很大程度会影响它以后的命运。
我这儿不负责任的猜想是很大约率会封闭侧载,先说明这个我没有任何依据,仅仅是一个猜想,由于已然都不兼容 Android ,那么作为一个全新的体系形式下,构建生态能够会由于「安全」和「合规」等考虑,依照现在「大环境」的了解,我更倾向它终究会封闭侧载。
我仅仅更倾向终究或许会封闭侧载,可是我不希望封闭侧载。
现有 App 怎么兼容 Harmony Next ?
纯原生运用(Java/Kotlin + XML)形式直接兼容的或许性,或许说兼容方案现在我是看不到直接兼容的或许性,由于没了 JVM ,没了AOSP ,非响应式布局开发,直接兼容的本钱不低于从头再来。
跨渠道结构支撑上:
- Cordova/Ionic 等本身只需求 WebView 和 JSBridge 等相关支撑,兼容反而不难,便是插件部分需求额定弥补,本钱相对较低
- React Native / Weex 部分作业量偏重,前端标报到原生控件映射的适配,还有样式兼容会是一个「体力活」,插件生态也是一个问题
- Flutter 由于前面说到过的种种原因,纯 Flutter 兼容 Harmony Next 本钱不会很高,可是未来或许会产生「分叉」,由于现在 Flutter 官方现已开端逐步选用自研 Impeller 代替 skia 烘托,这后续或许会和 Harmony Next 呈现分叉,别的插件生态兼容会是一个特别头痛的问题
- uni-app/uts ,这个我不负责的猜想后边它自己就会直接适配了,一点点不慌。
从谈论区和私信更新的音讯看,华为内部也主导适配现在的主流跨渠道方案,主动供给反向适配支撑,估计后边就会有相似 Flutter for harmony 的社区支撑,现在华为适配的跨渠道结构包括有:Flutter、ReactNative、Weex、Taro、uni-app、electron、qt 等等,都是依据 API10 (即 harmonyos next & open harmony 4 的 api),后续应该者会开源出来交给社区共建。
HDC 现场的 NEXT 展现机也有相关案例:
- React Native 的华为商城展现
- Weex 的航旅纵横展现
- 京东关于 Taro 展现
- 开鸿智谷 futter 展现
- 才智生活 ArkUI-X 在 IOS 和安卓的跨渠道展现
- cocos 和 Unity 适配展现
当然,就像前面说到了,中心的兼容难点,仍是在于 Plugin 生态对接 native 的适配作业,这部分没办法一触而就,需求共建时刻。
原生 xml + java/kotlin 的怎么是好?
GSYVideoPlayer 有适配鸿蒙方案吗?
没有
终究
好了,现在主要的问题就这些,假如有什么问题欢迎大家「心平气和」地讨论,假如有什么有用的新论题点,到时分会弥补上来。
我不是「专业」的,我仅仅练习时长两年半的「小黑子」。