自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

攜程鴻蒙應(yīng)用開發(fā)實(shí)踐

移動(dòng)開發(fā) 移動(dòng)應(yīng)用
作為領(lǐng)先的一站式旅游服務(wù)平臺(tái),攜程始終堅(jiān)持以技術(shù)創(chuàng)新為發(fā)展核心。自鴻蒙發(fā)布以來(lái),我們便投入研發(fā)力量進(jìn)行調(diào)研、開發(fā),并成功落地了攜程機(jī)票項(xiàng)目、服務(wù)卡片項(xiàng)目等?,F(xiàn)將鴻蒙項(xiàng)目中相關(guān)經(jīng)驗(yàn)整理分享,希望能給大家一些參考,也希望鴻蒙發(fā)展能越來(lái)越好。

?作者 | Gordon,攜程資深移動(dòng)開發(fā)工程師,關(guān)注鴻蒙開發(fā)。

背景

作為全球領(lǐng)先的一站式旅游服務(wù)平臺(tái),攜程始終堅(jiān)持以技術(shù)創(chuàng)新為發(fā)展核心。自鴻蒙發(fā)布以來(lái),我們便投入研發(fā)力量進(jìn)行調(diào)研、開發(fā),并成功落地了攜程機(jī)票項(xiàng)目、服務(wù)卡片項(xiàng)目等?,F(xiàn)將鴻蒙項(xiàng)目中相關(guān)經(jīng)驗(yàn)整理分享,希望能給大家一些參考,也希望鴻蒙發(fā)展能越來(lái)越好。

一、鴻蒙系統(tǒng)簡(jiǎn)介

華為鴻蒙HarmonyOS系統(tǒng)是面向萬(wàn)物互聯(lián)的全場(chǎng)景分布式操作系統(tǒng),目前鴻蒙系統(tǒng)已從2.0升級(jí)更新至Beta 3.0,支持手機(jī)、平板、智能穿戴、智慧屏等多種終端設(shè)備運(yùn)行,提供應(yīng)用開發(fā)、設(shè)備開發(fā)的一站式服務(wù)。

憑借多終端開發(fā)IDE,多語(yǔ)言統(tǒng)一編譯,分布式架構(gòu)Kit提供屏幕布局控件以及交互的自動(dòng)適配,支持控件拖拽,面向預(yù)覽的可視化編程,使開發(fā)者可以基于同一工程高效構(gòu)建多端自動(dòng)運(yùn)行App,實(shí)現(xiàn)真正的一次開發(fā),多端部署,在跨設(shè)備之間實(shí)現(xiàn)共享生態(tài)。

作為萬(wàn)物互聯(lián)時(shí)代的操作系統(tǒng),“分布式技術(shù)”鑄就了鴻蒙的核心競(jìng)爭(zhēng)力,在5G這個(gè)萬(wàn)物互聯(lián)的時(shí)代有著巨大的優(yōu)勢(shì)。

二、鴻蒙系統(tǒng)開發(fā)

2.1 開發(fā)語(yǔ)言

鴻蒙適合的開發(fā)語(yǔ)言是Java、JavaScript、C++,其中Java、JavaScript適合用于手機(jī)應(yīng)用UI界面開發(fā)工作,C++和JavaScript適合嵌入式設(shè)備UI界面相關(guān)開發(fā)工作。只有JavaScript寫的UI界面可以跨設(shè)備使用。

在以后的鴻蒙版本中(計(jì)劃是3.0),即將推出倉(cāng)頡語(yǔ)言開發(fā)(倉(cāng)頡語(yǔ)言是華為自主研發(fā)的一款語(yǔ)言)。目前主推的還是Java和JavaScript。

鴻蒙服務(wù)卡片開發(fā),可以使用Java和JavaScript(華為建議JavaScript),其中Java和JavaScript服務(wù)卡片場(chǎng)景及能力差異如下:

場(chǎng)景

Java卡片

JS卡片

版本

實(shí)時(shí)刷新

Java使用ComponentProvider做實(shí)時(shí)刷新代價(jià)比較大

JS可以做到端側(cè)刷新,但是需要定制化組件

HarmonyOS 2.0及以上

開發(fā)方式

Java UI在卡片提供方需要同時(shí)對(duì)數(shù)據(jù)和組件進(jìn)行處理,生成ComponentProvider遠(yuǎn)端渲染

JS卡片在使用方加載渲染,提供方只要處理數(shù)據(jù)、組件和邏輯分離

HarmonyOS 2.0及以上

組件支持

Text、Image、DirectionalLayout、PositionLayout、DependentLayout

div、list、list-item、swiper、stack、image、text、span、progress、button(定制:chart 、clock、calendar)

HarmonyOS 2.0及以上

卡片內(nèi)動(dòng)效

不支持

暫不開放

