国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

鴻蒙(HarmonyOS)應(yīng)用開發(fā)指南

這篇具有很好參考價(jià)值的文章主要介紹了鴻蒙(HarmonyOS)應(yīng)用開發(fā)指南。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 概述

1.1 簡(jiǎn)介

鴻蒙(即 HarmonyOS ,開發(fā)代號(hào) Ark,正式名稱為華為終端鴻蒙智能設(shè)備操作系統(tǒng)軟件)是華為公司自 2012 年以來開發(fā)的一款可支持鴻蒙原生應(yīng)用和兼容 AOSP 應(yīng)用的分布式操作系統(tǒng)。該系統(tǒng)利用“分布式”技術(shù)將手機(jī)、電腦、平板、電視、汽車和智能穿戴等多款設(shè)備融合成一個(gè)“超級(jí)終端”,使用戶便于操作和共享各種設(shè)備的資源。

1.2 本文讀者收獲

  • 幫助開發(fā)者全面了解 HarmonyOS 系統(tǒng)

  • 引導(dǎo)開發(fā)者從 0 到 1 上手 HarmonyOS 應(yīng)用開發(fā)

1.3 鴻蒙開發(fā)基礎(chǔ)

1.3.1 鴻蒙應(yīng)用開發(fā)框架概述

鴻蒙應(yīng)用開發(fā)框架是鴻蒙系統(tǒng)提供的一套開發(fā)工具和框架,用于幫助開發(fā)者快速構(gòu)建鴻蒙應(yīng)用。它提供了一系列的 API 和組件,使開發(fā)者可以方便地進(jìn)行應(yīng)用的開發(fā)、測(cè)試和發(fā)布。鴻蒙應(yīng)用開發(fā)框架支持多種開發(fā)語(yǔ)言,包括 Java、C++、JavaScript、ArkTS 等,開發(fā)者可以根據(jù)自己的需求選擇合適的開發(fā)語(yǔ)言進(jìn)行開發(fā)。

1.3.2 鴻蒙應(yīng)用開發(fā)框架的主要特點(diǎn)

跨平臺(tái)開發(fā):鴻蒙應(yīng)用開發(fā)框架支持多種平臺(tái),包括手機(jī)、平板、電視、汽車等,開發(fā)者可以使用同一套代碼開發(fā)適配不同平臺(tái)的應(yīng)用,大大提高了開發(fā)效率。

模塊化開發(fā):鴻蒙應(yīng)用開發(fā)框架采用模塊化的設(shè)計(jì),開發(fā)者可以根據(jù)需要選擇所需的功能模塊進(jìn)行開發(fā),避免了不必要的代碼冗余,提高了代碼的可維護(hù)性和可重用性。

靈活的布局和界面設(shè)計(jì):鴻蒙應(yīng)用開發(fā)框架提供了豐富的布局和界面設(shè)計(jì)工具,開發(fā)者可以靈活地設(shè)計(jì)應(yīng)用的界面,實(shí)現(xiàn)豐富多樣的交互效果,提升用戶體驗(yàn)。

強(qiáng)大的性能優(yōu)化和調(diào)試工具:鴻蒙應(yīng)用開發(fā)框架提供了一系列的性能優(yōu)化和調(diào)試工具,開發(fā)者可以通過這些工具對(duì)應(yīng)用進(jìn)行性能優(yōu)化和調(diào)試,提高應(yīng)用的運(yùn)行效率和穩(wěn)定性。

1.3.3 語(yǔ)言和開發(fā)范式概念

當(dāng)我們首次創(chuàng)建鴻蒙程序時(shí),會(huì)面臨模型的選擇,如下圖:

asynccallback 鴻蒙,harmonyos,華為

HarmonyOS 中的兩種開發(fā)范式:

名稱 語(yǔ)言生態(tài) UI 更新方式 適用場(chǎng)景 適用人群
聲明式開發(fā)范式 ArkTS 數(shù)據(jù)驅(qū)動(dòng)更新 復(fù)雜度較大、團(tuán)隊(duì)合作度較高的程序 移動(dòng)系統(tǒng)應(yīng)用開發(fā)人員、系統(tǒng)應(yīng)用開發(fā)人員
類 Web 開發(fā)范式 JS 數(shù)據(jù)驅(qū)動(dòng)更新 界面較為簡(jiǎn)單的程序應(yīng)用和卡片 Web 前端開發(fā)人員

語(yǔ)言選擇

  • ArkTS:只支持 Stage 模型

  • JS:支持 Stage 模型 和 FA 模型

模型概念

HarmonyOS 的兩種模型,是歷史的產(chǎn)物,可以理解為設(shè)計(jì)模式。

FA(Feature Ability)模型:HarmonyOS API 7 開始支持的模型,已經(jīng)不再主推。FA 模型開發(fā)可見 FA 模型開發(fā)概述。

Stage 模型:HarmonyOS API 9 開始新增的模型,是目前主推且會(huì)長(zhǎng)期演進(jìn)的模型。在該模型中,由于提供了 AbilityStage、WindowStage 等類作為應(yīng)用組件和 Window 窗口的“舞臺(tái)”,因此稱這種應(yīng)用模型為 Stage 模型。Stage 模型開發(fā)可見Stage 模型開發(fā)概述。Stage 模型架構(gòu)如下圖:

