




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章HarmonyOS開(kāi)發(fā)基礎(chǔ)
武漢大學(xué)計(jì)算機(jī)學(xué)院趙小剛大綱APPAbility庫(kù)文件資源文件配置文件HAR創(chuàng)建第一個(gè)程序APPHarmonyOS的應(yīng)用軟件包以APPPack(ApplicationPackage)形式發(fā)布,它是由一個(gè)或多個(gè)HAP(HarmonyOSAbilityPackage)以及描述每個(gè)HAP屬性的組成。HAP是Ability的部署包,HarmonyOS應(yīng)用代碼圍繞Ability組件展開(kāi)。一個(gè)HAP是由代碼、資源、第三方庫(kù)及應(yīng)用配置文件組成的模塊包,可分為entry和feature兩種模塊類型。entry:應(yīng)用的主模塊。一個(gè)APP中,對(duì)于同一設(shè)備類型必須有且只有一個(gè)entry類型的HAP,可獨(dú)立安裝運(yùn)行。feature:應(yīng)用的動(dòng)態(tài)特性模塊。一個(gè)APP可以包含一個(gè)或多個(gè)feature類型的HAP,也可以不含。只有包含Ability的HAP才能夠獨(dú)立運(yùn)行。HAP是Ability的部署包,HarmonyOS應(yīng)用代碼圍繞Ability組件展開(kāi),它是由一個(gè)或多個(gè)Ability組成。HAP結(jié)構(gòu)AbilityAbility是應(yīng)用所具備的能力的抽象,一個(gè)應(yīng)用可以包含一個(gè)或多個(gè)Ability。Ability分為兩種類型:FA(FeatureAbility)和PA(ParticleAbility)。FA/PA是應(yīng)用的基本組成單元,能夠?qū)崿F(xiàn)特定的業(yè)務(wù)功能。FA有UI界面,而PA無(wú)UI界面。庫(kù)文件是應(yīng)用依賴的第三方代碼(例如so、jar、bin、har等二進(jìn)制文件),存放在libs目錄。配置文件(config.json)是應(yīng)用的Ability信息,用于聲明應(yīng)用的Ability,以及應(yīng)用所需權(quán)限等信息。描述應(yīng)用軟件包中每個(gè)HAP的屬性,由IDE編譯生成,應(yīng)用市場(chǎng)根據(jù)該文件進(jìn)行拆包和HAP的分類存儲(chǔ)。HAP的具體屬性包括:delivery-with-install:表示該HAP是否支持隨應(yīng)用安裝?!皌rue”表示支持隨應(yīng)用安裝;“false”表示不支持隨應(yīng)用安裝。name:HAP文件名。module-type:模塊類型,entry或feature。device-type:表示支持該HAP運(yùn)行的設(shè)備類型。HARHAR(HarmonyOSAbilityResources)可以提供構(gòu)建應(yīng)用所需的所有內(nèi)容,包括源代碼、資源文件和config.json文件。HAR不同于HAP,HAR不能獨(dú)立安裝運(yùn)行在設(shè)備上,只能作為應(yīng)用模塊的依賴項(xiàng)被引用。資源文件應(yīng)用的資源文件(字符串、圖片、音頻等)統(tǒng)一存放于resources目錄下,便于開(kāi)發(fā)者使用和維護(hù)。resources目錄包括兩大類目錄,一類為base目錄與限定詞目錄,另一類為rawfile目錄。resources目錄結(jié)構(gòu)resources|---base//默認(rèn)存在的目錄||---element|||---string.json||---media|||---icon.png|---en_GB-vertical-car-mdpi//限定詞目錄示例,需要開(kāi)發(fā)者自行創(chuàng)建||---element|||---string.json||---media|||---icon.png|---rawfile//默認(rèn)存在的目錄限定詞目錄限定詞目錄可以由一個(gè)或多個(gè)表征應(yīng)用場(chǎng)景或設(shè)備特征的限定詞組合而成,包括語(yǔ)言、文字、國(guó)家或地區(qū)、橫豎屏、設(shè)備類型和屏幕密度等六個(gè)維度,限定詞之間通過(guò)下劃線(_)或者中劃線(-)連接。開(kāi)發(fā)者在創(chuàng)建限定詞目錄時(shí),需要掌握限定詞目錄的命名要求以及與限定詞目錄與設(shè)備狀態(tài)的匹配規(guī)則。限定詞類型資源組目錄base目錄與限定詞目錄下面可以創(chuàng)建資源組目錄(包括element、media、animation、layout、graphic、profile),用于存放特定類型的資源文件資源文件的引用方法base目錄與限定詞目錄中的資源文件:通過(guò)指定資源類型(type)和資源名稱(name)來(lái)引用。Java文件引用資源文件的格式:ResourceTable.type_name。特別地,如果引用的是系統(tǒng)資源,則采用:ohos.global.systemres.ResourceTable.type_name。base目錄文件引用示例:在Java文件中,引用string.json文件中類型為“String”、名稱為“app_name”的資源。ohos.global.resource.ResourceManagerresManager=getAbilityContext().getResourceManager();Stringresult=resManager.getElement(ResourceTable.String_app_name).getString();XML文件引用資源文件的格式:$type:name。特別地,如果引用的是系統(tǒng)資源,則采用:$ohos:type:name。示例:在XML文件中,引用string.json文件中類型為“String”、名稱為“app_name”的資源。<?xmlversion="1.0"encoding="utf-8"?><DirectionalLayoutxmlns:ohos="/res/ohos"ohos:width="match_parent"ohos:height="match_parent"ohos:orientation="vertical"><Textohos:text="$string:app_name"/></DirectionalLayout>rawfile目錄文件引用rawfile目錄中的資源文件:通過(guò)指定文件路徑和文件名稱來(lái)引用。在Java文件中,引用一個(gè)路徑為“resources/rawfile/”、名稱為“example.js”的資源文件,示例如下:ohos.global.resource.ResourceManagerresManager=getAbilityContext().getResourceManager();ohos.global.resource.RawFileEntryrawFileEntry=resManager.getRawFileEntry("resources/rawfile/example.js");系統(tǒng)資源文件目前支持的系統(tǒng)資源文件配置文件應(yīng)用的每個(gè)HAP的根目錄下都存在一個(gè)“config.json”配置文件,文件內(nèi)容主要涵蓋以下三個(gè)方面:應(yīng)用的全局配置信息,包含應(yīng)用的包名、生產(chǎn)廠商、版本號(hào)等基本信息。應(yīng)用在具體設(shè)備上的配置信息,包含應(yīng)用的備份恢復(fù)、網(wǎng)絡(luò)安全等能力。HAP包的配置信息,包含每個(gè)Ability必須定義的基本屬性(如包名、類名、類型以及Ability提供的能力),以及應(yīng)用訪問(wèn)系統(tǒng)或其他應(yīng)用受保護(hù)部分所需的權(quán)限等。配置文件的元素配置文件的內(nèi)部結(jié)構(gòu)app對(duì)象的內(nèi)部結(jié)構(gòu)deviceConfig對(duì)象的內(nèi)部結(jié)構(gòu)module對(duì)象的內(nèi)部結(jié)構(gòu)HAP與HAR的配置文件的合并配置文件的內(nèi)部結(jié)構(gòu)應(yīng)用的配置文件“config.json”中由“app”、“deviceConfig”和“module”三個(gè)部分組成,缺一不可。app對(duì)象的內(nèi)部結(jié)構(gòu)app對(duì)象包含應(yīng)用的全局配置信息deviceConfig對(duì)象的內(nèi)部結(jié)構(gòu)deviceConfig包含在具體設(shè)備上的應(yīng)用配置信息,可以包含default、phone、tablet、tv、car、wearable、liteWearable和smartVision等屬性。default標(biāo)簽內(nèi)的配置是適用于所有設(shè)備通用。module對(duì)象的內(nèi)部結(jié)構(gòu)module對(duì)象包含HAP包的配置信息abilities對(duì)象的內(nèi)部結(jié)構(gòu)說(shuō)明skills對(duì)象的內(nèi)部結(jié)構(gòu)說(shuō)明js對(duì)象的內(nèi)部結(jié)構(gòu)說(shuō)明HAP與HAR的配置文件的合并如果應(yīng)用模塊中調(diào)用了HAR,在編譯構(gòu)建HAP時(shí),需要將HAP的“config.json”文件與一個(gè)或多個(gè)HAR的“config.json”文件,合并為一個(gè)“config.json”文件。在合并過(guò)程中,不同文件的同一個(gè)標(biāo)簽的取值可能發(fā)生沖突,此時(shí),需要通過(guò)配置mergeRule來(lái)解決沖突。配置文件合并規(guī)則HAP與HAR的“config.json”文件合并時(shí),需要將HAR的配置信息全部合并到HAP的配置文件。系統(tǒng)定義了詳細(xì)的合并規(guī)則。HAP的優(yōu)先級(jí)總是高于HAR。當(dāng)HAP依賴于多個(gè)HAR時(shí),先加載的HAR的優(yōu)先級(jí)高于后加載的HAR,按照HAR的加載順序依次合并到HAP文件。創(chuàng)建第一個(gè)程序在JavaUI框架中,提供了兩種編寫布局的方式:在XML中聲明UI布局和在代碼中創(chuàng)建布局。這兩種方式創(chuàng)建出的布局沒(méi)有本質(zhì)差別,為了熟悉兩種方式,這里將通過(guò)XML的方式編寫第一個(gè)頁(yè)面。XML創(chuàng)建頁(yè)面在“Project”窗口,點(diǎn)擊“entry>src>main>resources>base>layout”,打開(kāi)“ability_main.xml”文件。在“ability_main.xml”文件中創(chuàng)建一個(gè)文本和一個(gè)按鈕,示例代碼如下:<?xmlversion="1.0"encoding="utf-8"?><DependentLayoutxmlns:ohos="/res/ohos"ohos:width="match_parent"ohos:height="match_parent"ohos:background_element="#FFFFFF"><Textohos:id="$+id:text"ohos:width="match_content"ohos:height="match_content"ohos:text="HelloWorld"ohos:text_color="#000000"ohos:text_size="32fp"ohos:center_in_parent="true"/>
<Buttonohos:id="$+id:button"ohos:width="match_content"ohos:height="match_content"ohos:text="Next"ohos:text_size="19fp"ohos:text_color="#FFFFFF"ohos:top_padding="8vp"ohos:bottom_padding="8vp"ohos:right_padding="70vp"ohos:left_padding="70vp"ohos:background_element="$graphic:background_button"ohos:center_in_parent="true"ohos:align_parent_bottom="true"ohos:bottom_margin="40vp"/></DependentLayout>在“Project”窗口,選擇“entry>src>main>java>com.example.myapplication>slice”,打開(kāi)“MainAbilitySlice.java”文件,使用setUIContent方法加載XML布局,示例代碼如下:packagecom.example.myapplication.slice;importcom.example.myapplication.ResourceTable;importohos.aafwk.ability.AbilitySlice;importohos.aafwk.content.Intent;publicclassMainAbilitySliceextendsAbilitySlice{@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);//加載XML布局}
@OverridepublicvoidonActive(){super.onActive();}@OverridepublicvoidonForeground(Intentintent){super.onForeground(intent);}}代碼編寫頁(yè)面創(chuàng)建FeatureAbility在“Project”窗口,打開(kāi)“entry>src>main>java”,右鍵點(diǎn)擊“com.example.myapplication”文件夾,選擇“New
>
JavaClass”,命名為“SecondAbilitySlice”,單擊回車鍵。打開(kāi)“SecondAbilitySlice.java”文件,添加一個(gè)文本publicclassSecondAbilitySliceextendsAbilitySlice{@OverridepublicvoidonStart(Intentintent){super.onStart(intent);//聲明布局DependentLayoutmyLayout=newDependentLayout(this);//設(shè)置布局大小myLayout.setWidth(MATCH_PARENT);myLayout.setHeight(MATCH_PARENT);//設(shè)置布局背景為白色ShapeElementelement=newShapeElement();element.setRgbColor(newRgbColor(255,255,255));myLayout.setBackground(element);//創(chuàng)建一個(gè)文本Texttext=newText(this);text.setText("Hithere");text.setWidth(MATCH_PARENT);text.setTextSize(100);text.setTextColor(Color.BLACK);//設(shè)置文本的布局DependentLayout.LayoutConfigtextConfig=newDependentLayout.LayoutConfig(MATCH_CONTENT,MATCH_CONTENT);textConfig.addRule(DependentLayout.LayoutConfig.CENTER_IN_PARENT);text.setLayoutConfig(textConfig);myLayout.addComponent(text);super.setUIContent(myLayout);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 春節(jié)聯(lián)歡活動(dòng)策劃
- 多重耐藥菌醫(yī)院感染管理
- AGCAVC培訓(xùn)課件教學(xué)課件
- 7s知識(shí)培訓(xùn)課件
- 人教版數(shù)學(xué)六年級(jí)下冊(cè)第四單元比應(yīng)用題訓(xùn)練含答案
- 汕頭市朝陽(yáng)區(qū)重點(diǎn)中學(xué)2024-2025學(xué)年初三第一次聯(lián)考英語(yǔ)試題試卷含答案
- 河北省唐山市灤縣2024-2025學(xué)年中考?jí)狠S卷:化學(xué)試題試卷含解析
- 西安美術(shù)學(xué)院《機(jī)器學(xué)習(xí)與深度學(xué)習(xí)》2023-2024學(xué)年第二學(xué)期期末試卷
- 管理人員怎么寫
- 蘇州大學(xué)《聚合物合成工藝學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 青少年正確使用網(wǎng)絡(luò)(講章)
- 《美麗中國(guó)是我家》 課件
- GB/T 91-2000開(kāi)口銷
- GB/T 12325-2008電能質(zhì)量供電電壓偏差
- 發(fā)熱待查臨床路徑
- 《圖像傳感器》課件講課稿
- 九年級(jí)化學(xué)第二次模擬考試質(zhì)量分析析中考化學(xué)試卷分析
- 【16G101】鋼筋平法圖集三維速查2020 88P
- 《踐行社會(huì)主義核心價(jià)值觀》主題班會(huì)教案
- 消防應(yīng)急組織架構(gòu)圖
- TJSTJXH 6-2022 城市軌道交通工程盾構(gòu)管片預(yù)制及拼裝技術(shù)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論