卡片代码生成器 json卡片代码


卡片代码生成器 json卡片代码


背景随着华为Harmony OS2.0的发布,各大厂商纷纷抢先与华为展开合作 。优酷作为国内领先的长视频在线视听平台,与华为公司长期以来保持紧密的合作,共同为消费者带来优质的影音娱乐体验 。因此,优酷技术团队也在第一时间投入对鸿蒙系统以及鸿蒙开发者SDK的研究 。优酷技术团队经过多轮的头脑风暴,利用鸿蒙的某些新特性展开鸿蒙应用开发的尝试 。
鸿蒙OS支持应用以Ability为单位进行部署 。Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability) 。FA/PA是应用的基本组成单元,能够实现特定的业务功能 。FA有UI界面,而PA无UI界面 。
每种类型为开发者提供了不同的模板,以便实现不同的业务功能 。
鸿蒙OS的应用软件包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个HAP属性的pack.info组成 。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开 。
鸿蒙工程通过鸿蒙打包工具链打包后,其产物格式即为HAP 。
当前,包含有鸿蒙FA/PA的优酷鸿蒙版已经在华为鸿蒙应用市场上架,鸿蒙混合包在应用市场上会显示为“含HarmonyOS服务” 。如果App是100% Pure鸿蒙App,其Icon右下角会有HMOS字样 。
在手机桌面上的优酷Icon轻轻上滑,会弹出一个鸿蒙卡片,向用户推荐最近的热剧,点击卡片能快速拉起半屏落地页显示更多信息,点击落地页则跳转到优酷客户端的相应落页面 。
点击卡片上的图钉按钮,还可以将这个FA卡片固定在桌面上 。
这个FA是100%利用鸿蒙API编写的,可以脱离优酷主客独立运行 。由于FA卡片有极其严格的体积限制,而使用native的库体积则会过大 。最终,我们的Widget 通过一个Webview,加载JS版本的前端网络库去请求优酷内部的网络接口,获取到数据后再使用鸿蒙的Native图形图像API去绘制Native界面 。
这个桌面Widget与iOS桌面Widget的区别在于,它不依赖于优酷主客即可运作 。即使优酷主客不被启动,卡片的数据也能够更新 。
鸿蒙卡片的开发模式在鸿蒙系统上,触摸优酷主客的应用图标向上滑动,可以唤起优酷的鸿蒙卡片 。实现这一点需要卡片的实现代码与优酷主客做混合打包,一起提交到应用市场 。
而如果要实现服务中心免安装使用,则需要卡片的独立包总大小要小于10M 。这一体积限制使得很多Native 库都无法引入,否则无法将体积控制在红线之内 。
最终,优酷鸿蒙卡片的代码放在一个工程中,方便跟优酷主客进行混合打包 。同时,优酷鸿蒙卡片的代码仅依赖极少数的二、三方库(例如JSON解析、图片缓存等),以减小体积 。
卡片样式鸿蒙系统提供4中大小不同的卡片,根据占用桌面图标数量的不同,分别是: 1×2、2×2、2×4、4×4 。优酷卡片实现了其中两种: 2×2和2×4,其中2×2的卡片是必选项 。
下图显示了两种不同样式的卡片,以及不同的出现场景 。
桌面服务中心发现声明卡片跟Android的应用微件类似,鸿蒙的卡片也需要在一个配置文件中声明 。在一个鸿蒙应用中,每个模块都有自己的配置文件,位于该模块的代码main目录下,名字为config.json 。
在配置文件中,每个模块有一个abilities属性,其值是一个数组,数组的每一个对象都定义了一个Ability 。卡片就定义在其中一个Ability中:
{..."formsEnabled": true,"forms": [{"landscapeLayouts": ["$layout:youku_widget_2_2","$layout:youku_widget_2_4"],"isDefault": true,"defaultDimension": "2*2","name": "youku_widget","description": "$string:yk_widget_description","colorMode": "auto","type": "Java","supportDimensions": ["2*2","2*4"],"portraitLayouts": ["$layout:youku_widget_2_2","$layout:youku_widget_2_4"],"updateEnabled": true,"updateDuration": 1}],...}

推荐阅读