asynccallback 鴻蒙,harmonyos,華為
Stage模型概念圖
  • 目前官方主推 Stage 模型

  • 針對(duì) Stage 模型衍生出的聲明式開發(fā)更優(yōu)的開發(fā)框架

  • ArkTS 優(yōu)于 JS

  • 我們認(rèn)為,以上選型是目前(SDK 3.1.0 API 9)最優(yōu)解/最佳實(shí)踐即:Stage 模型+ArkTS+聲明式。

2. 鴻蒙應(yīng)用開發(fā)環(huán)境搭建

2.1 安裝鴻蒙 DevEco Studio

步驟 1:下載 DevEco Studio SDK https://developer.harmonyos.com/cn/develop/deveco-studio#download

2.2 配置開發(fā)環(huán)境

2.2.1 (可選)配置 Proxy

步驟 2:網(wǎng)絡(luò)不能直接訪問 Internet,可通過設(shè)置代理服務(wù)器進(jìn)行訪問。如果無(wú)需代理即可訪問 Internet,將跳過該步驟。

2.2.2 安裝 Node.js 和 ohpm

步驟 3:指定本地已安裝的 Node.js/ohpm,或在線下載安裝 Node.js 與 ohpm。可以指定本地已安裝的 Node.js 或 ohpm(Node.js 版本要求為 v14.19.1 及以上,且低于 v17.0.0;對(duì)應(yīng)的 npm 版本要求為 6.14.16 及以上)路徑位置;如果本地沒有合適的版本,可以選擇 Install 按鈕,選擇下載源和存儲(chǔ)路徑后,進(jìn)行在線下載,單擊 Next 進(jìn)入下一步。

2.2.3 下載 HarmonyOS SDK
asynccallback 鴻蒙,harmonyos,華為
2.2.4 創(chuàng)建鴻蒙應(yīng)用
asynccallback 鴻蒙,harmonyos,華為
2.2.5 運(yùn)行項(xiàng)目

單擊 DevEco Studio 工具欄中的按鈕????運(yùn)行工程,或使用默認(rèn)快捷鍵 Shift+F10( macOS 為 Control+R )運(yùn)行工程。

3. 開發(fā)指南

3.1 項(xiàng)目與配置

3.1.1 項(xiàng)目結(jié)構(gòu)
asynccallback 鴻蒙,harmonyos,華為
項(xiàng)目結(jié)構(gòu)
3.1.2 配置文件含義

AppScope > app.json5:應(yīng)用的全局配置信息。

entry:HarmonyOS 工程模塊,編譯構(gòu)建生成一個(gè) HAP 包。

  • src > main > ets:用于存放 ArkTS 源碼。

  • src > main > ets > entryability:應(yīng)用/服務(wù)的入口。

  • src > main > ets > pages:應(yīng)用/服務(wù)包含的頁(yè)面。

  • src > main > resources:用于存放應(yīng)用/服務(wù)所用到的資源文件,如圖形、多媒體、字符串、布局文件等。關(guān)于資源文件,詳見資源分類與訪問。

  • src > main > module.json5:Stage 模型模塊配置文件。主要包含 HAP 包的配置信息、應(yīng)用/服務(wù)在具體設(shè)備上的配置信息以及應(yīng)用/服務(wù)的全局配置信息。具體的配置文件說明,詳見 module.json5 配置文件。

  • build-profile.json5:當(dāng)前的模塊信息、編譯信息配置項(xiàng),包括 buildOption、targets 配置等。其中 targets 中可配置當(dāng)前運(yùn)行環(huán)境,默認(rèn)為 HarmonyOS。

  • hvigorfile.ts:模塊級(jí)編譯構(gòu)建任務(wù)腳本,開發(fā)者可以自定義相關(guān)任務(wù)和代碼實(shí)現(xiàn)。

  • oh_modules:用于存放三方庫(kù)依賴信息。關(guān)于原 npm 工程適配 ohpm 操作,請(qǐng)參考?xì)v史工程遷移。

  • build-profile.json5:應(yīng)用級(jí)配置信息,包括簽名、產(chǎn)品配置等。

  • hvigorfile.ts:應(yīng)用級(jí)編譯構(gòu)建任務(wù)腳本。

3.2 ArkUI 框架

3.2.1 ArkUI 定義

ArkTS 是 HarmonyOS 優(yōu)選的主力應(yīng)用開發(fā)語(yǔ)言,在 TS 基礎(chǔ)上發(fā)展而來?;?ArkTS 的聲明式開發(fā)范式的方舟開發(fā)框架是一套開發(fā)極簡(jiǎn)、高性能、支持跨設(shè)備的 UI 開發(fā)框架,提供了構(gòu)建 HarmonyOS 應(yīng)用 UI 所必需的能力。

asynccallback 鴻蒙,harmonyos,華為
ArkUI框架架構(gòu)
3.2.2 ArkTS 聲明式 UI 的基本組成
asynccallback 鴻蒙,harmonyos,華為
ArkTS的基本組成
3.2.3 ArkTS 特點(diǎn)
  • 開發(fā)效率高,開發(fā)體驗(yàn)好

  • 性能優(yōu)越

  • 生態(tài)容易快速推進(jìn)

3.3 組件與布局匯總(API 9)

