卡片代碼生成器 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 ??ㄆ投x在其中一個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}],...}

推薦閱讀