写点什么

从混合包开发到 100% 纯鸿蒙应用还有多远?优酷鸿蒙版的开发实践与思考|卓越技术团队访谈录

  • 2021-12-19
  • 本文字数:4242 字

    阅读完需:约 14 分钟

从混合包开发到100%纯鸿蒙应用还有多远?优酷鸿蒙版的开发实践与思考|卓越技术团队访谈录

过去一年,鸿蒙系统(HarmonyOS)马不停蹄地更新,一步步完成原定路线图的目标。2020 年 12 月,鸿蒙推出了面向手机开发者的 Beta 版本;到 2021 年 6 月 2 日,华为发布多款搭载 HarmonyOS 2 的新产品,开始搭载于智能手机上。对于一个新生操作系统来说,繁荣的应用市场自然是其生态能持续发展壮大的必要条件。


而在初期发展中,主流 App 的支持亦显得尤为重要。InfoQ 留意到,有部分主流 App 早已开展鸿蒙系统上的探索工作并获取了一些成果,因此希望通过选题采访的方式记录开发者在鸿蒙应用上的探索历程和心得,以供业界参考。本文中,InfoQ 采访了优酷高级无线开发专家刘洋,请他与我们分享优酷鸿蒙版的开发工作和实践经验。

优酷鸿蒙版有什么特别?


InfoQ:为什么会选择开发优酷鸿蒙版?


刘洋:优酷与华为公司长期以来保持紧密的合作。在鸿蒙系统对外发布之后,优酷技术团队也在第一时间投入对鸿蒙系统以及鸿蒙开发者 SDK 的研究,寻找与优酷客户端契合的功能点,希望可以做出让人耳目一新的亮点。


优酷早在 2020 年 11 月份就开始与华为合作,在鸿蒙系统上展开初步探索。后来我们专门开发的优酷鸿蒙版本作为案例展示出现在 HarmonyOS Beta 版本发布会,同时也预装在早期 Beta 版本的 OTA 升级镜像之中。这些早期合作取得了较好的市场反应和积极的用户评价,大量用户在社交媒体或者视频网站上贴出自己的使用体验和评测文章和视频。因此,我们决定正式推出优酷鸿蒙版本,上架到华为应用市场。


InfoQ:优酷鸿蒙版跟 Android/iOS 客户端上的版本相比,有什么不同?


刘洋:经过优酷内部的分析和讨论,我们认为优酷在鸿蒙系统上的尝试,不应该局限在将某一个模块或者某个业务使用鸿蒙的 API 重新开发一遍,而是应该与鸿蒙系统提供的特色功能相结合,实现传统 Android 设备之间无法实现或者较难实现的功能。


由于优酷客户端横跨 Android、iOS、iPadOS、Windows、MacOS、OTT 等多种平台,天然地具有设备之间相互联动的场景,所以我们也希望在优酷的多屏互动功能上做出一些新意。于是,我们把目光落在了鸿蒙系统提供的“分布式协同体验”。


目前,优酷鸿蒙版本是以 Android 版为基础,包含 Android 版本的所有功能,并添加了两大专有功能。


第一个是桌面 Widget FA 卡片,该卡片 100%用鸿蒙 API 编写,可以脱离优酷主客独立运行,提供热门视频快速观看的功能:


  • 在手机桌面上的优酷 icon 轻轻上滑,会弹出一个鸿蒙卡片,并推荐最近的热播剧,点击卡片就能跳转到优酷客户端内的相应页面。

  • 点击卡片上的图钉按钮,可以将这个 FA 卡片固定在桌面上。


第二个是多屏互动 FA,也是 100%利用鸿蒙 API 编写,但需要与优酷主客协同运行,提供多台鸿蒙设备之间多屏互动的功能:用户可以点击优酷鸿蒙版播放页中的“视频流转”按钮,将手机端正在播放的视频流转到其它鸿蒙设备上(如鸿蒙智慧屏等),并可以将手机作为遥控器对大屏设备进行播控控制。