3.3.1 匯總
asynccallback 鴻蒙,harmonyos,華為
3.3.2 XComponent 的使用

ArkUI 框架提供了基于 XComponent 組件的 C++ 自繪制引擎接入(比如游戲引擎)能力,和基于 Web 組件的 HTML5/Web 的渲染能力。滿足了開發(fā)者在游戲、相機(jī)、地圖、瀏覽器等復(fù)雜應(yīng)用場(chǎng)景的開發(fā)訴求,降低了這類應(yīng)用移植的門檻。

XComponent({id:'',type:'texture',librayname:'nativerender'})
.onload((context)=>{

})
.onDestroy(()=>{

})

3.4 界面開發(fā)

3.4.1 網(wǎng)絡(luò)請(qǐng)求
  • @ohos.net.http(API6)

  • @system.fetch(API3)

完整示例

//?引入包名
import?http?from?'@ohos.net.http';

//?每一個(gè)httpRequest對(duì)應(yīng)一個(gè)HTTP請(qǐng)求任務(wù),不可復(fù)用
let?httpRequest?=?http.createHttp();
//?用于訂閱HTTP響應(yīng)頭,此接口會(huì)比request請(qǐng)求先返回??梢愿鶕?jù)業(yè)務(wù)需要訂閱此消息
//?從API 8開始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。8+
httpRequest.on('headersReceive',?(header)?=>?{
????console.info('header:?'?+?JSON.stringify(header));
});
httpRequest.request(
????//?填寫HTTP請(qǐng)求的URL地址,可以帶參數(shù)也可以不帶參數(shù)。URL地址需要開發(fā)者自定義。請(qǐng)求的參數(shù)可以在extraData中指定
????"EXAMPLE_URL",
????{
????????method:?http.RequestMethod.POST,?//?可選,默認(rèn)為http.RequestMethod.GET
????????//?開發(fā)者根據(jù)自身業(yè)務(wù)需要添加header字段
????????header:?{
????????????'Content-Type':?'application/json'
????????},
????????//?當(dāng)使用POST請(qǐng)求時(shí)此字段用于傳遞內(nèi)容
????????extraData:?{
????????????"data":?"data?to?send",
????????},
????????expectDataType:?http.HttpDataType.STRING,?//?可選,指定返回?cái)?shù)據(jù)的類型
????????usingCache:?true,?//?可選,默認(rèn)為true
????????priority:?1,?//?可選,默認(rèn)為1
????????connectTimeout:?60000,?//?可選,默認(rèn)為60000ms
????????readTimeout:?60000,?//?可選,默認(rèn)為60000ms
????????usingProtocol:?http.HttpProtocol.HTTP1_1,?//?可選,協(xié)議類型默認(rèn)值由系統(tǒng)自動(dòng)指定
????},?(err,?data)?=>?{
????????if?(!err)?{
????????????//?data.result為HTTP響應(yīng)內(nèi)容,可根據(jù)業(yè)務(wù)需要進(jìn)行解析
????????????console.info('Result:'?+?JSON.stringify(data.result));
????????????console.info('code:'?+?JSON.stringify(data.responseCode));
????????????//?data.header為HTTP響應(yīng)頭,可根據(jù)業(yè)務(wù)需要進(jìn)行解析
????????????console.info('header:'?+?JSON.stringify(data.header));
????????????console.info('cookies:'?+?JSON.stringify(data.cookies));?//?8+
????????????//?取消訂閱HTTP響應(yīng)頭事件
????????????httpRequest.off('headersReceive');
????????????//?當(dāng)該請(qǐng)求使用完畢時(shí),調(diào)用destroy方法主動(dòng)銷毀
????????????httpRequest.destroy();
????????}?else?{
????????????console.info('error:'?+?JSON.stringify(err));
????????????//?取消訂閱HTTP響應(yīng)頭事件
????????????httpRequest.off('headersReceive');
????????????//?當(dāng)該請(qǐng)求使用完畢時(shí),調(diào)用destroy方法主動(dòng)銷毀。
????????????httpRequest.destroy();
????????}
????}
);
3.4.2 數(shù)據(jù)存儲(chǔ)
  • @ohos.data.storage(輕量)

  • @ohos.data.rdb(關(guān)系型數(shù)據(jù)庫(kù))

  • @ohos.data.distributedData(分布式數(shù)據(jù)管理)

  • 數(shù)據(jù)存儲(chǔ)分類概念圖

asynccallback 鴻蒙,harmonyos,華為
數(shù)據(jù)存儲(chǔ)分類
3.4.3 頁(yè)面路由
  • @ohos.router(API8)

  • @system.router(API3)

//?index頁(yè)面
export?default?{
indexPushPage()?{
??router.push({
????uri:?'pages/detail/detail'
??});
}
}
3.4.4 app 模塊
  • @system.app(API3)

3.5 權(quán)限管理

3.5.1 應(yīng)用權(quán)限管理

HarmonyOS 中 所有的應(yīng)用均在應(yīng)用沙盒內(nèi)運(yùn)行。默認(rèn)情況下,應(yīng)用只能訪問有限的系統(tǒng)資源,系統(tǒng)負(fù)責(zé)管理應(yīng)用對(duì)資源的訪問權(quán)限。

