写点什么

从混合包开发到 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:033437

评论

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

20元咖啡,7分钱咖啡豆,钱都去哪了?

旺链科技

产业区块链 咖啡 观点

堡垒机和跳板机的三大区别分析-行云管家

行云管家

运维 堡垒机 IT运维 跳板机

一文带你掌握 OceanBase 社区版部署细节及原理

OceanBase 数据库

数据库 分布式数据库 oceanbase OceanBase 开源 OceanBase 社区版

影像篡改与识别(一):胶片时代

腾讯安全云鼎实验室

影像 暗房技术 篡改识别

入职京东:成功拿到offer薪资30K「面试经历+面试真题」

今晚早点睡

Java 秋招

由阿里三位专家撰写:数据库高效优化:架构、规范SQL技巧文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

终于有大牛把Spring微服务架构设计第2版文档给整理完毕了

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

MySQL 不完全入门指南

Java 编程 架构 面试 架构师

石油行业数据采集中的 MQTT 协议

EMQ映云科技

数据 mqtt emq 远程监控 实时数据

DEX去中心化交易所自动刷量机器人开发|去中心化做市机器人

量化系统19942438797

去中心化 做市机器人

立于山巅!他,凭什么抗住万亿级流量冲击!

博文视点Broadview

简述 Linux I/O 原理及零拷贝(上)— 磁盘 I/O

Qunar技术沙龙

Linux 缓存 Mmap 磁盘 I/O

解密优酷智能生产技术,看 AI 赋能内容数字化

阿里云视频云

音视频 短视频 视频处理 视频制作 视频云

❤️专科出身拿到阿里offer,我直呼666!【付硬核面试】❤️

编程susu

Java 编程 程序员 面试 计算机

fil矿机1T一天可以挖多少币?fil矿机能挖多久?

fil矿机能挖多久 fil矿机1T一天可以挖多少

DEX去中心化交易所自动刷量机器人开发|去中心化做市机器人

Geek_23f0c3

去中心化交易所系统开发 量化交易机器人系统开发 量化机器人 做市机器人 自动刷量机器人

【等保测评】黑龙江等保测评机构详细信息说明

行云管家

网络安全 等保 等级保护 等保测评

如何优雅的在业务中使用设计模式(代码如诗)

小呆呆666

flutter android 大前端 设计模式

简单、快捷、低成本的超写实虚拟人平台来了……

百度开发者中心

人工智能 AI 最佳实践 虚拟人 前沿技术

短视频询盘获客系统开发案例解析

获客I3O6O643Z97

抖音、快手获客系统 抖音矩阵拓客

没有7年经验你真学不会这份SpringCloud实战演练文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

20年IT老民工苦心编撰成超大流量分布式系统架构解决方案文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

论坛接口测试——Postman数据驱动(超详细小白教程)

程序员阿沐

编程 程序员 软件测试 自动化测试 接口测试

【虚拟机专栏】智能合约执行引擎的前世今生

趣链科技

微服务的痛:你的微服务还好吗?

我爱娃哈哈😍

架构设计 架构设计实战

华为高级技术专家多年经验分享微服务治理体系、架构及实践文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

文件上传绕过思路拓展

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

webrtc BitrateAllocator 带宽分配器

糖米唐爹

WebRTC

摩尔时代如何押注AI算力?英特尔战术大揭秘

科技新消息

软件测试框架之——Postman参数化(超详细小白教程)

程序员阿沐

软件测试 自动化测试 接口测试

译文 | 四张画布教你判断「产品开发优先级」

LigaAI

产品经理 产品开发 画布 产品优先级

ShadowRealm 与微前端沙箱

ShadowRealm 与微前端沙箱

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