HarmonyOS 2.0及以上

陰影模糊

不支持

支持

HarmonyOS 2.0及以上

動(dòng)態(tài)適應(yīng)布局

不支持

支持

HarmonyOS 2.0及以上

自定義卡片

不支持

支持

HarmonyOS 2.0及以上

2.2 鴻蒙系統(tǒng)架構(gòu)

在說(shuō)明鴻蒙系統(tǒng)架構(gòu)之前,首先要了解AOSP(Android Open-Source Project,Android 開放源代碼項(xiàng)目)和Google Android的區(qū)別。AOSP可以隨便用,但只有經(jīng)過Google認(rèn)證的Android才能安裝GMS和Google Play。Google控制的是GMS和Google Play,無(wú)權(quán)控制Android。

HarmonyOS整體遵從分層設(shè)計(jì),從下向上依次為:內(nèi)核層、系統(tǒng)服務(wù)層、框架層和應(yīng)用層。系統(tǒng)功能按照“系統(tǒng) > 子系統(tǒng) > 功能/模塊”逐級(jí)展開,在多設(shè)備部署場(chǎng)景下,支持根據(jù)實(shí)際需求裁剪某些非必要的子系統(tǒng)或功能/模塊。

HarmonyOS技術(shù)架構(gòu)如下所示:

圖片

AOSP大致對(duì)應(yīng)圖中的UI框架+用戶程序框架+Ability框架。為了兼容Android,Harmony使用了AOSP的部分代碼,用來(lái)構(gòu)建Android應(yīng)用兼容層來(lái)運(yùn)行Android應(yīng)用。鴻蒙框架解析后將數(shù)據(jù)交給了Android,由Android的負(fù)責(zé)將其渲染在SurfaceView上。

HarmonyOS采用多內(nèi)核設(shè)計(jì),支持針對(duì)不同資源受限設(shè)備選用適合的OS內(nèi)核。內(nèi)核抽象層(KAL,Kernel Abstract Layer)通過屏蔽多內(nèi)核差異,對(duì)上層提供基礎(chǔ)的內(nèi)核能力,包括進(jìn)程/線程管理、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)管理和外設(shè)管理等。

系統(tǒng)服務(wù)層分布式軟總線技術(shù)將物聯(lián)網(wǎng)通訊技術(shù)(NFC、藍(lán)牙、WIFI……)與協(xié)議(CoAP、RPC……)做了良好的封裝,以及對(duì)數(shù)據(jù)格式(HarmonyOS IDL)以及服務(wù)(PA)做了良好的抽象,使局域網(wǎng)內(nèi)的設(shè)備之間可以方便的通訊、交換數(shù)據(jù)、調(diào)用遠(yuǎn)程服務(wù),設(shè)備之間仿佛融為一體。

框架層為HarmonyOS應(yīng)用開發(fā)提供了Java/C/C++/JS/TS等多語(yǔ)言的用戶程序框架和Ability框架,兩種UI框架(包括適用于Java語(yǔ)言的Java UI框架、適用于JS/TS語(yǔ)言的方舟開發(fā)框架),以及各種軟硬件服務(wù)對(duì)外開放的多語(yǔ)言框架API。

應(yīng)用層包括系統(tǒng)應(yīng)用和第三方非系統(tǒng)應(yīng)用。HarmonyOS的應(yīng)用由一個(gè)或多個(gè)FA(Feature Ability)或PA(Particle Ability)組成。其中,F(xiàn)A有UI界面,提供與用戶交互的能力;而PA無(wú)UI界面,提供后臺(tái)運(yùn)行任務(wù)的能力以及統(tǒng)一的數(shù)據(jù)訪問抽象。FA在進(jìn)行用戶交互時(shí)所需的后臺(tái)數(shù)據(jù)訪問也需要由對(duì)應(yīng)的PA提供支撐?;贔A/PA開發(fā)的應(yīng)用,能夠?qū)崿F(xiàn)特定的業(yè)務(wù)功能,支持跨設(shè)備調(diào)度與分發(fā),為用戶提供一致、高效的應(yīng)用體驗(yàn)。

我們今天主要從應(yīng)用層開發(fā)方面展開。

三、攜程鴻蒙服務(wù)卡片

攜程很早就在鴻蒙OS發(fā)力,基于HarmonyOS分布式能力,開發(fā)了攜程機(jī)票手機(jī)、手表聯(lián)動(dòng)項(xiàng)目。在HarmonyOS推出原子化能力后,又上線了攜程會(huì)員中心、核酸檢測(cè)、攜程火車票服務(wù)卡片,以期給到用戶更多的選擇。

圖片

3.1 開發(fā)流程