應(yīng)用權(quán)限管理是由接口提供方(Ability)、接口使用方(應(yīng)用)、系統(tǒng)(包括云側(cè)和端側(cè))以及用戶等多方共同參與的整個(gè)流程,保證受限接口是在約定好的規(guī)則下被正常使用,避免接口被濫用而導(dǎo)致用戶、應(yīng)用和設(shè)備受損。

3.5.2 敏感權(quán)限

涉及訪問個(gè)人數(shù)據(jù)(如:照片、通訊錄、日歷、本機(jī)號(hào)碼、短信等)和操作敏感能力(如:相機(jī)、麥克風(fēng)等)的權(quán)限。

3.5.3 權(quán)限申請(qǐng)過程
//1.定義
{
????"module":?{
????????"reqPermissions":?[
????????????{
????????????????"name":?"ohos.permission.CAMERA",
????????????????"reason":?"$string:permreason_camera",
????????????????"usedScene":
????????????????{
????????????????????"ability":?["com.mycamera.Ability",?"com.mycamera.AbilityBackground"],
????????????????????"when":?"always"
????????????????}
????????????},{
????????????...
????????????}
????????]
????}
}
  • name : 必須,填寫需要使用的權(quán)限名稱。

  • reason: 失敗原因,可選,當(dāng)申請(qǐng)的權(quán)限為 user_grant 權(quán)限時(shí)此字段必填。

  • usedScene:可選,當(dāng)申請(qǐng)的權(quán)限為 user_grant 權(quán)限時(shí)此字段必填。描述權(quán)限使用的場(chǎng)景和時(shí)機(jī)。場(chǎng)景類型有:ability、when(調(diào)用時(shí)機(jī))??膳渲枚鄠€(gè) ability。

3.5.4 動(dòng)態(tài)申請(qǐng)
//2.?動(dòng)態(tài)申請(qǐng)
??if?(verifySelfPermission("ohos.permission.CAMERA")?!=?IBundleManager.PERMISSION_GRANTED)?{
????//?應(yīng)用未被授予權(quán)限
????if?(canRequestPermission("ohos.permission.CAMERA"))?{
????????//?是否可以申請(qǐng)彈框授權(quán)(首次申請(qǐng)或者用戶未選擇禁止且不再提示)
????????requestPermissionsFromUser(
????????????????new?String[]?{?"ohos.permission.CAMERA"?}?,?MY_PERMISSIONS_REQUEST_CAMERA);
????}?else?{
????????//?顯示應(yīng)用需要權(quán)限的理由,提示用戶進(jìn)入設(shè)置授權(quán)
????}
}?else?{
????//?權(quán)限已被授予
}
3.5.5 權(quán)限使用原則
  • 權(quán)限申請(qǐng)最小化。跟用戶提供的功能無(wú)關(guān)的權(quán)限,不要申請(qǐng);盡量采用其他無(wú)需權(quán)限的操作來實(shí)現(xiàn)相應(yīng)功能(如:通過 intent 拉起系統(tǒng) UI 界面由用戶交互、應(yīng)用自己生成 uuid 代替設(shè)備 ID 等)。

  • 權(quán)限申請(qǐng)完整。應(yīng)用所需權(quán)限(包括應(yīng)用調(diào)用到的三方庫(kù)依賴的權(quán)限)都要逐個(gè)在應(yīng)用的 config.json 中按格式聲明。

  • 滿足用戶可知。應(yīng)用申請(qǐng)的敏感權(quán)限的目的需要真實(shí)準(zhǔn)確告知用戶。

  • 權(quán)限就近申請(qǐng)。應(yīng)用在用戶觸發(fā)相關(guān)業(yè)務(wù)功能時(shí),就近提示用戶授予實(shí)現(xiàn)此功能所需的權(quán)限。

  • 權(quán)限不擴(kuò)散。在用戶未授權(quán)的情況下,不允許提供給其他應(yīng)用使用。

  • 應(yīng)用自定義權(quán)限防止重名。建議以包名為前綴來命名權(quán)限,防止跟系統(tǒng)定義的權(quán)限重名。

3.6 狀態(tài)管理

3.6.1 狀態(tài)管理雙向交互
asynccallback 鴻蒙,harmonyos,華為
雙向
3.6.2 @State 使用
@Component
struct?MyComponent?{
??@State?count:?number?=?0;
??private?increaseBy:?number?=?1;

??build()?{
??}
}

@Component
struct?Parent?{
??build()?{
????Column()?{
??????//?從父組件初始化,覆蓋本地定義的默認(rèn)值
??????MyComponent({?count:?1,?increaseBy:?2?})
????}
??}
}
3.6.3 Components 級(jí)別的狀態(tài)管理
  • @State:@State 裝飾的變量擁有其所屬組件的狀態(tài),可以作為其子組件單向和雙向同步的數(shù)據(jù)源。當(dāng)其數(shù)值改變時(shí),會(huì)引起相關(guān)組件的渲染刷新。

  • @Prop:@Prop 裝飾的變量可以和父組件建立單向同步關(guān)系,@Prop 裝飾的變量是可變的,但修改不會(huì)同步回父組件。

  • @Link:@Link 裝飾的變量和父組件構(gòu)建雙向同步關(guān)系的狀態(tài)變量,父組件會(huì)接受來自 @Link 裝飾的變量的修改的同步,父組件的更新也會(huì)同步給 @Link 裝飾的變量。

  • @Provide/@Consume:@Provide/@Consume 裝飾的變量用于跨組件層級(jí)(多層組件)同步狀態(tài)變量,可以不需要通過參數(shù)命名機(jī)制傳遞,通過 alias(別名)或者屬性名綁定。

  • @Observed:@Observed 裝飾 class,需要觀察多層嵌套場(chǎng)景的 class 需要被 @Observed 裝飾。單獨(dú)使用 @Observed 沒有任何作用,需要和 @ObjectLink、@Prop 連用。

  • @ObjectLink:@ObjectLink 裝飾的變量接收 @Observed 裝飾的 class 的實(shí)例,應(yīng)用于觀察多層嵌套場(chǎng)景,和父組件的數(shù)據(jù)源構(gòu)建雙向同步。