如此一来,在手机上不仅能对大屏的音量进行调整,也支持对播放速度、清晰度、剧集进行操控,还可以旋转大屏上的自由视角视频(FVV,Free Viewpoing Video)的角度。这里采用的自由视角技术可理解为「Outside-In」的观看方式,类似 3D 游戏的操作手法,是借助阿里文娱摩酷实验室的整套解决方案实现。自由视角技术互动的制作包括软硬件、云端三维重建、视频压缩和传输、客户端视点重建、视频标准建设等一系列环节。


而“鸿蒙多屏互动”与传统投屏的最大区别是,我们是利用鸿蒙系统提供的“设备/服务发现机制”来搜索对端设备,以及使用鸿蒙系统的“建立连接”功能来建立设备之间的双向通信。


由于鸿蒙系统的 “设备/服务发现机制”、“建立连接”功能经过高度优化,从我们自己的使用体验来说,“鸿蒙多屏互动”相比起传统 DLNA 或者 Miracast 镜像功能,有几点比较明显的优势:设备发现快、连接建立快,且连接建立之后非常稳定,不容易断连等。


InfoQ:除了手机,优酷鸿蒙版跟搭载鸿蒙系统的终端产品会有不一样的联动吗?


刘洋:技术上来讲,搭载在两台鸿蒙系统设备上的优酷鸿蒙版本都可以彼此联动,并且可以联动的功能也不仅限于视频流转。但目前我们只开放了手机端和智慧屏设备上的优酷客户端之间的多屏互动功能。


InfoQ:目前来看,优酷自从出了鸿蒙版之后,在用户层面会有一些比较明显的变化吗?


刘洋:鸿蒙系统前期的讨论热度很高,有很多用户通过社交媒体或者科技新闻了解到优酷推出了鸿蒙版应用,也非常积极地登录华为应用市场下载使用优酷鸿蒙版本,还有的在社交媒体和视频网站发布了很多试用心得体会和评测视频。当前在鸿蒙渠道,优酷的新用户占比远高于华为 Android 渠道。

混合包开发模式更现实

InfoQ:团队是从什么时候开始开发优酷鸿蒙版,做这块的同学大概有多少人?是如何分工的?


刘洋:优酷鸿蒙版本的开发早在去年 10 月份就启动了,在 2021 年 6 月份正式上架第一个优酷鸿蒙版。参与的同学来自研发、设计、测试、产品、商务、运营等多个团队,总共十来个人。其中,产品对即将在优酷鸿蒙版上线的专有功能进行规划;研发和测试对具体功能进行实现和质量管控;商务根据我们的需求与华为方面讨论合作进度;运营将开发完毕的优酷鸿蒙版上架,并维持日常运营。


InfoQ:能否大概介绍一下优酷鸿蒙版的开发过程?


刘洋:优酷鸿蒙版本以 Android 版本为基础,添加一部分完全使用鸿蒙系统 API 开发的专有特性功能,然后混合打包成一个安装包,并和 Android 版本同时提交到华为市场。安装鸿蒙系统的华为手机在市场中下载的是鸿蒙版本,安装 Android 系统的华为手机仍然是下载 Android 版本,两者互不影响。


关于详细的开发实践过程,欢迎大家查看“优酷鸿蒙开发实践”系列技术文章:


《鸿蒙卡片开发》《多屏互动开发实践》《优酷Android与HarmonyOS HAP混合打包技术实践》


InfoQ:采用混合包开发模式的考虑因素是什么?是研发成本吗?优酷怎么去评估这部分成本?


刘洋:首先,在当前这个阶段将优酷这样的大型 Android 应用全部使用鸿蒙 API 改写是不现实的。所以华为设计了一种演进路线,希望将 App 中的功能由 Android 模块逐步替换为鸿蒙 FA/PA,并混合打包在一起进行分发,逐渐抵达 100%纯鸿蒙的最终形态。


其次,优酷 App 大量依赖阿里系的各种移动中间件,比如安全、加密、网络、Crash 收集等。如果阿里集团的相关部门未提供这些 SDK 的鸿蒙系统版本,优酷是无法独立开发出一个“纯鸿蒙应用”的。


因此,混合包开发模式是比较现实的做法。混合包的开发成本,涉及鸿蒙专有功能的开发和测试、混合包的打包和上架、优酷所有功能的回归测试,其成本是可控的。