通過HarmonyOS 系統(tǒng)能力、開發(fā)指導(dǎo)、API參考等文檔,利用 HUAWEI DevEco Studio 開發(fā)工具,開發(fā)不同設(shè)備的應(yīng)用,為用戶帶來(lái)全場(chǎng)景體驗(yàn)。

總結(jié)起來(lái),整個(gè)開發(fā)流程分為開發(fā)準(zhǔn)備、應(yīng)用開發(fā)、應(yīng)用測(cè)試、應(yīng)用發(fā)布幾個(gè)流程。

階段

流程

開發(fā)準(zhǔn)備

  1. 成為華為開發(fā)者(個(gè)人/企業(yè))
  2. 安裝DevEco Studio
  3. 配置開發(fā)環(huán)境

編寫代碼

  1. 創(chuàng)建工程
  2. 編寫調(diào)試代碼
  3. 預(yù)覽查看布局效果

應(yīng)用測(cè)試

  1. 申請(qǐng)調(diào)測(cè)證書
  2. 調(diào)試應(yīng)用
  3. 隱私、漏洞、性能等測(cè)試

發(fā)布

  1. 申請(qǐng)發(fā)布證書
  2. 發(fā)布應(yīng)用至華為商店

3.2 服務(wù)卡片

服務(wù)卡片(以下簡(jiǎn)稱“卡片”)是FA的一種界面展示形式,將FA的重要信息或操作前置到卡片,以達(dá)到服務(wù)直達(dá),減少體驗(yàn)層級(jí)的目的。

圖片

經(jīng)調(diào)研,從安卓到鴻蒙,最明顯的變化應(yīng)該就是服務(wù)卡片。故我們計(jì)劃以服務(wù)卡片作為切入點(diǎn),實(shí)現(xiàn)攜程鴻蒙服務(wù)卡片功能。經(jīng)過版本逐步迭代,目前已上線了會(huì)員簽到、核酸檢測(cè)、搶火車票等功能。

由于整個(gè)開發(fā)流程中,開發(fā)準(zhǔn)備和發(fā)布流程參考文檔即可完成,僅從編寫代碼和應(yīng)用測(cè)試兩方面展開,給大家簡(jiǎn)單介紹一下。

3.3 服務(wù)卡片開發(fā)

考慮快速開發(fā)上線的需求,我們調(diào)研使用鴻蒙Native+Webview混合開發(fā)的模式,通過Native層處理持久化等相關(guān)能力,Webview實(shí)現(xiàn)功能進(jìn)行展開。

3.3.1 鴻蒙Webview實(shí)現(xiàn)功能?

首先,通過XML布局文件進(jìn)行操作:

<ohos.agp.components.webengine.WebView
ohos:id="$+id:health_webview"
ohos:height="match_parent"
ohos:width="match_parent"/>

注意:ohos.agp.components.webengine.WebView和WebView都是有提示的。但WebView與ohos.agp.components.webengine.WebView并不等價(jià),這可能是鴻蒙的一個(gè)漏洞,直接輸入 WebView 并不能使用這個(gè)組件。

然后在Native代碼中實(shí)例化Webview:

private void initWebview(){
WebConfig webConfig = webView.getWebConfig();
if (null != webConfig){
webConfig.setWebStoragePermit(true);//
webConfig.setJavaScriptPermit(true); // 如果網(wǎng)頁(yè)需要使用JavaScript,增加此行;
webConfig.setSecurityMode(WebConfig.SECURITY_ALLOW);
webConfig.setLocationPermit(true);
webConfig.setDataAbilityPermit(true);
webConfig.setMediaAutoReplay(true);
webConfig.isLoadsImagesPermitted();//webview是否下載圖片資源
webConfig.setTextAutoSizing(true);
webConfig.setViewPortFitScreen(true);
}
setWebViewCookie();
this.webView.setWebAgent(new TripWebAgent());
webView.load(HEALTH_URL);
}

3.3.2 服務(wù)卡片配置?

卡片應(yīng)用是一款特殊的元能力服務(wù),其配置文件config.json中聲明以下幾項(xiàng),系統(tǒng)能夠識(shí)別該應(yīng)用為一款卡片應(yīng)用,并與系統(tǒng)進(jìn)行綁定。?config.json文件"abilities"配置forms模塊細(xì)節(jié)如下:

"forms": [
{
"landscapeLayouts": [
"$layout:health_2_2",
"$layout:health_2_4"
],
"isDefault": true,
"scheduledUpdateTime": "10:30",
"defaultDimension": "2*2",
"name": "health",
"description": "$string:health_title",
"colorMode": "auto",
"type": "Java",
"supportDimensions": [
"2*2",
"2*4"
],
"portraitLayouts": [
"$layout:health_2_2",
"$layout:health_2_4"
],
"updateEnabled": true,
"updateDuration": 1
}
]