asynccallback 鴻蒙,harmonyos,華為
Components裝飾器
  • @StorageLink/@LocalStorageLink 實(shí)現(xiàn)應(yīng)用和組件狀態(tài)的雙向同步,通過@StorageProp/@LocalStorageProp 實(shí)現(xiàn)應(yīng)用和組件狀態(tài)的單向同步

  • 其他狀態(tài)裝飾器

    • @Watch 用于監(jiān)聽狀態(tài)變量的變化

3.7 線程通信

  • HarmonyOS 應(yīng)用中每個(gè)進(jìn)程都會(huì)有一個(gè)主線程,其中主線程作用如下:

  1. 執(zhí)行 UI 繪制;

  2. 管理主線程的 ArkTS 引擎實(shí)例,使多個(gè) UIAbility 組件能夠運(yùn)行在其之上;

  3. 管理其他線程(例如 Worker 線程)的 ArkTS 引擎實(shí)例,例如啟動(dòng)和終止其他線程;

  4. 分發(fā)交互事件;

  5. 處理應(yīng)用代碼的回調(diào),包括事件處理和生命周期管理;

  6. 接收 Worker 線程發(fā)送的消息;

  • 主線程之外,用戶最多可以創(chuàng)建 8 個(gè)子線程

asynccallback 鴻蒙,harmonyos,華為
子線程與主線程
  • 主線程與子線程通信:

使用 Emitter,Emitter:訂閱和發(fā)送發(fā)送事件

import?emitter?from?"@ohos.events.emitter";
//?訂閱eventId為1的事件
emitter.on({eventId:?1},?callback);
//?發(fā)送eventId為1的事件,事件內(nèi)容為eventData
emitter.emit(event,?eventData);

使用 Worker 進(jìn)行通信

//?1.在工程的模塊級(jí)build-profile.json5文件的buildOption屬性中添加配置信息
"buildOption":?{
????"sourceOption":?{
??????"workers":?[
????????"./src/main/ets/workers/worker.ts"
??????]
????}
??}
// 2.根據(jù)build-profile.json5中的配置創(chuàng)建對(duì)應(yīng)的worker.ts文件。
import?worker?from?'@ohos.worker';

let?parent?=?worker.workerPort;

//?處理來自主線程的消息
parent.onmessage?=?function(message)?{
????console.info("onmessage:?"?+?message)
????//?發(fā)送消息到主線程
????parent.postMessage("message?from?worker?thread.")
}

//?3.主線程中使用如下方式初始化和使用worker?(Stage模型)
import?worker?from?'@ohos.worker';

let?wk?=?new?worker.ThreadWorker("entry/ets/workers/worker.ts");

//?發(fā)送消息到worker線程
wk.postMessage("message?from?main?thread.")

//?處理來自worker線程的消息
wk.onmessage?=?function(message)?{
????console.info("message?from?worker:?"?+?message)

????//?根據(jù)業(yè)務(wù)按需停止worker線程
????wk.terminate()
}

3.8 進(jìn)程通信

3.8.1 進(jìn)程通信兩種實(shí)現(xiàn)
  • IPC(Inter-Process Communication)

    • 使用 Binder 驅(qū)動(dòng)

  • RPC(Remote Procedure Call)

    • 使用軟總線驅(qū)動(dòng)

3.8.2 實(shí)現(xiàn)步驟
  • 實(shí)現(xiàn)接口類:需繼承 IRemoteBroker,需定義消息碼,可聲明不在此類實(shí)現(xiàn)的方法。

  • 實(shí)現(xiàn)服務(wù)提供端(Stub):需繼承 IRemoteStub 或者 RemoteObject,需重寫 AsObject 方法及 OnRemoteRequest 方法。

  • 實(shí)現(xiàn)服務(wù)請(qǐng)求端(Proxy):需繼承 IRemoteProxy 或 RemoteProxy,需重寫 AsObject 方法,封裝所需方法調(diào)用 SendRequest。

  • 注冊(cè) SA:申請(qǐng) SA 的唯一 ID,向 SAMgr 注冊(cè) SA。

  • 獲取 SA:通過 SA 的 ID 和設(shè)備 ID 獲取 Proxy,使用 Proxy 與遠(yuǎn)端通信

asynccallback 鴻蒙,harmonyos,華為
image.png

