Ability Kit簡(jiǎn)介
Ability Kit(程序框架服務(wù))提供了應(yīng)用程序開(kāi)發(fā)和運(yùn)行的應(yīng)用模型,是系統(tǒng)為開(kāi)發(fā)者提供的應(yīng)用程序所需能力的抽象提煉,它提供了應(yīng)用程序必備的組件和運(yùn)行機(jī)制。有了應(yīng)用模型,開(kāi)發(fā)者可以基于一套統(tǒng)一的模型進(jìn)行應(yīng)用開(kāi)發(fā),使應(yīng)用開(kāi)發(fā)更簡(jiǎn)單、高效。
使用場(chǎng)景
- 應(yīng)用的多Module開(kāi)發(fā):應(yīng)用可通過(guò)不同類(lèi)型的Module(HAP、HAR、HSP)來(lái)實(shí)現(xiàn)應(yīng)用的功能開(kāi)發(fā)。其中,HAP用于實(shí)現(xiàn)應(yīng)用的功能和特性,HAR與HSP用于實(shí)現(xiàn)代碼和資源的共享。
- 應(yīng)用內(nèi)的交互:應(yīng)用內(nèi)的不同組件之間可以相互跳轉(zhuǎn)。比如,在支付應(yīng)用中,通過(guò)入口UIAbility組件啟動(dòng)收付款UIAbility組件。
- 應(yīng)用間的交互:當(dāng)前應(yīng)用可以啟動(dòng)其他應(yīng)用,來(lái)完成某個(gè)任務(wù)或操作。比如,啟動(dòng)瀏覽器應(yīng)用來(lái)打開(kāi)網(wǎng)站、啟動(dòng)文件應(yīng)用來(lái)瀏覽或編輯文件等。
- 應(yīng)用的跨設(shè)備流轉(zhuǎn):通過(guò)應(yīng)用的跨端遷移和多端協(xié)同,獲得更好的使用體驗(yàn)。比如,在平板上播放的視頻,遷移到智慧屏繼續(xù)播放。
- 開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
能力范圍
- 提供應(yīng)用進(jìn)程創(chuàng)建和銷(xiāo)毀、應(yīng)用生命周期調(diào)度能力。
- 提供應(yīng)用組件運(yùn)行入口、應(yīng)用組件生命周期調(diào)度、組件間交互等能力。
- 提供應(yīng)用上下文環(huán)境、系統(tǒng)環(huán)境變化監(jiān)聽(tīng)等能力。
- 提供應(yīng)用流轉(zhuǎn)能力。
- 提供多包機(jī)制、共享包、應(yīng)用信息配置等能力,詳見(jiàn)[應(yīng)用程序包概述]。
應(yīng)用程序包概述
在基于[Stage模型]開(kāi)發(fā)應(yīng)用之前,開(kāi)發(fā)者需要了解應(yīng)用的設(shè)計(jì)機(jī)制、應(yīng)用程序包結(jié)構(gòu)等基礎(chǔ)知識(shí)。
應(yīng)用與應(yīng)用程序包
用戶(hù)應(yīng)用程序泛指運(yùn)行在設(shè)備的操作系統(tǒng)之上,為用戶(hù)提供特定服務(wù)的程序,簡(jiǎn)稱(chēng)“應(yīng)用”。一個(gè)應(yīng)用所對(duì)應(yīng)的軟件包文件,稱(chēng)為“應(yīng)用程序包”。
當(dāng)前系統(tǒng)提供了應(yīng)用程序包開(kāi)發(fā)、安裝、查詢(xún)、更新、卸載的管理機(jī)制,便于開(kāi)發(fā)者開(kāi)發(fā)和管理應(yīng)用。同時(shí),系統(tǒng)還屏蔽了不同的芯片平臺(tái)的差異(包括x86/ARM,32位/64位等),應(yīng)用程序包在不同的芯片平臺(tái)都能夠安裝運(yùn)行,這使得開(kāi)發(fā)者可以聚焦于應(yīng)用的功能實(shí)現(xiàn)。
應(yīng)用的多Module設(shè)計(jì)機(jī)制
- 支持模塊化開(kāi)發(fā): 一個(gè)應(yīng)用通常會(huì)包含多種功能,將不同的功能特性按模塊來(lái)劃分和管理是一種良好的設(shè)計(jì)方式。在開(kāi)發(fā)過(guò)程中,我們可以將每個(gè)功能模塊作為一個(gè)獨(dú)立的Module進(jìn)行開(kāi)發(fā),Module中可以包含源代碼、資源文件、第三方庫(kù)、配置文件等,每一個(gè)Module可以獨(dú)立編譯,實(shí)現(xiàn)特定的功能。這種模塊化、松耦合的應(yīng)用管理方式有助于應(yīng)用的開(kāi)發(fā)、維護(hù)與擴(kuò)展。
- 支持多設(shè)備適配: 一個(gè)應(yīng)用往往需要適配多種設(shè)備類(lèi)型,在采用多Module設(shè)計(jì)的應(yīng)用中,每個(gè)Module都會(huì)標(biāo)注所支持的設(shè)備類(lèi)型。有些Module支持全部類(lèi)型的設(shè)備,有些Module只支持某一種或幾種型的設(shè)備(比如平板),那么在應(yīng)用市場(chǎng)分發(fā)應(yīng)用包時(shí),也能夠根據(jù)設(shè)備類(lèi)型做精準(zhǔn)的篩選和匹配,從而將不同的包合理的組合和部署到對(duì)應(yīng)的設(shè)備上。
Module類(lèi)型
Module按照使用場(chǎng)景可以分為兩種類(lèi)型:
Ability類(lèi)型的Module: 用于實(shí)現(xiàn)應(yīng)用的功能和特性。每一個(gè)Ability類(lèi)型的Module編譯后,會(huì)生成一個(gè)以.hap為后綴的文件,我們稱(chēng)其為HAP(Harmony Ability Package)包。HAP包可以獨(dú)立安裝和運(yùn)行,是應(yīng)用安裝的基本單位,一個(gè)應(yīng)用中可以包含一個(gè)或多個(gè)HAP包,具體包含如下兩種類(lèi)型。
- entry類(lèi)型的Module:應(yīng)用的主模塊,包含應(yīng)用的入口界面、入口圖標(biāo)和主功能特性,編譯后生成entry類(lèi)型的HAP。每一個(gè)應(yīng)用分發(fā)到同一類(lèi)型的設(shè)備上的應(yīng)用程序包,只能包含唯一一個(gè)entry類(lèi)型的HAP。
- feature類(lèi)型的Module:應(yīng)用的動(dòng)態(tài)特性模塊,編譯后生成feature類(lèi)型的HAP。一個(gè)應(yīng)用中可以包含一個(gè)或多個(gè)feature類(lèi)型的HAP,也可以不包含。
Library類(lèi)型的Module: 用于實(shí)現(xiàn)代碼和資源的共享。同一個(gè)Library類(lèi)型的Module可以被其他的Module多次引用,合理地使用該類(lèi)型的Module,能夠降低開(kāi)發(fā)和維護(hù)成本。Library類(lèi)型的Module分為Static和Shared兩種類(lèi)型,編譯后會(huì)生成共享包。
- Static Library:靜態(tài)共享庫(kù)。編譯后會(huì)生成一個(gè)以.har為后綴的文件,即靜態(tài)共享包HAR(Harmony Archive)。
- Shared Library:動(dòng)態(tài)共享庫(kù)。編譯后會(huì)生成一個(gè)以.hsp為后綴的文件,即動(dòng)態(tài)共享包HSP(Harmony Shared Package)。
說(shuō)明:
實(shí)際上,Shared Library編譯后除了會(huì)生成一個(gè).hsp文件,還會(huì)生成一個(gè).har文件。這個(gè).har文件中包含了HSP對(duì)外導(dǎo)出的接口,應(yīng)用中的其他模塊需要通過(guò).har文件來(lái)引用HSP的功能。為了表述方便,我們通常認(rèn)為Shared Library編譯后生成HSP。
HAR與HSP兩種共享包的主要區(qū)別體現(xiàn)在:
共享包類(lèi)型 編譯和運(yùn)行方式 發(fā)布和引用方式 HAR HAR中的代碼和資源跟隨使用方編譯,如果有多個(gè)使用方,它們的編譯產(chǎn)物中會(huì)存在多份相同拷貝。 HAR除了支持應(yīng)用內(nèi)引用,還可以獨(dú)立打包發(fā)布,供其他應(yīng)用引用。 HSP HSP中的代碼和資源可以獨(dú)立編譯,運(yùn)行時(shí)在一個(gè)進(jìn)程中代碼也只會(huì)存在一份。 HSP一般隨應(yīng)用進(jìn)行打包,當(dāng)前只支持應(yīng)用內(nèi)引用,不支持獨(dú)立發(fā)布和跨應(yīng)用的引用。 圖1 HAR和HSP在APP包中的形態(tài)示意圖
提供程序訪問(wèn)控制能力,詳見(jiàn)[訪問(wèn)控制概述]。
訪問(wèn)控制概述
默認(rèn)情況下,應(yīng)用只能訪問(wèn)有限的系統(tǒng)資源。但某些情況下,應(yīng)用存在擴(kuò)展功能的訴求,需要訪問(wèn)額外的系統(tǒng)數(shù)據(jù)(包括用戶(hù)個(gè)人數(shù)據(jù))和功能,系統(tǒng)也必須以明確的方式對(duì)外提供接口來(lái)共享其數(shù)據(jù)或功能。
系統(tǒng)通過(guò)訪問(wèn)控制的機(jī)制,來(lái)避免數(shù)據(jù)或功能被不當(dāng)或惡意使用。當(dāng)前訪問(wèn)控制的機(jī)制涉及多方面,包括應(yīng)用沙箱、應(yīng)用權(quán)限、系統(tǒng)控件等方案。
應(yīng)用沙箱
系統(tǒng)上運(yùn)行的應(yīng)用程序均部署在受保護(hù)的沙箱中,通過(guò)沙箱的安全隔離機(jī)制,可以限制應(yīng)用程序的不當(dāng)行為(如應(yīng)用間非法訪問(wèn)數(shù)據(jù)、篡改設(shè)備等)。每個(gè)程序都擁有唯一的ID([TokenID]),系統(tǒng)基于此ID識(shí)別與限制應(yīng)用的訪問(wèn)行為。
應(yīng)用沙箱限定了只有目標(biāo)受眾才能訪問(wèn)應(yīng)用內(nèi)的數(shù)據(jù),并限定了應(yīng)用可訪問(wèn)的數(shù)據(jù)范圍。
應(yīng)用權(quán)限
系統(tǒng)根據(jù)應(yīng)用的[APL]等級(jí)設(shè)置進(jìn)程域和數(shù)據(jù)域標(biāo)簽,并通過(guò)訪問(wèn)控制機(jī)制限制應(yīng)用可訪問(wèn)的數(shù)據(jù)范圍,從而實(shí)現(xiàn)在機(jī)制上消減應(yīng)用數(shù)據(jù)泄露的風(fēng)險(xiǎn)。
不同APL等級(jí)的應(yīng)用能夠申請(qǐng)的權(quán)限等級(jí)不同,且不同的系統(tǒng)資源(如:通訊錄等)或系統(tǒng)能力(如:訪問(wèn)攝像頭、麥克風(fēng)等)受不同的應(yīng)用權(quán)限保護(hù)。通過(guò)嚴(yán)格的分層權(quán)限保護(hù),有效抵御惡意攻擊,確保系統(tǒng)安全可靠。
系統(tǒng)控件
系統(tǒng)提供了系統(tǒng)Picker、安全控件等臨時(shí)授權(quán)的方式替代權(quán)限申請(qǐng),在特定的場(chǎng)景中,應(yīng)用無(wú)需向用戶(hù)申請(qǐng)權(quán)限也可臨時(shí)訪問(wèn)受限資源,實(shí)現(xiàn)精準(zhǔn)化權(quán)限管控,更好地保護(hù)用戶(hù)隱私。
- [系統(tǒng)Picker]
由系統(tǒng)獨(dú)立進(jìn)程實(shí)現(xiàn),在應(yīng)用拉起Picker,并由用戶(hù)操作Picker后,應(yīng)用可以獲取Picker返回的資源或結(jié)果。舉例說(shuō)明,當(dāng)應(yīng)用需要讀取用戶(hù)圖片時(shí),可通過(guò)使用照片Picker,在用戶(hù)選擇所需要的圖片資源后,直接返回該圖片資源,而不需要授予應(yīng)用讀取圖片文件的權(quán)限。 - [安全控件]
由系統(tǒng)提供UI控件,應(yīng)用在界面內(nèi)集成對(duì)應(yīng)控件,用戶(hù)點(diǎn)擊后,應(yīng)用將獲得臨時(shí)授權(quán),從而執(zhí)行相關(guān)操作。舉例說(shuō)明,當(dāng)應(yīng)用需要分享當(dāng)前位置時(shí),可使用位置控件,用戶(hù)點(diǎn)擊后,將會(huì)在本次前臺(tái)期間獲得精準(zhǔn)定位的授權(quán),可以調(diào)用位置服務(wù)獲取精準(zhǔn)定位。當(dāng)發(fā)生滅屏、應(yīng)用切后臺(tái)、應(yīng)用退出等任一情況時(shí),臨時(shí)授權(quán)結(jié)束。
亮點(diǎn)/特征
- 為復(fù)雜應(yīng)用而設(shè)計(jì)
- 多個(gè)應(yīng)用組件共享同一個(gè)ArkTS引擎(運(yùn)行ArkTS語(yǔ)言的虛擬機(jī))實(shí)例,應(yīng)用組件之間可以方便的共享對(duì)象和狀態(tài),同時(shí)減少?gòu)?fù)雜應(yīng)用運(yùn)行對(duì)內(nèi)存的占用。
- 采用面向?qū)ο蟮拈_(kāi)發(fā)方式,使得復(fù)雜應(yīng)用代碼可讀性高、易維護(hù)性好、可擴(kuò)展性強(qiáng)。
- 提供模塊化能力開(kāi)發(fā)的支持。
- 原生支持應(yīng)用組件級(jí)的跨端遷移和多端協(xié)同
Stage模型實(shí)現(xiàn)了應(yīng)用組件與UI解耦:- 在跨端遷移場(chǎng)景下,系統(tǒng)在多設(shè)備的應(yīng)用組件之間遷移數(shù)據(jù)/狀態(tài)后,UI便可利用ArkUI的聲明式特點(diǎn),通過(guò)應(yīng)用組件中保存的數(shù)據(jù)/狀態(tài)恢復(fù)用戶(hù)界面,便捷實(shí)現(xiàn)跨端遷移。
- 在多端協(xié)同場(chǎng)景下,應(yīng)用組件具備組件間通信的RPC調(diào)用能力,天然支持跨設(shè)備應(yīng)用組件的交互。
- 支持多設(shè)備和多窗口形態(tài)
應(yīng)用組件管理和窗口管理在架構(gòu)層面解耦:- 便于系統(tǒng)對(duì)應(yīng)用組件進(jìn)行裁剪(無(wú)屏設(shè)備可裁剪窗口)。
- 便于系統(tǒng)擴(kuò)展窗口形態(tài)。
- 在多設(shè)備(如桌面設(shè)備和移動(dòng)設(shè)備)上,應(yīng)用組件可使用同一套生命周期。
- 平衡應(yīng)用能力和系統(tǒng)管控成本
Stage模型重新定義應(yīng)用能力的邊界,平衡應(yīng)用能力和系統(tǒng)管控成本。- 提供特定場(chǎng)景(如服務(wù)卡片、輸入法)的應(yīng)用組件,以便滿足更多的使用場(chǎng)景。
- 規(guī)范化后臺(tái)進(jìn)程管理:為保障用戶(hù)體驗(yàn),Stage模型對(duì)后臺(tái)應(yīng)用進(jìn)程進(jìn)行了有序治理,應(yīng)用程序不能隨意駐留在后臺(tái),同時(shí)應(yīng)用后臺(tái)行為受到嚴(yán)格管理,防止惡意應(yīng)用行為。
HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
與相關(guān)Kit的關(guān)系
ArkUI: Ability Kit在UIAbility組件可以使用ArkUI提供的組件、事件、動(dòng)效、狀態(tài)管理等能力。
ArkTS:ArkTS提供了語(yǔ)言運(yùn)行時(shí)相關(guān)能力。
審核編輯 黃宇
-
模型
+關(guān)注
關(guān)注
1文章
3226瀏覽量
48807 -
Module
+關(guān)注
關(guān)注
0文章
68瀏覽量
12851 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2339瀏覽量
42805
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論