鴻蒙服務(wù)卡片有4種尺寸,分別是微卡片(1*2)、小卡片(2*2)、中卡片(2*4)、大卡片(4*4),同一個(gè)應(yīng)用還支持多種不同類型的服務(wù)卡片,不同尺寸與類型可以通過卡片管理界面進(jìn)行切換和選擇。      其設(shè)計(jì)的初衷就是信息顯示、服務(wù)直達(dá),基于以上原則,我們選擇了攜程App中幾個(gè)常用的功能來(lái)實(shí)現(xiàn)服務(wù)卡片,每個(gè)功能分別實(shí)現(xiàn)了小卡片和中卡片兩種樣式。

圖片

3.4 服務(wù)卡片測(cè)試

開發(fā)完代碼后,接下來(lái)就可以使用真機(jī)進(jìn)行調(diào)試了,使用真機(jī)設(shè)備進(jìn)行調(diào)試前,需要對(duì)HAP進(jìn)行簽名后進(jìn)行調(diào)試。詳細(xì)的調(diào)試流程如下圖所示。

圖片

針對(duì)原子化服務(wù)和應(yīng)用的簽名,DevEco Studio為開發(fā)者提供了自動(dòng)化簽名方案,幫助開發(fā)者高效進(jìn)行調(diào)試。

當(dāng)前只有受邀請(qǐng)開發(fā)者才能訪問證書管理菜單。如果AGC頁(yè)面未展示證書管理菜單,開發(fā)者需發(fā)送名稱、申請(qǐng)背景及Developer ID至agconnect@huawei.com,等待華為受理。

進(jìn)入File > Project Structure > Project > Signing Configs界面,勾選“Automatically generate signing”,即可完成簽名。

圖片

若發(fā)布應(yīng)用/服務(wù),需通過申請(qǐng)數(shù)字證書(.cer文件)和Profile文件(.p7b文件)來(lái)保證其完整性。申請(qǐng)前,首先需要通過DevEco Studio來(lái)生成密鑰(存儲(chǔ)在格式為.p12的密鑰庫(kù)文件中)和證書請(qǐng)求文件(.csr文件),同時(shí)也可以使用命令行工具的方式來(lái)生成。

圖片

設(shè)置完簽名信息后,使用DevEco Studio生成APP。點(diǎn)擊Build > Build Hap(s)/APP(s) > Build APP(s),等待編譯構(gòu)建完成已簽名的APP。

編譯構(gòu)建完成后,可以在build > outputs > app > release目錄下,獲取帶簽名的APP。

圖片

將HarmonyOS應(yīng)用打包成APP后,通過AppGallery Connect將HarmonyOS應(yīng)用分發(fā)到不同的設(shè)備上。可以根據(jù)發(fā)布HarmonyOS應(yīng)用指導(dǎo)將APP上架到華為應(yīng)用市場(chǎng)。

四、未來(lái)展望

除了華為的HarmonyOS,還有谷歌的Fuchsia、蘋果的SiriOS、三星SmartTings、騰訊TencentOS tiny等等,可見未來(lái)IOT市場(chǎng)中,內(nèi)卷競(jìng)爭(zhēng)化會(huì)比智能手機(jī)時(shí)代的操作系統(tǒng)更加劇烈和難以預(yù)測(cè)。鴻蒙生態(tài)鏈仍處于早期階段,各方面仍待完善。

責(zé)任編輯:未麗燕 來(lái)源: 攜程技術(shù)
相關(guān)推薦

2022-05-13 09:27:55

Widget機(jī)票業(yè)務(wù)App

2022-06-27 09:36:29

攜程度假GraphQL多端開發(fā)

2024-12-18 10:20:00

攜程鴻蒙開發(fā)

2022-07-15 09:20:17

性能優(yōu)化方案

2022-08-12 08:34:32

攜程數(shù)據(jù)庫(kù)上云

2023-02-08 16:34:05

數(shù)據(jù)庫(kù)工具

2022-07-08 09:38:27

攜程酒店Flutter技術(shù)跨平臺(tái)整合

2022-09-09 15:49:03

攜程火車票組件化管理優(yōu)化

2022-08-20 07:46:03

Dynamo攜程數(shù)據(jù)庫(kù)

2023-07-07 12:26:39

攜程開發(fā)

2022-06-03 09:21:47

Svelte前端攜程

2023-04-14 10:29:24

小程序實(shí)踐

2023-12-15 10:05:58

攜程網(wǎng)絡(luò)

2022-05-27 09:52:36

攜程TS運(yùn)營(yíng)AI

2023-08-18 10:49:14

開發(fā)攜程

2024-07-05 15:05:00

2023-05-12 10:14:38

APP開發(fā)

2023-08-25 09:51:21

前端開發(fā)

2020-12-04 14:32:33

AndroidJetpackKotlin

2022-12-14 10:09:44

研發(fā)效能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)