3.9 設(shè)備唯一標(biāo)識(shí)

  • Oaid:它是基于華為自由算法生成的 UUID 標(biāo)識(shí)符,同一臺(tái)設(shè)備上不同 App 獲取的 Oaid 一致;

  • NetworkID:網(wǎng)絡(luò)設(shè)備節(jié)點(diǎn)通信標(biāo)識(shí)符(重啟后變化)

  • DVID:分布式虛擬設(shè)備標(biāo)識(shí)符(需要登錄 HarmonyOS 賬號(hào))

  • UUID:同一時(shí)空下所有設(shè)備生成的 UUID 都不同

3.10 適配

3.10.1 國(guó)際化
  1. 導(dǎo)入 I18n 模塊。

    import?I18n?from?'@ohos.i18n';
  2. 判斷 Locale 的語(yǔ)言是否為從右到左語(yǔ)言。

    調(diào)用 isRTL 接口獲取 Locale 的語(yǔ)言是否為從右到左語(yǔ)言。

    try?{
    ???let?rtl?=?I18n.isRTL("zh-CN");?//?rtl?=?false
    ???rtl?=?I18n.isRTL("ar");?//?rtl?=?true
    }?catch(error)?{
    ???console.error(`call?i18n.System?interface?failed,?error?code:?${error.code},?message:?${error.message}`);
    }
  3. 獲取語(yǔ)言的本地化表示。

    調(diào)用 getDisplayLanguage 接口獲取某一語(yǔ)言的本地化表示。其中, language 表示待本地化顯示的語(yǔ)言,locale 表示本地化的 Locale, sentenceCase 結(jié)果是否需要首字母大寫。

    try?{
    ???let?language?=?"en";
    ???let?locale?=?"zh-CN";
    ???let?sentenceCase?=?false;
    ???let?localizedLanguage?=?I18n.System.getDisplayLanguage(language,?locale,?sentenceCase);?//?localizedLanguage?=?"英語(yǔ)"
    }?catch(error)?{
    ???console.error(`call?i18n.System?interface?failed,?error?code:?${error.code},?message:?${error.message}`);
    }
  4. 獲取國(guó)家的本地化表示。

    調(diào)用 getDisplayCountry 接口獲取某一國(guó)家的本地化表示。其中,country 表示待本地化顯示的國(guó)家,locale 表示本地化的 Locale,sentenceCase 結(jié)果是否需要首字母大寫。

    try?{
    ???let?country?=?"US";
    ???let?locale?=?"zh-CN";
    ???let?sentenceCase?=?false;
    ???let?localizedCountry?=?I18n.System.getDisplayCountry(country,?locale,?sentenceCase);?//?localizedCountry?=?"美國(guó)"
    }?catch(error)?{
    ???console.error(`call?i18n.System?interface?failed,?error?code:?${error.code},?message:?${error.message}`);
    }
  5. 獲取系統(tǒng)語(yǔ)言列表和某個(gè)語(yǔ)言系統(tǒng)支持的國(guó)家列表。

    調(diào)用 getSystemLanguages 接口獲取系統(tǒng)支持的語(yǔ)言列表。

    調(diào)用 getSystemCountries 接口獲取某一語(yǔ)言系統(tǒng)支持的地區(qū)列表。

    try?{
    ???let?languageList?=?I18n.System.getSystemLanguages();??//?languageList?=?["en-Latn-US",?"zh-Hans"]
    ???let?countryList?=?I18n.System.getSystemCountries("zh");?//?countryList?=?["ZW",?"YT",?...,?"CN",?"DE"],?共240個(gè)國(guó)家和地區(qū)
    }?catch(error)?{
    ???console.error(`call?i18n.System?interface?failed,?error?code:?${error.code},?message:?${error.message}`);
    }
  6. 判斷語(yǔ)言和國(guó)家是否匹配。

    調(diào)用 isSuggested 接口判斷語(yǔ)言和地區(qū)是否匹配。

    try?{
    ???let?isSuggest?=?I18n.System.isSuggested("zh",?"CN");?//?isSuggest?=?true
    }?catch(error)?{
    ???console.error(`call?i18n.System?interface?failed,?error?code:?${error.code},?message:?${error.message}`);
    }
3.10.2 屏幕適配
  • 百分比

  • 根據(jù) dpi 動(dòng)態(tài)計(jì)算(算法)

  • 全局定義(src/main/resources/base/element/ float.json)

//?定義
{
??"float":?[
????{
??????"name":?"btn_height",
??????"value":?"40vp"
????},
????{
??????"name":?"value_height",
??????"value":?"28vp"
????}
??]
}
//?引用
?Button($r('app.string.pixel_introduce'))
????????.height($r('app.float.btn_height'))
????????.width(Constants.FULL_PERCENT)
????????.backgroundColor($r('app.color.blue_background'))
????????.onClick(()?=>?this.jumpPage(Constants.INTRODUCTION_PAGE_URL))
3.10.3 其他適配(暗黑模式等)

New->Resource File,在彈出的界面選擇 Color Mode 來創(chuàng)建如下圖

asynccallback 鴻蒙,harmonyos,華為
簽名上架流程

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

4.1 測(cè)試標(biāo)準(zhǔn)

  • 性能測(cè)試

  • 安全測(cè)試

  • 兼容性測(cè)試

  • 穩(wěn)定性測(cè)試

  • 功耗測(cè)試

  • 流轉(zhuǎn)測(cè)試

  • 游戲測(cè)試