InfoQ:开发过程中,难度最大或者最为耗时的部分是什么?


刘洋:由于我们加入鸿蒙生态圈的时间点非常早,而且优酷也是一个很复杂、功能非常多的大型 App,因此优酷鸿蒙版本的开发也遇到了很多困难。


首先,在早期阶段,鸿蒙系统和鸿蒙开发者 SDK 的功能还不够稳定,开发者文档也不够完善。遇到问题时,需要花大量时间确定到底是自己代码的问题,还是鸿蒙系统自身的问题,或者是打包工具链的问题。


其次,华为是最早提出“云管端”概念的公司之一,鸿蒙系统上 App 运行时行为同时受鸿蒙系统、鸿蒙系统的预装 App、华为云服务的云端配置的影响,当优酷遇到线上非预期的技术问题时,排查链路比较长。


第三,由于优酷 Android 版本和优酷鸿蒙版本同时在华为应用市场上架,之前没有可以参考的先例。如何保证两者在华为手机中的群体中互不影响,在优酷内部鸿蒙版和 Android 版的代码同步、发版节奏的对齐等方面也需要做大量的工作。

鸿蒙版的开发和维护是一项长期工作

InfoQ:在优酷鸿蒙版的开发过程中,您认为还需要改进或提升的点有哪些?


刘洋:第一,优酷鸿蒙版是以优酷 Android 版为基础,在开发鸿蒙专有功能的时候,需要对原始 Android 应用中的部分共用代码做一定的修改,为了避免影响 Android 主线版本的功能,我们采用的是拉分支独立维护的办法,很长时间都没有将修改代码合入主线版本。这一点加大了鸿蒙版本的开发和维护成本,也拖累了鸿蒙版本的发版速度。


第二,鸿蒙混合包是 Android + 鸿蒙代码,采用优酷的 Release 发布证书签名,难以开发调试,给参与鸿蒙特性早期开发的同学带来了很多困扰。


InfoQ:能否分享下团队在开发鸿蒙版优酷中积累的经验?


刘洋:目前优酷鸿蒙版中鸿蒙部分的功能,仍然需要从原始 Android 部分获取大量的信息和状态,业界其他 App 一般是使用 Java 反射等技术在鸿蒙代码中读取 Android 部分的信息,难以开发和维护。我们封装了一套规范,采用易于扩充的双向通信方式,解决了鸿蒙和 Android 之间双向通信的难题。


InfoQ:鸿蒙版已经上线,未来针对这个版本有什么打算?还需要做哪些事情?


刘洋:优酷和华为终端业务一直以来保持紧密合作。我们预期会基于鸿蒙系统的“分布式流转”、“分布式协同计算”、“分布式设备”等专有特性,再结合优酷实际业务去开发出优酷鸿蒙版的专有功能。


优酷鸿蒙版的开发和维护是一项长期工作,是否开发纯鸿蒙版的优酷,主要是看华为对纯鸿蒙应用的推广力度,以及阿里系在鸿蒙系统上的移动中间件的统一规划。


InfoQ:⽬前看来,做鸿蒙版应⽤的主流 App 并不多,您如何看待这个现状?


刘洋:首先,一个新的移动平台出现之后,业界暂时采取观望的态度是很正常的。在新平台上开发 App 的投入产出比、是新成立团队还是让现有团队同时维护多平台等等,都是各个公司的业务和技术决策者需要审慎考虑的问题。其次,Android 版本的 App 也能在鸿蒙系统上直接运行,因此各大公司开发鸿蒙版 App 的必要性和急迫性还不是很高。


但是,我们可以看到华为公司对鸿蒙系统长期投入的决心是相当大的,对鸿蒙版应用也给予了越来越多的资源倾斜。早期参与鸿蒙生态的业界应用有很多都取得了不错的业务结果,华为应用市场鸿蒙专区中的应用数量也在快速攀升,我相信未来进入鸿蒙生态圈的应用会越来越多。


采访嘉宾介绍


刘洋,目前在优酷应用中心的架构团队负责架构方面的工作,并负责主导优酷鸿蒙混合包的开发工作。


