




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章HarmonyOS開發(fā)基礎(chǔ)
武漢大學(xué)計(jì)算機(jī)學(xué)院趙小剛大綱APPAbility庫文件資源文件配置文件HAR創(chuàng)建第一個(gè)程序APPHarmonyOS的應(yīng)用軟件包以APPPack(ApplicationPackage)形式發(fā)布,它是由一個(gè)或多個(gè)HAP(HarmonyOSAbilityPackage)以及描述每個(gè)HAP屬性的組成。HAP是Ability的部署包,HarmonyOS應(yīng)用代碼圍繞Ability組件展開。一個(gè)HAP是由代碼、資源、第三方庫及應(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組件展開,它是由一個(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無UI界面。庫文件是應(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)用市場根據(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目錄下,便于開發(fā)者使用和維護(hù)。resources目錄包括兩大類目錄,一類為base目錄與限定詞目錄,另一類為rawfile目錄。resources目錄結(jié)構(gòu)resources|---base//默認(rèn)存在的目錄||---element|||---string.json||---media|||---icon.png|---en_GB-vertical-car-mdpi//限定詞目錄示例,需要開發(fā)者自行創(chuàng)建||---element|||---string.json||---media|||---icon.png|---rawfile//默認(rèn)存在的目錄限定詞目錄限定詞目錄可以由一個(gè)或多個(gè)表征應(yīng)用場景或設(shè)備特征的限定詞組合而成,包括語言、文字、國家或地區(qū)、橫豎屏、設(shè)備類型和屏幕密度等六個(gè)維度,限定詞之間通過下劃線(_)或者中劃線(-)連接。開發(fā)者在創(chuàng)建限定詞目錄時(shí),需要掌握限定詞目錄的命名要求以及與限定詞目錄與設(shè)備狀態(tài)的匹配規(guī)則。限定詞類型資源組目錄base目錄與限定詞目錄下面可以創(chuàng)建資源組目錄(包括element、media、animation、layout、graphic、profile),用于存放特定類型的資源文件資源文件的引用方法base目錄與限定詞目錄中的資源文件:通過指定資源類型(type)和資源名稱(name)來引用。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目錄中的資源文件:通過指定文件路徑和文件名稱來引用。在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)用訪問系統(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)說明skills對(duì)象的內(nèi)部結(jié)構(gòu)說明js對(duì)象的內(nèi)部結(jié)構(gòu)說明HAP與HAR的配置文件的合并如果應(yīng)用模塊中調(diào)用了HAR,在編譯構(gòu)建HAP時(shí),需要將HAP的“config.json”文件與一個(gè)或多個(gè)HAR的“config.json”文件,合并為一個(gè)“config.json”文件。在合并過程中,不同文件的同一個(gè)標(biāo)簽的取值可能發(fā)生沖突,此時(shí),需要通過配置mergeRule來解決沖突。配置文件合并規(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)建出的布局沒有本質(zhì)差別,為了熟悉兩種方式,這里將通過XML的方式編寫第一個(gè)頁面。XML創(chuàng)建頁面在“Project”窗口,點(diǎn)擊“entry>src>main>resources>base>layout”,打開“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”,打開“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);}}代碼編寫頁面創(chuàng)建FeatureAbility在“Project”窗口,打開“entry>src>main>java”,右鍵點(diǎn)擊“com.example.myapplication”文件夾,選擇“New
>
JavaClass”,命名為“SecondAbilitySlice”,單擊回車鍵。打開“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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2 我們的班規(guī)我們訂教學(xué)設(shè)計(jì)-2024-2025學(xué)年道德與法治四年級(jí)上冊(cè)統(tǒng)編版
- 房產(chǎn)贈(zèng)送合同范本
- 簽英文合同范本
- 3古詩詞誦讀《春夜喜雨》教學(xué)設(shè)計(jì)2023-2024學(xué)年統(tǒng)編版語文六年級(jí)下冊(cè)
- 借款合同范本 拆借
- 2024-2025學(xué)年人教版九年級(jí)歷史下冊(cè)同步教學(xué)設(shè)計(jì)第五單元《二戰(zhàn)后的世界變化》
- 入股股東合同范本
- 7健康看電視 (教學(xué)設(shè)計(jì))-2024-2025學(xué)年四年級(jí)上冊(cè)道德與法治統(tǒng)編版
- 4 古詩三首《贈(zèng)劉景文》(教學(xué)設(shè)計(jì))2024-2025學(xué)年統(tǒng)編版語文三年級(jí)上冊(cè)
- 2024年九年級(jí)中考數(shù)學(xué)沖刺:圓的切線與計(jì)算教學(xué)教學(xué)設(shè)計(jì)
- 2025-2025學(xué)年牛津譯林英語七年級(jí)下冊(cè)(7B)教學(xué)計(jì)劃
- 中建抹灰工程專項(xiàng)施工方案
- 地方融資平臺(tái)債務(wù)和政府中長期支出事項(xiàng)監(jiān)測平臺(tái)操作手冊(cè)-單位
- 心得體會(huì) 2025教師暑假政治學(xué)習(xí)心得體會(huì)
- 2020高職院校教學(xué)能力比賽大學(xué)語文課程實(shí)施報(bào)告(定)
- 洗刷書包(課件)三年級(jí)上冊(cè)勞動(dòng)
- 智慧能源島解決方案
- 做最好的教師讀書分享
- 高考數(shù)學(xué)導(dǎo)數(shù)知識(shí)題型全歸納專題11導(dǎo)數(shù)壓軸題之隱零點(diǎn)問題(原卷版+解析)
- 【課件】2024高考英語新課標(biāo)讀后續(xù)寫說題課件
- 2024年中國油缸用導(dǎo)向環(huán)市場調(diào)查研究報(bào)告
評(píng)論
0/150
提交評(píng)論