4.2 測(cè)試服務(wù)

4.2.1 單元測(cè)試框架
  1. 框架概述:單元測(cè)試框架(hypium)是 HarmonyOS 上的測(cè)試框架,提供測(cè)試用例編寫、執(zhí)行、結(jié)果顯示能力,用于測(cè)試系統(tǒng)或應(yīng)用接口。

  2. 測(cè)試框架引用方式:目前 hypium 以 npm 包的形式發(fā)布, 因此需要在 Deveco Studio 工程級(jí) package.json 內(nèi)配置。

"dependencies":?{
??"@ohos/hypium":?"1.0.6"?#最新版本號(hào),可通過cmd命令"npm?view?@ohos/hypium?version"查詢
}
  1. 使用

import?{?describe,?beforeAll,?beforeEach,?afterEach,?afterAll,?it,?expect?}?from?'@ohos/hypium'
export?default?function?abilityTest()?{
??describe('ActsAbilityTest',?function?()?{
????it('assertContain',0,?function?()?{
??????let?a?=?'abc'
??????let?b?=?'b'
??????//?Defines?a?variety?of?assertion?methods,?which?are?used?to?declare?expected?boolean?conditions.
??????expect(a).assertContain(b)
??????expect(a).assertEqual(a)
????})
??})
}

5. 應(yīng)用發(fā)布與測(cè)試

5.1 簽名與上架流程圖

asynccallback 鴻蒙,harmonyos,華為
簽名上架流程

6. 參考資料和資源

  • https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/deveco_overview-0000001053582387-V3

  • https://developer.harmonyos.com/cn/develop/deveco-studio#download

  • https://nodejs.org/en文章來源地址http://www.zghlxwxcb.cn/news/detail-787328.html