本文选自《中国卓越技术团队访谈录》(2021 年第六季),点击下载全部内容,查看更多独家专访!本期精选了京东、微众、网易数帆、优酷、恒生等技术团队在技术落地、团队建设方面的实践经验和心得体会。

《中国卓越技术团队访谈录》是 InfoQ 打造的重磅内容产品,以各个国内优秀企业的 IT 技术团队为线索策划系列采访,希望向外界传递杰出技术团队的做事方法 / 技术实践,让开发者了解他们的知识积累、技术演进、产品锤炼与团队文化等,并从中获得有价值的见解。

如果你身处传统企业经历了完整的数字化转型过程或者正在互联网公司进行创新技术的研发,并希望 InfoQ 可以关注并采访你所在的技术团队,可以添加微信:caifangfang842852,请注明来意及公司名称。

2021-12-19 12:0316751

评论

发布
暂无评论
发现更多内容

浅谈微服务框架选型

阿泽🧸

微服务 6月月更

在线JSON转Excel工具

入门小站

工具

DDD是个何许人也

卢卡多多

DDD 领域建模 6月月更

Java Core 「7」各种不同类型的锁

Samson

学习笔记 Java core 6月月更

详解MOVE PROTOCOL的测试版,让健康运动如影随形

股市老人

3个月软件测试培训出来后的感悟-写给正在迷茫是否去学软件测试

伤心的辣条

Python 程序员 程序人生 软件测试 自动化测试

读《Software Systems Architecture》(01)—— Introduction

术子米德

架构师成长笔记

读《Software Systems Architecture》(04)—— Architectural Perspectives

术子米德

架构师成长笔记

读《Software Systems Architecture》(08)—— Concerns,Principles,and Decisions

术子米德

架构师成长笔记

读《Software Systems Architecture》(09)—— Identifying and Engaging Stakeholders

术子米德

架构师成长笔记

c语言不挂科(上)

工程师日月

6月月更

读《Software Systems Architecture》(02)—— Software Architecture Concepts

术子米德

架构师成长笔记

flutter系列之:flutter中常用的Stack layout详解

程序那些事

flutter 程序那些事 6月月更

6月15号MOVE PROTOCOL上线测试版,如何参与呢?

EOSdreamer111

前端uni-app框架之实战主要技术栈day_3

恒山其若陋兮

6月月更

读《Software Systems Architecture》(06)—— Introduction to the Software Architecture Process

术子米德

架构师成长笔记

读《Software Systems Architecture》(07)—— The Architecture Definition Process

术子米德

架构师成长笔记

【Java Web 系列】Session的工作流程与基本使用

倔强的牛角

Java javaWeb session 6月月更

GetX — Flutter 开发的百宝箱

岛上码农

flutter ios 跨平台 安卓 6月月更

【愚公系列】2022年06月 通用职责分配原则(二)-创造者原则

愚公搬代码

6月月更

Elux-将企业级工程化框架带入小程序开发

hiisea

小程序 taro 前端架构 前端框架 前端工程化

读《Software Systems Architecture》(10)—— Identifying and Using Scenarios

术子米德

架构师成长笔记

Thread 源码分析

zarmnosaj

6月月更

盲盒系统新品开发,盲盒 APP 酷炫 UI 成品源码开发

WDL22119

盲盒商城 盲盒 盲盒开发 盲盒源码 盲盒H5开发

读《Software Systems Architecture》(03)—— Viewpoints and Views

术子米德

架构师成长笔记

读《Software Systems Architecture》(05)—— The Role of the Software Architect

术子米德

架构师成长笔记

linux之我常用的20条命令(之一)

入门小站

Linux

JS学习笔记之异同点

北洋

Andriod 6月月更

Maven实用技巧

Nick

Java maven 技巧 pom 6月月更

数据库每日一题---第12天:上升的温度

知心宝贝

数据库 云计算 前端 后端 6月月更

在线文本字符串转十六进制工具

入门小站

工具

从混合包开发到100%纯鸿蒙应用还有多远?优酷鸿蒙版的开发实践与思考|卓越技术团队访谈录_语言 & 开发_罗燕珊_InfoQ精选文章