到了這里,關(guān)于鴻蒙(HarmonyOS)應(yīng)用開發(fā)指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【HarmonyOS】開發(fā)一個(gè)可以看小姐姐的鴻蒙應(yīng)用 鴻蒙開發(fā)入門

    【HarmonyOS】開發(fā)一個(gè)可以看小姐姐的鴻蒙應(yīng)用 鴻蒙開發(fā)入門

    先整張效果圖,丑點(diǎn)是丑點(diǎn),但可以用,買不起鴻蒙系統(tǒng)手機(jī)的我,只配用虛擬機(jī)。 要說目前最火的手機(jī)操作系統(tǒng),要我來看的話那必然是鴻蒙無(wú)疑。16號(hào)剛剛結(jié)束了第五次鴻蒙內(nèi)測(cè),在看到這次的內(nèi)測(cè)名單之后,居然有970的機(jī)器,這是不是說明俺這手里奮戰(zhàn)了三年的榮耀

    2024年02月15日
    瀏覽(28)
  • 【HarmonyOS】鴻蒙應(yīng)用開發(fā)基礎(chǔ)認(rèn)證題目

    【HarmonyOS】鴻蒙應(yīng)用開發(fā)基礎(chǔ)認(rèn)證題目

    【HarmonyOS】鴻蒙應(yīng)用開發(fā)基礎(chǔ)認(rèn)證題目; 隨著鴻蒙系統(tǒng)的不斷發(fā)展,前不久,華為宣布了重磅消息,HarmonyOS next 開發(fā)者版本會(huì)在明年(2024)開放,并不再支持Android應(yīng)用!這也意味著,移動(dòng)端開發(fā)者今后又多了一個(gè)適配平臺(tái),也到了必須學(xué)的時(shí)候了。 目前已知一線大廠均已開

    2024年02月04日
    瀏覽(85)
  • 【鴻蒙開發(fā)】HarmonyOS應(yīng)用開發(fā)者基礎(chǔ)認(rèn)證題庫(kù)

    【鴻蒙開發(fā)】HarmonyOS應(yīng)用開發(fā)者基礎(chǔ)認(rèn)證題庫(kù)

    華為開發(fā)者學(xué)堂 ? 1、考試需實(shí)名認(rèn)證,請(qǐng)?jiān)诳记坝趥€(gè)人主頁(yè)→個(gè)人信息→基本信息→進(jìn)行實(shí)名認(rèn)證,否則考試通過無(wú)法獲取專業(yè)證書; 2、每個(gè)帳號(hào)每月有3次考試機(jī)會(huì),次月重置考試次數(shù)。做題過程中請(qǐng)認(rèn)真對(duì)待,避免考試次數(shù)浪費(fèi); 3、考試時(shí)長(zhǎng)為1小時(shí),請(qǐng)合理分配做題

    2024年03月09日
    瀏覽(98)
  • HarmonyOS鴻蒙原生應(yīng)用開發(fā)設(shè)計(jì)- 流轉(zhuǎn)圖標(biāo)

    HarmonyOS鴻蒙原生應(yīng)用開發(fā)設(shè)計(jì)- 流轉(zhuǎn)圖標(biāo)

    HarmonyOS設(shè)計(jì)文檔中,為大家提供了獨(dú)特的流轉(zhuǎn)圖標(biāo),開發(fā)者可以根據(jù)需要直接引用。 開發(fā)者直接使用官方提供的流轉(zhuǎn)圖標(biāo)內(nèi)容,既可以符合HarmonyOS原生應(yīng)用的開發(fā)上架運(yùn)營(yíng)規(guī)范,又可以防止使用別人的圖標(biāo)侵權(quán)意外情況等,減少自主創(chuàng)作流轉(zhuǎn)圖標(biāo)的工作量。當(dāng)然,如果有個(gè)性

    2024年02月07日
    瀏覽(88)
  • HarmonyOS鴻蒙原生應(yīng)用開發(fā)設(shè)計(jì)- 隱私聲明

    HarmonyOS鴻蒙原生應(yīng)用開發(fā)設(shè)計(jì)- 隱私聲明

    HarmonyOS設(shè)計(jì)文檔中,為大家提供了獨(dú)特的隱私聲明,開發(fā)者可以根據(jù)需要直接引用。 開發(fā)者直接使用官方提供的隱私聲明內(nèi)容,既可以符合HarmonyOS原生應(yīng)用的開發(fā)上架運(yùn)營(yíng)規(guī)范,又可以防止使用別人的內(nèi)容產(chǎn)生的侵權(quán)意外情況等,減少自主創(chuàng)作隱私聲明的工作量。當(dāng)然,如果

    2024年02月05日
    瀏覽(90)
  • 鴻蒙(HarmonyOS)應(yīng)用開發(fā)——構(gòu)建頁(yè)面(題目答案)

    1.在Column容器中的子組件默認(rèn)是按照從上到下的垂直方向布局的,其主軸的方向是垂直方向,在Row容器中的組件默認(rèn)是按照從左到右的水平方向布局的,其主軸的方向是水平方向。 正確(True) 2.List容器可以沿水平方向排列,也可以沿垂直方向排列。 正確(True) 3.當(dāng)Tabs組件的參數(shù)

    2024年01月20日
    瀏覽(35)
  • HarmonyOS鴻蒙原生應(yīng)用開發(fā)設(shè)計(jì)- 圖標(biāo)庫(kù)

    HarmonyOS鴻蒙原生應(yīng)用開發(fā)設(shè)計(jì)- 圖標(biāo)庫(kù)

    HarmonyOS設(shè)計(jì)文檔中,為大家提供了獨(dú)特的圖標(biāo)庫(kù),開發(fā)者可以根據(jù)需要直接引用。 圖標(biāo)庫(kù)可以分為雙色圖標(biāo)、填充圖標(biāo)、線性圖標(biāo)。具體分為 鍵盤、箭頭、連接狀態(tài)、媒體、人、設(shè)備、索引、通信、文件、物體與工具等。 整體分類 開發(fā)者直接使用官方提供的圖標(biāo)庫(kù)內(nèi)容,既

    2024年02月07日
    瀏覽(104)
  • 鴻蒙應(yīng)用開發(fā)學(xué)習(xí)路線(OpenHarmony/HarmonyOS)

    鴻蒙應(yīng)用開發(fā)學(xué)習(xí)路線(OpenHarmony/HarmonyOS)

    作者:堅(jiān)果 團(tuán)隊(duì):堅(jiān)果派 公眾號(hào):“大前端之旅” 潤(rùn)開鴻技術(shù)專家,華為HDE,InfoQ簽約作者,OpenHarmony布道師,擅長(zhǎng)HarmonyOS應(yīng)用開發(fā)、熟悉服務(wù)卡片開發(fā),在“戰(zhàn)碼先鋒”活動(dòng)中作為大隊(duì)長(zhǎng),累計(jì)培養(yǎng)三個(gè)小隊(duì)長(zhǎng),帶領(lǐng)100+隊(duì)員完成Pr的提交合入。 歡迎通過主頁(yè)或者私信聯(lián)系

    2024年02月15日
    瀏覽(97)
  • 鴻蒙(HarmonyOS)應(yīng)用開發(fā)——應(yīng)用程序入口UIAbility(題目答案)

    1.一個(gè)應(yīng)用只能有一個(gè)UIAbility。 錯(cuò)誤(False) 解析:可以有多個(gè),也可以有一個(gè) 2.創(chuàng)建的Empty Ability模板工程,初始會(huì)生成一個(gè)UIAbility文件。 正確(True) 3.每調(diào)用一次router.pushUrl()方法,頁(yè)面路由棧數(shù)量均會(huì)加1。 錯(cuò)誤(False) 解析: pushUrl()有兩種模式,一種單實(shí)例模式,一種是多實(shí)例

    2024年02月04日
    瀏覽(28)
  • HarmonyOS鴻蒙原生應(yīng)用開發(fā)設(shè)計(jì)- 華為分享圖標(biāo)

    HarmonyOS鴻蒙原生應(yīng)用開發(fā)設(shè)計(jì)- 華為分享圖標(biāo)

    HarmonyOS設(shè)計(jì)文檔中,為大家提供了獨(dú)特的華為分享圖標(biāo),開發(fā)者可以根據(jù)需要直接引用。 開發(fā)者直接使用官方提供的華為分享圖標(biāo)內(nèi)容,既可以符合HarmonyOS原生應(yīng)用的開發(fā)上架運(yùn)營(yíng)規(guī)范,又可以防止使用別人的內(nèi)容產(chǎn)生的侵權(quán)意外情況等,減少自主創(chuàng)作華為分享圖標(biāo)的工作量

    2024年02月08日
    瀏覽(110)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包