鴻蒙應用開發(fā)教程_第1頁
鴻蒙應用開發(fā)教程_第2頁
鴻蒙應用開發(fā)教程_第3頁
鴻蒙應用開發(fā)教程_第4頁
鴻蒙應用開發(fā)教程_第5頁
已閱讀5頁,還剩448頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

鴻蒙應用開發(fā)教程目錄TOC\h\h第1章HarmonyOS概述\h1.1HarmonyOS系統(tǒng)架構\h1.2HarmonyOS系統(tǒng)特性\h1.3HarmonyOS系統(tǒng)安全\h1.4HarmonyOSApp結構\h第2章應用開發(fā)基礎\h2.1開發(fā)流程\h2.2開發(fā)工具\h2.2.1安裝軟件工具\h2.2.2配置開發(fā)環(huán)境\h2.2.3運行HelloWorld\h2.3應用開發(fā)快速入門\h2.3.1使用eTS語言開發(fā)\h2.3.2使用Java語言開發(fā)\h2.3.3使用JS語言開發(fā)\h2.3.4可視化開發(fā)\h2.4DevEcoStudio工程管理\h2.4.1工程結構\h2.4.2工程操作\h2.4.3HarmonyOS共享包\h2.5DevEcoStudio開發(fā)方法\h2.5.1低代碼開發(fā)\h2.5.2添加Ability\h2.5.3添加JSComponent和JSPage\h2.5.4跨設備代碼編輯\h2.5.5定義HarmonyOSIDL接口\h2.5.6服務卡片操作\h2.5.7使用預覽器查看應用效果\h2.5.8將SVG文件轉換為XML文件\h第3章Ability框架開發(fā)——基于Java\h3.1開發(fā)概述\h3.2Ability介紹\h3.2.1PageAbility\h3.2.2ServiceAbility\h3.2.3DataAbility\h3.2.4Intent\h3.2.5Ability示例\h3.3公共事件與通知開發(fā)\h3.3.1公共事件開發(fā)\h3.3.2通知開發(fā)\h3.3.3IntentAgent開發(fā)\h3.3.4后臺代理定時提醒開發(fā)\h3.4后臺任務調度和管控\h3.4.1短時任務\h3.4.2長駐任務\h3.4.3托管任務\h3.5線程管理開發(fā)\h3.5.1線程管理開發(fā)接口關系\h3.5.2線程管理開發(fā)步驟\h3.6線程間通信\h3.6.1概述\h3.6.2線程間接口關系\h3.6.3線程間通信開發(fā)步驟\h3.7剪貼板開發(fā)\h3.7.1剪貼板開發(fā)接口關系\h3.7.2剪貼板開發(fā)步驟\h第4章JavaUI開發(fā)\h4.1JavaUI框架概述\h4.2組件與布局開發(fā)\h4.3常用組件開發(fā)\h4.3.1組件通用XML屬性\h4.3.2Text\h4.3.3Button\h4.4常用布局開發(fā)\h4.4.1DirectionalLayout\h4.4.2DependentLayout\h4.4.3StackLayout\h4.4.4TableLayout\h4.4.5PositionLayout\h4.4.6AdaptiveBoxLayout\h4.5自定義組件與布局\h4.5.1自定義組件\h4.5.2自定義布局\h4.6動畫開發(fā)\h4.6.1幀動畫\h4.6.2數(shù)值動畫\h4.7可見即可說開發(fā)\h第5章方舟開發(fā)框架(ArkUI)——基于JS擴展的類Web開發(fā)范式\h5.1開發(fā)概述\h5.2JSFA初步應用\h5.2.1JSFA概述\h5.2.2JSFA開發(fā)應用\h5.3構建用戶界面\h5.3.1組件\h5.3.2構建布局\h5.3.3添加交互\h5.3.4動畫\h5.3.5事件\h5.3.6頁面路由\h5.3.7焦點邏輯\h5.4常見組件開發(fā)\h5.4.1Text\h5.4.2Input\h5.4.3Button\h5.5動效開發(fā)\h5.5.1CSS動畫開發(fā)\h5.5.2JS動畫\h5.6自定義組件\h5.7JSFA調用PA\h5.8使用工具自動生成JSFA調用PA代碼\h第6章方舟開發(fā)框架(ArkUI)——基于TS擴展的聲明式開發(fā)范式\h6.1基于TS擴展的聲明式開發(fā)范式概述\h6.2體驗聲明式UI\h6.2.1創(chuàng)建聲明式UI工程\h6.2.2初識Component\h6.2.3創(chuàng)建簡單視圖\h6.3頁面布局與連接\h6.3.1構建數(shù)據(jù)模型\h6.3.2構建列表List布局\h6.3.3構建分類Grid布局\h6.3.4頁面跳轉與數(shù)據(jù)傳遞\h6.4繪圖和動畫\h6.4.1繪制圖形\h6.4.2添加動畫效果\h第7章貪吃蛇小游戲有想看的書找不到,請到公眾號:東東電子書\h7.1總體設計\h7.1.1系統(tǒng)架構\h7.1.2系統(tǒng)流程\h7.2開發(fā)環(huán)境\h7.2.1開發(fā)工具\h7.2.2開發(fā)語言\h7.3開發(fā)實現(xiàn)\h7.3.1UI設計開發(fā)\h7.3.2程序代碼開發(fā)\h7.4測試應用\h7.4.1程序調試\h7.4.2結果展示\h7.5問題解決第1章HarmonyOS概述HarmonyOS(鴻蒙操作系統(tǒng))是面向萬物互聯(lián)時代的、全新的分布式操作系統(tǒng)。1.1HarmonyOS系統(tǒng)架構搭載HarmonyOS的設備在系統(tǒng)層面融為一體,形成超級終端,使設備的硬件能力可以彈性擴展,實現(xiàn)設備之間資源共享。對消費者而言,HarmonyOS能夠將生活場景中的各類終端進行整合,實現(xiàn)不同終端設備之間的快速連接、能力互助,匹配合適的設備、提供流暢的全場景體驗。面向開發(fā)者實現(xiàn)一次開發(fā),多端部署。HarmonyOS采用了多種分布式技術,使應用開發(fā)與不同終端設備的形態(tài)差異無關,從而能夠聚焦上層業(yè)務邏輯。一套操作系統(tǒng)可以滿足不同能力的設備需求,實現(xiàn)彈性部署。HarmonyOS采用組件化的設計方案,可根據(jù)設備的資源能力和業(yè)務特征靈活裁剪,滿足不同形態(tài)終端設備對操作系統(tǒng)的要求。HarmonyOS提供支持多種開發(fā)語言的API,包括Java、XML(ExtensibleMarkupLanguage)、C/C++、JS(JavaScript)、CSS(CascadingStyleSheets)和HML(HarmonyOSMarkupLanguage)。HarmonyOS整體遵從分層設計,從下向上依次為內核層、系統(tǒng)服務層、框架層和應用層。系統(tǒng)功能按照“系統(tǒng)→子系統(tǒng)→功能/模塊”逐級展開,在多設備部署場景下,HarmonyOS支持根據(jù)實際需求裁剪某些非必要的子系統(tǒng)或功能/模塊,如圖1-1所示。1內核層內核子系統(tǒng):HarmonyOS采用多內核設計,支持針對不同資源受限設備選用適合的操作系統(tǒng)(OperatingSystem,OS)內核。內核抽象層(KernelAbstractLayer,KAL)通過屏蔽多內核差異,對上層提供基礎的內核能力,包括進程/線程管理、內存管理、文件系統(tǒng)、網(wǎng)絡管理和外設管理等。驅動子系統(tǒng):硬件驅動框架(HDF)是HarmonyOS硬件生態(tài)開放的基礎,提供統(tǒng)一外設訪問能力和管理框架。圖1-1HarmonyOS整體技術架構2系統(tǒng)服務層系統(tǒng)服務層是HarmonyOS的核心能力集合,通過框架層對應用程序提供服務。該層包含如下系統(tǒng)集。系統(tǒng)基本能力子系統(tǒng)集:為分布式應用在HarmonyOS多設備上的運行、調度、遷移等操作提供基礎能力,由分布式軟總線、數(shù)據(jù)管理、任務調度、方舟運行時、公共基礎庫、圖形、安全、AI等子系統(tǒng)組成。其中,方舟運行時提供了C/C++/JS多語言和基礎的系統(tǒng)類庫,也為使用方舟編譯器靜態(tài)化的Java程序(應用程序或框架層中使用Java語言開發(fā)的部分)提供運行?;A軟件服務子系統(tǒng)集:公共的、通用的軟件服務,由事件通知、電話、多媒體、DFX(DesignForX)、MSDP&DV等子系統(tǒng)組成。增強軟件服務子系統(tǒng)集:針對不同設備的、差異化的能力增強型軟件服務,由智慧屏專有業(yè)務、穿戴專有業(yè)務、IoT專有業(yè)務等子系統(tǒng)組成。硬件服務子系統(tǒng)集:由位置服務、生物特征識別、穿戴專有硬件服務、IoT專有硬件服務等子系統(tǒng)組成。根據(jù)不同設備形態(tài)的部署環(huán)境,基礎軟件服務子系統(tǒng)集、增強軟件服務子系統(tǒng)集、硬件服務子系統(tǒng)集內部可以按子系統(tǒng)粒度裁剪,每個子系統(tǒng)內部又可以按功能粒度裁剪。3框架層框架層為HarmonyOS應用開發(fā)提供了Java/C/C++/JS等多語言的用戶程序框架和Ability框架,兩種UI框架(包括適用于Java語言的JavaUI框架和適用于JS語言的JSUI框架),以及各種軟硬件服務對外開放的多語言框架API。根據(jù)系統(tǒng)的組件化裁剪程度,HarmonyOS設備支持的API也會有所不同。4應用層應用層包括系統(tǒng)應用和第三方非系統(tǒng)應用。HarmonyOS的應用由一個或多個FA(FeatureAbility)或PA(ParticleAbility)組成。其中,F(xiàn)A有UI(UserInterface,用戶界面),提供與用戶交互的能力;而PA無UI,提供后臺運行任務的能力及統(tǒng)一的數(shù)據(jù)訪問抽象。FA在進行用戶交互時所需的后臺數(shù)據(jù)訪問也需要由對應的PA提供支撐?;贔A/PA的開發(fā)應用,能夠實現(xiàn)特定的業(yè)務功能,支持跨設備調度與分發(fā),為用戶提供一致、高效的應用體驗。1.2HarmonyOS系統(tǒng)特性HarmonyOS系統(tǒng)特性可總結為:硬件互助,資源共享,一次開發(fā),多端部署。多種設備之間能夠實現(xiàn)硬件互助,資源共享,依賴的關鍵技術包括分布式軟總線、分布式設備虛擬化、分布式數(shù)據(jù)管理、分布式任務調度等。HarmonyOS提供了用戶程序框架、Ability框架及UI框架,支持應用開發(fā)過程中多終端的業(yè)務邏輯和界面邏輯進行復用,提升跨設備應用的開發(fā)效率。1分布式軟總線分布式軟總線是手機、平板、智能穿戴、智慧屏、車機等分布式設備的通信基座,為設備之間的互聯(lián)互通提供了統(tǒng)一的分布式通信能力,為設備之間的無感發(fā)現(xiàn)和零等待傳輸創(chuàng)造了條件。開發(fā)者只需聚焦于業(yè)務邏輯的實現(xiàn),無須關注組網(wǎng)方式與底層協(xié)議。分布式軟總線如圖1-2所示。圖1-2分布式軟總線典型應用場景如智能家居,在烹飪時,手機可以通過碰一碰和烤箱連接,并將自動按照菜譜設置烹調參數(shù),控制烤箱制作菜肴。與此類似,料理機、油煙機、空氣凈化器、空調、燈、窗簾等都可以在手機端顯示并通過手機控制。設備之間即連即用,無須煩瑣的配置。另一應用場景如多屏聯(lián)動課堂,教師通過智慧屏授課,與學生開展互動,營造課堂氛圍;學生通過平板完成課程學習和隨堂問答。統(tǒng)一、全連接的邏輯網(wǎng)絡確保傳輸通道的高帶寬、低時延。2分布式設備虛擬化分布式設備虛擬化平臺可以實現(xiàn)不同設備的資源融合、設備管理、數(shù)據(jù)處理,多種設備共同形成一個超級虛擬終端。針對不同類型的任務,為用戶匹配并選擇能力合適的執(zhí)行硬件,使業(yè)務連續(xù)地在不同設備間流轉,充分發(fā)揮不同設備的能力優(yōu)勢,例如顯示能力、攝像能力、音頻能力、交互能力及傳感器能力等。分布式設備虛擬化如圖1-3所示。圖1-3分布式設備虛擬化典型應用場景如視頻通話,在做家務時接聽視頻電話,可以將手機與智慧屏連接,并將智慧屏的屏幕、攝像頭與音箱虛擬化為本地資源,替代手機自身的屏幕、攝像頭、聽筒與揚聲器,實現(xiàn)一邊做家務、一邊通過智慧屏和音箱進行視頻通話。另一應用場景如游戲,在智慧屏上玩游戲時,可以將手機虛擬化為遙控器,借助手機的重力傳感器、加速度傳感器、觸控能力,為玩家提供更便捷、更流暢的游戲體驗。3分布式數(shù)據(jù)管理分布式數(shù)據(jù)管理基于分布式軟總線的能力,實現(xiàn)應用程序數(shù)據(jù)和用戶數(shù)據(jù)的分布式管理。用戶數(shù)據(jù)不再與單一物理設備綁定,業(yè)務邏輯與數(shù)據(jù)存儲分離,跨設備的數(shù)據(jù)處理如同本地數(shù)據(jù)處理一樣方便快捷,開發(fā)者能夠輕松實現(xiàn)全場景、多設備下的數(shù)據(jù)存儲、共享和訪問,為打造一致、流暢的用戶體驗創(chuàng)造基礎條件。分布式數(shù)據(jù)管理如圖1-4所示。圖1-4分布式數(shù)據(jù)管理典型應用場景如協(xié)同辦公,將手機上的文檔投屏到智慧屏,在智慧屏上對文檔執(zhí)行翻頁、縮放、涂鴉等操作,文檔的最新狀態(tài)可以在手機上同步顯示。另一應用場景如家庭出游,一家人出游時,媽媽用手機拍的照片,通過家庭照片共享,爸爸可以在自己的手機上瀏覽、收藏和保存這些照片,家中的爺爺奶奶也可以通過智慧屏瀏覽。4分布式任務調度分布式任務調度基于分布式軟總線、分布式數(shù)據(jù)管理、分布式Profile等技術特性,構建統(tǒng)一的分布式服務管理(發(fā)現(xiàn)、同步、注冊、調用)機制,支持對跨設備的應用進行遠程啟動、遠程調用、遠程連接及遷移等操作,能夠根據(jù)不同設備的能力、位置、業(yè)務運行狀態(tài)、資源使用情況,以及用戶的習慣和意圖,選擇合適的設備運行分布式任務。圖1-5以應用遷移為例,簡要地展示了分布式任務調度。圖1-5分布式任務調度典型應用場景如導航,如果用戶駕車出行,上車前,在手機上規(guī)劃好導航路線;上車后,導航自動遷移到車機和車載音箱;下車后,導航自動遷回手機。如果用戶騎車出行,在手機上規(guī)劃好導航路線,騎行時手表可以接續(xù)導航。再如外賣場景,在手機上點外賣后,可以將訂單信息遷移到手表上,隨時查看外賣的配送狀態(tài)。5一次開發(fā)、多端部署一次開發(fā)、多端部署如圖1-6所示。其中,UI框架支持Java和JS兩種開發(fā)語言,并提供豐富的多態(tài)控件,可以在手機、平板、智能穿戴、智慧屏、車機上顯示不同的UI效果。采用業(yè)界主流設計方式,提供多種響應式布局方案,支持柵格化布局,滿足不同屏幕的界面適配能力。圖1-6一次開發(fā)、多端部署6統(tǒng)一操作系統(tǒng),彈性部署HarmonyOS通過組件化和小型化等設計方法,支持多種終端設備按需彈性部署,能夠適配不同類別的硬件資源和功能需求。支撐通過編譯鏈關系自動生成組件化的依賴關系,形成組件樹依賴圖,支撐產品系統(tǒng)的便捷開發(fā),降低硬件設備的開發(fā)門檻。支持各組件的選擇(組件可有可無):根據(jù)硬件的形態(tài)和需求,可以選擇所需的組件。支持組件內功能集的配置(組件可大可小):根據(jù)硬件的資源情況和功能需求,可以選擇配置組件中的功能集,例如選擇配置圖形框架組件中的部分控件。支持組件間依賴的關聯(lián)(平臺可大可?。焊鶕?jù)編譯鏈關系,可以自動生成組件化的依賴關系,例如選擇圖形框架組件,將會自動選擇依賴的圖形引擎組件等。1.3HarmonyOS系統(tǒng)安全在搭載HarmonyOS的分布式終端上,可以保證“正確的人,通過正確的設備,正確地使用數(shù)據(jù)”。通過“分布式多端協(xié)同身份認證”保證“正確的人”;通過“在分布式終端上構筑可信運行環(huán)境”保證“正確的設備”;通過“分布式數(shù)據(jù)在跨終端流動的過程中,對數(shù)據(jù)進行分類分級管理”保證“正確地使用數(shù)據(jù)”。1正確的人在分布式終端場景下,“正確的人”是指通過身份認證的數(shù)據(jù)訪問者和業(yè)務操作者?!罢_的人”是確保用戶數(shù)據(jù)不被非法訪問、用戶隱私不泄露的前提條件。HarmonyOS通過以下三方面實現(xiàn)協(xié)同身份認證。零信任模型:基于零信任模型,實現(xiàn)對用戶的認證和對數(shù)據(jù)的訪問控制。當用戶需要跨設備訪問數(shù)據(jù)資源或者發(fā)起高安全等級的業(yè)務操作(安防設備)時,HarmonyOS會對用戶進行身份認證,確保其可靠性。多因素融合認證:通過用戶身份管理,將不同設備上標識同一用戶的認證憑據(jù)關聯(lián),用于標識一個用戶,提高認證的準確度。協(xié)同互助認證:通過將硬件和認證能力解耦(信息采集和認證可以在不同的設備上完成),實現(xiàn)不同設備的資源池化及能力的互助與共享,使高安全等級的設備協(xié)助低安全等級的設備完成用戶身份認證。2正確的設備在分布式終端場景下,只有保證用戶使用的設備是安全可靠的,才能保證用戶數(shù)據(jù)在虛擬終端上得到有效保護,避免用戶隱私泄露。安全啟動:確保源頭每個虛擬設備運行的系統(tǒng)固件和應用程序是完整的、未經篡改的。通過安全啟動,各設備廠商的鏡像包就不易被非法替換為惡意程序,從而保護用戶的數(shù)據(jù)和隱私安全。可信執(zhí)行環(huán)境:提供基于硬件的可信執(zhí)行環(huán)境(TrustedExecutionEnvironment,TEE)保護用戶個人敏感數(shù)據(jù)的存儲和處理,確保數(shù)據(jù)不泄露。由于分布式終端硬件的安全能力不同,對于用戶的敏感個人數(shù)據(jù),需要使用高安全等級的設備進行存儲和處理。HarmonyOS使用基于數(shù)學可證明的形式化開發(fā)和驗證的TEE微內核,獲得商用OS內核CCEAL5+的認證評級。設備證書認證:支持為具備可信執(zhí)行環(huán)境的設備預置證書,用于向其他虛擬終端證明自己的安全能力。對于有TEE環(huán)境的設備,通過預置公鑰基礎設施(PublicKeyInfrastructure,PKI)給設備身份提供證明,確保設備是合法制造生產的。在產線進行預置,將設備證書的私鑰寫入并安全保存在TEE環(huán)境中,且只在TEE內進行使用。在必須傳輸用戶的敏感數(shù)據(jù)(密鑰、加密的生物特征等)時,會在使用設備證書進行安全環(huán)境驗證后,建立從一臺設備的TEE到另一臺設備的TEE之間的安全通道,實現(xiàn)安全傳輸,如圖1-7所示。圖1-7使用設備證書3正確使用數(shù)據(jù)在分布式終端場景下,需要確保用戶能夠正確使用數(shù)據(jù)。HarmonyOS圍繞數(shù)據(jù)的生成、存儲、使用、傳輸及銷毀過程進行全生命周期的保護,從而保證個人數(shù)據(jù)與隱私及系統(tǒng)的機密數(shù)據(jù)(密鑰)不泄露。數(shù)據(jù)生成:根據(jù)數(shù)據(jù)所在的國家或組織的法律法規(guī)與標準規(guī)范,對數(shù)據(jù)進行分類分級,并且根據(jù)分類設置相應的保護等級。每個保護等級的數(shù)據(jù)從生成開始,在其存儲、使用、傳輸?shù)恼麄€生命周期都需要根據(jù)對應的安全策略提供不同強度的防護。虛擬超級終端的訪問控制系統(tǒng)支持依據(jù)標簽的訪問控制策略,保證數(shù)據(jù)只能在可以提供足夠安全防護的虛擬終端之間存儲、使用和傳輸。數(shù)據(jù)存儲:通過區(qū)分數(shù)據(jù)的安全等級,存儲到不同安全防護能力的分區(qū),對數(shù)據(jù)進行安全保護,并提供密鑰全生命周期的跨設備無縫流動和跨設備密鑰訪問控制能力,支撐分布式身份認證協(xié)同、分布式數(shù)據(jù)共享等業(yè)務。數(shù)據(jù)使用:通過硬件為設備提供可信執(zhí)行環(huán)境。用戶的個人敏感數(shù)據(jù)僅在分布式虛擬終端的可信執(zhí)行環(huán)境中進行使用,確保用戶數(shù)據(jù)的安全和隱私不泄露。數(shù)據(jù)傳輸:為了保證數(shù)據(jù)在虛擬超級終端之間安全流轉,需要各設備是正確可信的,建立了信任關系(多個設備通過華為賬號建立配對關系),并能夠在驗證信任關系后,建立安全的連接通道,按照數(shù)據(jù)流動的規(guī)則,安全地傳輸數(shù)據(jù)。當設備之間進行通信時,需要基于設備的身份憑據(jù)對設備進行身份認證,并在此基礎上,建立安全的加密傳輸通道。數(shù)據(jù)銷毀:銷毀密鑰即銷毀數(shù)據(jù)。數(shù)據(jù)在虛擬終端的存儲,都建立在密鑰的基礎上。當銷毀數(shù)據(jù)時,只需要銷毀對應的密鑰即完成了數(shù)據(jù)的銷毀。1.4HarmonyOSApp結構用戶應用程序泛指運行在設備的操作系統(tǒng)之上,為用戶提供特定服務的程序,簡稱應用。在HarmonyOS上運行的應用,有兩種形態(tài):傳統(tǒng)方式需要安裝應用和提供特定功能;免安裝的應用(原子化服務)。在HarmonyOS中,如無特殊說明,應用所指代的對象包括上述兩種形態(tài),類似安卓系統(tǒng)的App。1App邏輯結構HarmonyOS的用戶應用程序包以AppPack(ApplicationPackage)形式發(fā)布,它由一個或多個HAP(HarmonyOSAbilityPackage)及描述每個HAP屬性的組成。HAP是Ability的部署包,HarmonyOS應用代碼圍繞Ability組件展開。一個HAP是由代碼、資源、第三方庫及應用配置文件組成的模塊包,可分為Entry和Feature兩種模塊類型,如圖1-8所示。Entry是應用的主模塊,一個App中,對于同一設備類型,可以有一個或多個Entry類型的HAP支持該設備類型中不同規(guī)格(API版本、屏幕規(guī)格等)的具體設備。如果同一設備類型存在多個Entry模塊,則必須配置distroFilter分發(fā)規(guī)則,使應用市場在做云端分發(fā)時,對該類型下不同規(guī)格的設備進行精確分發(fā)。Feature是應用的動態(tài)特性模塊,一個App可以包含一個或多個Feature類型的HAP,也可以不包含,只有包含Ability的HAP才能夠獨立運行。圖1-8App邏輯視圖Ability:Ability是應用所具備的能力抽象,一個應用可以包含一個或多個Ability,分為FA和PA兩種類型。FA/PA是應用的基本組成單元,能夠實現(xiàn)特定的業(yè)務功能。FA有UI,而PA無UI。庫文件:庫文件是應用依賴的第三方代碼(so、jar、bin、har等二進制文件),存放在libs目錄下。資源文件:應用的資源文件(字符串、圖片、音頻等)存放于resources目錄下,便于開發(fā)者使用和維護。配置文件:配置文件(config.json)是應用的Ability信息,用于聲明應用的Ability及應用所需權限等信息。:描述應用軟件包中每個HAP的屬性,由IDE編譯生成,應用市場根據(jù)該文件進行拆包和HAP的分類存儲,HAP的具體屬性包括如下內容。(1)delivery-with-install:表示該HAP是否支持隨應用安裝,True表示支持隨應用安裝,F(xiàn)alse表示不支持隨應用安裝。(2)name:HAP文件名。(3)module-type:模塊類型,entry或feature。(4)device-type:表示支持該HAP運行的設備類型。HAR(HarmonyOSAbilityResources):可以提供構建應用所需的所有內容,包括源代碼、資源文件和config.json文件。HAR不同于HAP,它不能獨立安裝運行在設備上,只能作為應用模塊的依賴項被引用。2應用配置文件應用的每個HAP根目錄下都存在一個config.json配置文件,文件內容主要由App、deviceConfig和module三部分組成,缺一不可。App包括應用的全局配置信息,包含應用的包名、生產廠商、版本號等基本信息。deviceConfig包括應用在具體設備的配置信息,包含應用的備份恢復、網(wǎng)絡安全等能力。deviceConfig包含在具體設備上的應用配置信息,可以包含default、phone、tablet、tv、car、wearable、liteWearable和smartVision等屬性。default標簽內的配置適用于所有設備通用,其他設備類型如果有特殊需求,則需要在該設備類型的標簽下進行配置。module包括HAP包的配置信息,包含每個Ability必須定義的基本屬性(包名、類名、類型和Ability提供的能力),以及應用訪問系統(tǒng)或其他應用受保護部分所需的權限等。配置文件config.json采用Json文件格式,其中包含了一系列配置項,每個配置項由屬性和值兩部分構成。屬性出現(xiàn)順序不分先后,且每個屬性最多只允許出現(xiàn)一次。每個屬性的值為Json的基本數(shù)據(jù)類型(數(shù)值、字符串、布爾值、數(shù)組、對象或者null類型)。3資源文件應用的資源文件(字符串、圖片、音頻等)統(tǒng)一存放于resources目錄下,便于開發(fā)者使用和維護。resources目錄包括兩大類:一類為base目錄與限定詞目錄,另一類為rawfile目錄。base目錄與限定詞目錄按照兩級目錄形式組織,目錄命名必須符合要求,以便根據(jù)設備狀態(tài)匹配相應目錄下的資源文件。一級子目錄為base目錄與限定詞目錄。base目錄是默認存在的目錄。當應用的resources資源目錄中沒有與設備狀態(tài)匹配的限定詞目錄時,會自動引用該目錄中的資源文件。base目錄與限定詞目錄下面可以創(chuàng)建資源組目錄(element、media、animation、layout、graphic、profile),用于存放特定類型的資源文件。限定詞目錄需要開發(fā)者自行創(chuàng)建。目錄名稱由一個或多個表征應用場景或設備特征的限定詞組合而成。二級子目錄為資源目錄,用于存放字符串、顏色、布爾值等基礎元素,以及媒體、動畫、布局等資源文件。限定詞目錄可以由一個或多個表征應用場景或設備特征的限定詞組合而成,包括移動國家碼和移動網(wǎng)絡碼、語言、文字、國家或地區(qū)、橫豎屏、設備類型、顏色模式和屏幕密度等維度,限定詞之間通過下畫線(_)或者中畫線(-)連接。開發(fā)者在創(chuàng)建限定詞目錄時,需要掌握命名要求、限定詞目錄與設備狀態(tài)的匹配規(guī)則。限定詞目錄為設備狀態(tài)匹配對應的資源規(guī)則,優(yōu)先級從高到低依次為:移動國家碼和移動網(wǎng)絡碼→區(qū)域(可選組合:語言、語言_文字、語言_國家或地區(qū)、語言_文字_國家或地區(qū))→橫豎屏→設備類型→顏色模式→屏幕密度。如果限定詞目錄中包含移動國家碼和移動網(wǎng)絡碼、語言、文字、橫豎屏、設備類型、顏色模式限定詞,則對應限定詞的取值必須與當前的設備狀態(tài)完全一致,該目錄才能夠參與設備的資源匹配,例如限定詞目錄zh_CN-car-ldpi不能參與en_US設備的資源匹配。rawfile目錄支持創(chuàng)建多層子目錄,目錄名稱可以自定義,文件夾內可以自由放置各類資源文件。rawfile目錄的文件不會根據(jù)設備狀態(tài)匹配不同的資源,如表1-1所示。表1-1資源文件第2章應用開發(fā)基礎本章對HarmonyOS使用DevEcoStudio運行環(huán)境、應用程序的開發(fā)流程、開發(fā)工具和開發(fā)基礎進行介紹。2.1開發(fā)流程針對HarmonyOS應用開發(fā)流程,使用DevEcoStudio,按照如下步驟,開發(fā)并上架HarmonyOS應用到華為應用市場,如圖2-1所示。1開發(fā)準備在進行HarmonyOS應用開發(fā)前,需要注冊一個華為開發(fā)者賬號,并完成實名認證,認證方式分為“個人實名認證”和“企業(yè)實名認證”。下載HUAWEIDevEcoStudio,一鍵完成開發(fā)工具的安裝。開發(fā)工具完成后,設置開發(fā)環(huán)境,對于絕大多數(shù)開發(fā)者來說,只需要下載HarmonyOSSDK即可;如有開發(fā)者在企業(yè)內部訪問Internet受限,需要通過代理進行訪問,并設置對應的代理服務器才能下載HarmonyOSSDK。2開發(fā)應用DevEcoStudio集成了Phone、Tablet、TV、Wearable、LiteWearable等設備的典型場景模板,可以通過工程向導創(chuàng)建一個新工程,然后定義應用的UI、開發(fā)業(yè)務功能等編碼工作。在開發(fā)過程中,可以使用預覽器查看UI布局效果,支持實時預覽、動態(tài)預覽、雙向預覽等功能,使編碼的過程更加高效。圖2-1應用開發(fā)流程3運行、調試和測試應用HarmonyOS應用開發(fā)完成后,可以使用真機或者模擬器進行調試,支持單步調試、跨設備調試、跨語言調試、變量可視化等手段。在發(fā)布到應用市場前,還需要對漏洞、隱私、兼容性、穩(wěn)定性、性能等進行測試,確保HarmonyOS應用純凈、安全,給用戶帶來更好的體驗。4發(fā)布應用HarmonyOS應用開發(fā)就緒后,需要布置華為應用市場,以便對其進行分發(fā),普通消費者可以通過應用市場獲取到對應的HarmonyOS應用。發(fā)布到華為應用市場必須使用發(fā)布證書進行簽名。2.2開發(fā)工具HUAWEIDevEcoStudio是基于IntelliJIDEACommunity開源版本打造,面向華為終端全場景多設備的一站式集成開發(fā)環(huán)境(IDE),為開發(fā)者提供工程模板創(chuàng)建、開發(fā)、編譯、調試、發(fā)布等E2E的HarmonyOS應用開發(fā)服務。使用DevEcoStudio,可以更高效地開發(fā)具備HarmonyOS分布式能力的應用,進而提升創(chuàng)新效率。作為一款開發(fā)工具,除了具有基本的代碼開發(fā)、編譯構建及調測等功能外,DevEcoStudio還具有以下特點,如圖2-2所示。圖2-2DevEcoStudio特點多設備統(tǒng)一開發(fā)環(huán)境:支持多種HarmonyOS設備的應用開發(fā),包括手機(Phone)、平板(Tablet)、車機(Car)、智慧屏(TV)、智能穿戴(Wearable),輕量級智能穿戴(LiteWearable)和智慧視覺(SmartVision)設備。支持多語言的代碼開發(fā)和調試:包括Java、XML(ExtensibleMarkupLanguage)、C/C++、JS(JavaScript)、CSS(CascadingStyleSheets)和HML(HarmonyOSMarkupLanguage)。支持FA和PA快速開發(fā):通過工程向導快速創(chuàng)建FA/PA工程模板,一鍵式打包成HAP。支持分布式多端應用開發(fā):一個工程和一份代碼可跨設備運行,支持不同設備界面的實時預覽和差異化開發(fā),實現(xiàn)代碼的最大化作用。支持多設備模擬器:提供多設備的模擬器資源,包括手機、平板、車機、智慧屏、智能穿戴設備的模擬器,方便開發(fā)者高效調試。支持應用開發(fā)UI實時預覽:提供JS和Java預覽器功能,可以實時查看應用的布局效果,支持實時預覽和動態(tài)預覽;同時還支持多設備同時預覽,查看同一個布局文件在不同設備上的呈現(xiàn)效果。DevEcoStudio支持Windows系統(tǒng)和macOS系統(tǒng),在開發(fā)HarmonyOS應用前,需要準備HarmonyOS應用的開發(fā)環(huán)境,包括軟件安裝、配置開發(fā)環(huán)境和運行HelloWorld共3個環(huán)節(jié),如圖2-3所示。圖2-3構建開發(fā)環(huán)境流程2.2.1安裝軟件工具DevEcoStudio支持Windows和macOS系統(tǒng),下面針對這兩種操作系統(tǒng)的軟件安裝方式進行介紹。下載和安裝DevEcoStudio,它的編譯構建依賴JDK,DevEcoStudio預置了OpenJDK,版本為1.8。1Windows環(huán)境為保證DevEcoStudio正常運行,建議計算機配置滿足如下要求:Windows10操作系統(tǒng)、64位、8GB及以上內存、100GB及以上硬盤、1280像素×800像素及以上分辨率。(1)進入HUAWEIDevEcoStudio產品頁,單擊下載列表后的按鈕,下載DevEcoStudio。下載地址為/cn/develop/deveco-studio#download。(2)下載完成后,雙擊下載deveco-studio-xxxx.exe,進入DevEcoStudio安裝向導,在安裝選項界面勾選64-bitlauncher后,單擊Next按鈕,直至安裝完成。2macOS環(huán)境為保證DevEcoStudio正常運行,建議計算機配置滿足如下要求。macOS10.14/10.15/11.2.2操作系統(tǒng)、8GB及以上內存、100GB及以上硬盤、1280像素×800像素及以上分辨率。(1)進入HUAWEIDevEcoStudio產品頁,單擊下載列表后的按鈕,下載DevEcoStudio。下載地址為/cn/develop/deveco-studio#download。(2)下載完成后,雙擊下載的deveco-studio-xxxx.dmg軟件包。(3)在安裝界面中,將DevEco-Studio.app拖曳到Applications中,等待安裝完成。2.2.2配置開發(fā)環(huán)境DevEcoStudio軟件安裝完成后,檢查和配置開發(fā)環(huán)境。DevEcoStudio提供SDKManager統(tǒng)一管理SDK及工具鏈,下載各種編程語言的SDK包時,會自動下載SDK包依賴的工具鏈。SDKManager提供多種編程語言的SDK包和工具鏈,如表2-1所示。表2-1SDK下載包列表第一次使用DevEcoStudio,需要下載HarmonyOSSDK及對應工具鏈。如果是非首次安裝DevEcoStudio,則更新HarmonyOSSDK。1下載HarmonyOSSDK下載HarmonyOSSDK步驟如下。(1)運行已安裝的DevEcoStudio,首次使用,請選擇Donotimportsettings,單擊OK按鈕。(2)進入配置向導頁面,設置npmregistry,DevEcoStudio已預置對應的倉,單擊StartusingDevEcoStudio按鈕進入下一步,如圖2-4所示。圖2-4預置結果(3)設置Node.js信息,可以指定本地已安裝的Node.js(版本要求為v14.19.1及以上,且低于v15.0.0);如果本地沒有合適的版本,可以單擊Download按鈕,然后在線下載Node.js。本示例以下載Node.js為例,選擇下載源和存儲路徑后,單擊Next按鈕進入下一步,等待安裝完成即可。(4)在SDKComponentsSetup界面中,設置OpenHarmonySDK和HarmonyOSSDK存儲路徑,OpenHarmonySDK和HarmonyOSSDK不能設置為同一個路徑,且路徑中不能包含中文字符,然后單擊Next按鈕。(5)在彈出的SDK下載信息頁面,單擊Next按鈕,并在彈出的LicenseAgreement窗口中,單擊Accept按鈕開始下載SDK。(6)等待SDK及工具下載完成,單擊Finish按鈕,界面會進入DevEcoStudio歡迎頁,如圖2-5所示。默認下載APIVersion8的SDK及工具鏈,如需下載其他版本SDK,請在HarmonyOSSDK界面手動下載。(7)下載完成后,單擊Finish按鈕,HarmonyOSSDK安裝完成,如圖2-6所示。圖2-5歡迎頁圖2-6HarmonyOSSDK安裝結果2更新HarmonyOSSDK如果已經下載HarmonyOSSDK,當存在新版本的SDK時,可以通過SDKManager更新對應的SDK,進入SDKManager的步驟如下。在DevEcoStudio歡迎頁,單擊Configure(或圖標)→Settings→SDKManager→HarmonyOSSDK(macOS系統(tǒng)為Configure→Preferences→SDKManager→HarmonyOSSDK)。在DevEcoStudio打開工程的情況下,單擊Files→Settings→SDKManager→HarmonyOSSDK進入(macOS系統(tǒng)為DevEcoStudio→Preferences→SDKManager→HarmonyOSSDK)。在SDKManager中,勾選需要更新的SDK,單擊Apply按鈕,在彈出的確認更新窗口中,單擊OK按鈕開始更新。3配置HDC工具環(huán)境變量HDC提供HarmonyOS應用的調試工具,為方便使用HDC工具,在端口號設置環(huán)境變量,步驟如下。在此計算機→屬性→高級系統(tǒng)設置→高級→環(huán)境變量中,添加HDC端口變量。變量名為HDC_SERVER_PORT,變量值設置為7035,如圖2-7所示。環(huán)境變量配置完成后,關閉并重啟DevEcoStudio。圖2-7環(huán)境變量配置macOS環(huán)境變量設置步驟如下。(1)打開終端工具,執(zhí)行vi./.bash_profile命令,打開.bash_profile文件。(2)單擊字母i,進入Insert模式。(3)輸入以下內容,添加HDC_SERVER_PORT環(huán)境變量信息。HDC_SERVER_PORT=7035launchctlsetenvHDC_SERVER_PORT$HDC_SERVER_PORTexportHDC_SERVER_PORT(4)編輯完成后,按Esc鍵,退出編輯模式,然后輸入:wq,按Enter鍵保存。(5)執(zhí)行source.bash_profile命令,使配置的環(huán)境變量生效。(6)環(huán)境變量配置完成后,關閉并重啟DevEcoStudio。DevEcoStudio開發(fā)環(huán)境依賴于網(wǎng)絡環(huán)境,需要連接網(wǎng)絡才能確保工具的正常使用。一般來說,如果使用的是個人或家庭網(wǎng)絡,不需要設置代理信息;只有部分企業(yè)網(wǎng)絡受限的情況下,才需要設置。2.2.3運行HelloWorldDevEcoStudio開發(fā)環(huán)境配置完成后,運行HelloWorld工程驗證環(huán)境設置是否正確。下面以Phone工程為例,在Phone的遠程模擬器中運行該工程。1創(chuàng)建新工程創(chuàng)建新工程步驟如下。(1)打開DevEcoStudio,在歡迎頁中單擊CreateProject,創(chuàng)建一個新工程。(2)根據(jù)工程創(chuàng)建向導,選擇需要的Ability工程模板,單擊Next按鈕,如圖2-8所示。圖2-8創(chuàng)建工程模板(3)填寫工程相關信息,主要選擇CompileSDK、DeviceType和Language,其他保持默認值即可,單擊Finish按鈕,如圖2-9所示。(4)工程創(chuàng)建完成后,DevEcoStudio會自動進行同步,如圖2-10所示。2使用模擬器運行HelloWorldDevEcoStudio提供模擬器運行和調試HarmonyOS應用。(1)在DevEcoStudio菜單欄,單擊Tools→DeviceManager。(2)在RemoteEmulator頁簽中單擊Login,在瀏覽器中彈出華為開發(fā)者聯(lián)盟賬號登錄界面,輸入已實名認證的用戶名和密碼進行登錄。圖2-9創(chuàng)建工程相關信息圖2-10同步成功(3)登錄后,單擊界面的“允許”按鈕進行授權。(4)在設備列表中,根據(jù)SDK的版本,選擇設備,并單擊“運行”按鈕,運行模擬器。(5)單擊DevEcoStudio工具欄中的“運行”按鈕或使用默認快捷鍵Shift+F10(Mac為control+R)運行工程。(6)DevEcoStudio會啟動應用的編譯構建,完成后應用即可運行在模擬器上。下面通過一個簡單的DEMO工程示例,詳細介紹開發(fā)過程,實現(xiàn)HarmonyOS應用開發(fā)快速入門。2.3應用開發(fā)快速入門本節(jié)適合HarmonyOS應用開發(fā)的初學者學習。通過構建一個簡單的具有頁面跳轉功能的應用熟悉HarmonyOS應用開發(fā)流程,在左側的頁面中單擊Next按鈕后,跳轉到右側的頁面,如圖2-11所示。圖2-11預覽器運行效果HarmonyOS提供兩種FA的UI開發(fā)框架:JavaUI框架和JSUI框架。前者提供細粒度的UI編程接口,UI元素更豐富,使應用開發(fā)更加靈活;后者提供相對高層的UI描述,使應用開發(fā)更加簡單,JavaUI框架與JSUI框架對比如表2-2所示。表2-2JavaUI框架與JSUI框架對比另外,DevEcoStudioV2.2Beta1及更高版本還支持HarmonyOS低代碼開發(fā)方式。低代碼開發(fā)方式遵循HarmonyOSJS開發(fā)規(guī)范,具有豐富的UI編輯功能,通過可視化界面開發(fā)方式快速構建布局,可有效降低用戶的上手成本,提升用戶構建UI的效率。設備類型以Phone為例,使用eTS語言開發(fā),模板選擇EmptyAbility,Language選擇eTS;使用Java語言開發(fā),模板選擇EmptyAbility,Language選擇Java;使用JS語言開發(fā),模板選擇EmptyAbility,Language選擇JS;使用可視化開發(fā),模板選擇EmptyAbility,Language選擇JS。工程創(chuàng)建完成后,使用預覽器或Phone模擬器運行該工程。下面分別用eTS語言、Java語言、JS語言及可視化方式,實現(xiàn)上述兩個頁面跳轉功能。2.3.1使用eTS語言開發(fā)eTS語言開發(fā),使用DevEcoStudioV01Beta1及更高版本。模擬器運行時選擇API7及以上的設備。若首次打開DevEcoStudio,單擊CreateProject創(chuàng)建工程。如果已有一個工程,單擊File→New→CreateProject。選擇HarmonyOS模板庫,選擇模板EmptyAbility,單擊Next按鈕進行配置。進入配置工程界面,Language選擇eTS,其他參數(shù)保持默認設置即可。1構建第一個頁面工程同步完成后,在Project窗口中,單擊entry→src→main→ets→MainAbility→pages,打開index.ets文件,在默認頁面基礎上,添加一個Button組件,作為按鈕響應用戶單擊,從而實現(xiàn)跳轉到另一個頁面,跳轉按鈕綁定onClick事件,單擊按鈕時跳轉到第二頁。index.ets文件相關代碼如下。2構建第二個頁面新建第二個頁面文件。在Project窗口中,打開entry→src→main→ets→MainAbility,右擊pages文件夾,選擇New→eTSFile,命名為second,單擊Finish按鈕。添加Text組件并設置其樣式。second.ets文件示例如下。配置第二個頁面的路由,在config.json文件中的module→JS→pages下配置第二個頁面的路由pages/second。示例代碼如下。3實現(xiàn)頁面間的跳轉頁面間的導航可以通過頁面路由router實現(xiàn)。頁面路由router根據(jù)頁面URL找到目標頁面,從而實現(xiàn)跳轉,即index.ets文件的第一行加入如下代碼。importrouterfrom'@ohos.router';

使用預覽器或模擬器運行項目,獲得跳轉效果。2.3.2使用Java語言開發(fā)JavaUI框架提供了兩種編寫布局的方式:XML中聲明UI布局和在代碼中創(chuàng)建布局,二者沒有本質差別。下面以XML的方式編寫第一個頁面,通過代碼的方式編寫第二個頁面。1XML方式編寫第一個頁面XML方式編寫第一個頁面步驟如下。(1)在Project窗口中,單擊entry→src→main→resources→base→layout,打開ability_main.xml文件。(2)(可選)在Project窗口中,單擊entry→src→main→resources→base→element,打開string.json文件,可在此文件內聲明所需引用的資源內容。關于取值為string類型的屬性,既可以直接設置文本字串,又可以引用string資源(推薦使用),string.json的示例代碼如下。(3)第一個頁面內有一個文本和一個按鈕,使用DependentLayout布局,通過Text和Button組件實現(xiàn),其中vp和fp分別表示虛擬像素和字體像素。本示例展示兩個組件的顯示文本分別采用直接設置文本字符串、引用string資源(推薦使用)的方式,ability_main.xml的示例代碼如下。(4)按鈕的背景是藍色膠囊樣式,可以通過graphic目錄下的XML文件設置。右擊graphic文件夾,選擇New→File,命名為background_button.xml,按Enter鍵,相關代碼如下。在layout目錄下的ability_main.xml文件中<Button下加入一行代碼,使用background_element="$graphic:background_button"的方式引用background_button.xml文件,其中<Button部分的代碼如下。(5)XML文件中添加組件后,需要在Java代碼中加載XML布局。在Project窗口中,選擇entry→src→main→java→com.example.myapplication→slice,選擇MainAbilitySlice.java文件,使用setUIContent方法加載ability_main.xml布局。此外,運行代碼前需采用import(可使用Alt+Enter快捷鍵)引入對應類,否則會報錯提示,MainAbilitySlice.java的示例代碼如下。(6)使用預覽器或模擬器運行項目。2代碼方式編寫第二個頁面使用代碼的方式創(chuàng)建第二個頁面步驟如下。(1)在Project窗口中,打開entry→src→main→java→com.example.myapplication,右擊slice文件夾,選擇New→JavaClass,命名為SecondAbilitySlice,按Enter鍵。(2)第二個頁面上有一個文本。打開SecondAbilitySlice文件,添加Text,相關代碼如下。3實現(xiàn)頁面跳轉打開第一個頁面的MainAbilitySlice.java文件,添加按鈕的響應邏輯,實現(xiàn)單擊按鈕跳轉到下一頁,示例代碼如下。使用預覽器或模擬器運行項目,獲得跳轉效果。示例工程參考地址為/openharmony/app_samples/tree/master/common/HelloWorld,指導開發(fā)者通過JavaUI編寫兩個簡單的頁面,實現(xiàn)在第一個頁面單擊按鈕跳轉到第二個頁面。2.3.3使用JS語言開發(fā)本節(jié)介紹如何編寫第一個頁面,創(chuàng)建另一個頁面和實現(xiàn)頁面跳轉。1編寫第一個頁面編寫第一個頁面步驟如下。(1)第一個頁面內有一個文本和一個按鈕,通過text和button組件實現(xiàn)。在Project窗口中,選擇entry→src→main→js→default→pages→index,打開index.hml文件,添加一個文本和一個按鈕,相關代碼如下。(2)打開index.css文件,設置文本和按鈕的樣式,相關代碼如下。(3)使用預覽器或模擬器運行項目,可以看到運行效果。2創(chuàng)建另一個頁面創(chuàng)建另一個頁面步驟如下。(1)在Project窗口中,打開entry→src→main→js→default,右擊pages文件夾,選擇New→JSPage,命名為details,按Enter鍵。創(chuàng)建完成后,可以看到pages.index文件夾下的文件目錄結構。(2)打開details.hml文件,添加一個文本,相關代碼如下。(3)打開details.css文件,設置文本的樣式,相關代碼如下。3實現(xiàn)頁面跳轉實現(xiàn)頁面跳轉步驟如下。(1)打開第一個頁面的index.js文件,導入router模塊,頁面路由router根據(jù)URI找到目標頁面,從而實現(xiàn)跳轉,相關代碼如下。(2)再次使用預覽器或模擬器運行項目,達到運行效果。2.3.4可視化開發(fā)使用DevEcoStudioV2.2Beta1及更高版本。低代碼開發(fā)功能僅適用于Phone設備的JS工程,且compileSdkVersion必須為6及以上。1創(chuàng)建JS工程創(chuàng)建JS工程步驟如下。(1)打開DevEcoStudio,創(chuàng)建一個新工程,選擇支持Phone的EmptyAbility模板,如圖2-12所示。(2)選擇SuperVisual,表示使用低代碼開發(fā)功能開發(fā)應用/服務。單擊Finish按鈕等待工程同步完成,如圖2-13所示。圖2-12創(chuàng)建新工程圖2-13同步完成(3)同步完成后,工程目錄中自動生成低代碼目錄結構,同時第一個頁面創(chuàng)建完畢。其中,pages→index→index.js是低代碼頁面的邏輯描述文件,定義頁面中所用到的所有邏輯關系,例如數(shù)據(jù)、事件等。如果創(chuàng)建多個低代碼頁面,則pages目錄下會生成多個頁面文件夾及對應的JS文件。pages→index→index.visual是visual文件存儲低代碼頁面的數(shù)據(jù)模型,雙擊該文件即可打開低代碼頁面,進行可視化開發(fā)設計。如果創(chuàng)建多個低代碼頁面,則pages目錄下會生成多個頁面文件夾及對應的visual文件,如圖2-14所示。圖2-14目錄結構2設置第一個頁面設置第一個頁面步驟如下。(1)第一個頁面內有一個文本和一個按鈕,通過Text和Button組件實現(xiàn)。打開index.visual文件,選中畫布中的組件,右擊選擇Delete刪除畫布原有組件。選中畫布,單擊右側屬性樣式欄中的樣式圖標(Flex),設置畫布的FlexDirection樣式為column,使畫布的主軸垂直;設置畫布的JustifyContent樣式為center,使其子組件在主軸上居中顯示;設置畫布的AlignItems樣式為center,使其子組件在交叉軸上居中顯示。(2)選中UIControl中的Text組件,將其拖至中央畫布區(qū)域。單擊右側屬性樣式欄中的屬性圖標(Properties),設置Text組件的Content屬性為HelloWorld;單擊右側屬性樣式欄中的樣式圖標(Feature),設置組件的FontSize樣式為60px,使其文字放大;設置組件的TextAlign樣式為center,使組件文字居中顯示。再選中畫布上的Text組件,拖動放大。(3)選中UIControl中的Button組件,將其拖至中央畫布區(qū)域。單擊右側屬性樣式欄中的屬性圖標(Properties),設置Button組件的Value屬性為Next;單擊右側屬性樣式欄中的樣式圖標(Feature),設置組件的FontSize樣式為60px,使其文字放大。(4)使用預覽器或模擬器運行項目,效果如圖2-15所示。3創(chuàng)建另一個頁面在Project窗口中,選擇工程中的entry→src→main→JS→default→pages,右擊選擇New→Visual,命名為page2。第二個頁面上有一個文本,通過Text組件實現(xiàn)。打開page2.visual文件,刪除畫布原有組件。選中畫布,設置畫布的JustifyContent樣式為center,設置畫布的AlignItems樣式為center。圖2-15運行項目效果選中Text組件拖至畫布,設置Text組件的Content屬性為Hithere,設置組件的FontSize樣式為60px,設置組件的TextAlign樣式為center,再選中畫布上的Text組件,拖動放大。4實現(xiàn)頁面跳轉(1)在Project窗口中,打開工程中的entry→src→main→JS→default→pages→index→index.js,導入router模塊,頁面路由router根據(jù)頁面的URI找到目標頁面,從而實現(xiàn)跳轉。示例代碼如下。(2)打開index.visual,選中畫布上的Button組件,單擊右側屬性樣式欄中的事件圖標(Events),單擊Click事件的輸入框,選擇launch事件,操作示例如圖2-16所示。(3)使用預覽器或模擬器運行項目,達到切換效果。圖2-16頁面跳轉2.4DevEcoStudio工程管理本節(jié)詳細介紹DevEcoStudio工程結構的使用方法。HarmonyOS應用/服務發(fā)布形態(tài)為APPPack(ApplicationPackage,APP),它由一個或多個HAP包及描述APPPack屬性的文件組成。一個HAP在工程目錄中對應一個Module,它由代碼、資源、第三方庫及應用/服務配置文件組成,可以分為Entry和Feature兩種類型。Entry是應用/服務的主模塊,可獨立安裝運行。一個App中,對于同一類型的設備,可以包含一個或多個entry類型的HAP,如果同一設備類型包含多個entry模塊,需要配置distroFilter分發(fā)規(guī)則。Feature是應用/服務的動態(tài)特性模塊。一個App可以包含一個或多個feature類型的HAP,也可以不含。HAP是Ability的部署包,HarmonyOS應用/服務代碼圍繞Ability組件展開,它由一個或多個Ability組成。Ability分為兩種類型:FA和PA。FA/PA是應用/服務的基本組成單元,能夠實現(xiàn)特定的業(yè)務功能。FA有UI界面,而PA無UI界面,如圖2-17所示。圖2-17工程結構2.4.1工程結構本節(jié)介紹HarmonyOSApp工程結構,以便快速掌握開發(fā)方法。1eTS工程目錄結構eTS工程目錄結構如圖2-18所示。圖2-18eTS工程目錄結構entry:HarmonyOS工程模塊,編譯構建生成一個HAP包。(1)src→main→eTS:用于存放eTS源碼。(2)src→main→eTS→MainAbility:應用/服務的入口。(3)src→main→eTS→MainAbility→pages:MainAbility包含的頁面。(4)src→main→eTS→MainAbility→pages→index.ets:pages列表中的第一個頁面,即應用的首頁入口。(5)src→main→eTS→MainAbility→app.ets:承載Ability生命周期。(6)src→main→resources:用于存放應用/服務所用到的資源文件,如圖形、多媒體、字符串、布局文件等。(7)src→main→config.json:模塊配置文件。主要包含HAP包的配置信息、應用/服務在具體設備上的配置信息以及應用/服務的全局配置信息。(8)build-profile.json5:當前的模塊信息、編譯信息配置項,包括buildOption、targets配置等。(9)hvigorfile.js:模塊級編譯構建任務腳本,開發(fā)者可以自定義相關任務和代碼實現(xiàn)。build-profile.json5:應用級配置信息,包括簽名、產品配置等。hvigorfile.js:應用級編譯構建任務腳本。2Java工程目錄結構Java工程目錄結構如圖2-19所示。圖2-19Java工程目錄結構.gradle:Gradle配置文件,由系統(tǒng)自動生成,一般情況下不需要修改。entry:默認啟動模塊(主模塊),開發(fā)者用于編寫源碼文件及開發(fā)資源文件的目錄。(1)entry→libs:用于存放entry模塊的依賴文件。(2)entry→src→main→Java:用于存放Java源碼。(3)entry→src→main→resources:用于存放資源文件,例如圖形、多媒體、字符串、布局文件等。(4)entry→src→main→config.json:應用配置文件。(5)entry→src→ohosTest:HarmonyOS應用測試框架,運行在設備模擬器或真機設備上。(6)entry→src→test:編寫代碼單元測試的目錄,運行在本地Java虛擬機(JVM)上。(7)entry→.gitignore:標識git版本管理需要忽略的文件。(8)entry→build.gradle:entry模塊的編譯配置文件。3JS工程目錄結構JS工程目錄結構如圖2-20所示。圖2-20JS工程目錄結構common目錄(可選):用于存放公共資源文件,例如媒體資源、自定義組件和JS文檔等。i18n目錄(可選):用于存放多語言的Json文件,可以在該目錄下定義應用在不同語言系統(tǒng)下顯示的內容,如應用文本詞條、圖片路徑等。pages目錄:pages文件夾下可以包含1個或多個頁面,每個頁面都需要創(chuàng)建一個文件夾(圖2-20中的index)。頁面文件夾下主要包含3種文件類型,即CSS、JS和HML文件。(1)pages→index→index.hml文件:HML(HarmonyOSMarkupLanguage)是一套類HTML的標記語言。頁面具備數(shù)據(jù)綁定、事件綁定、列表渲染、條件渲染和邏輯控制等高級能力。HML文件定義了頁面的布局結構,使用到組件及這些組件的層級關系。(2)pages→index→index.css文件:CSS文件定義了頁面的樣式與布局,包含樣式選擇器和各種樣式屬性等。(3)pages→index→index.js文件:JS文件描述了頁面的行為邏輯,此文件中定義了頁面里所用到的所有邏輯關系,例如數(shù)據(jù)、事件等。resources(可選):用于存放資源配置文件,例如全局樣式、多分辨率加載等配置文件。app.js文件:全局的JavaScript邏輯文件和應用的生命周期管理。4C++工程目錄結構C++工程目錄結構如圖2-21所示。圖2-21C++工程目錄結構.gradle:Gradle配置文件,由系統(tǒng)自動生成,一般情況下不需要修改。entry:默認啟動模塊(主模塊),開發(fā)者用于編寫源碼文件及開發(fā)資源文件的目錄。(1)entry→libs:用于存放entry模塊的依賴文件。(2)entry→src→main→cpp:用于存放C++源碼。(3)entry→src→main→java:用于存放Java源碼。(4)entry→src→main→resources:用于存放資源文件,例如圖形、多媒體、字符串、布局文件等。(5)entry→src→main→config.json:應用配置文件。(6)entry→src→ohosTest:應用測試框架,運行在設備模擬器或真機設備上。(7)entry→src→test:編寫代碼單元測試代碼的目錄,運行在本地Java虛擬機(JVM)上。(8)entry→.gitignore:標識git版本管理需要忽略的文件。(9)entry→build.gradle:entry模塊的編譯配置文件。2.4.2工程操作本節(jié)介紹DevEcoStudio的工程操作方法,包括創(chuàng)建新工程,打開現(xiàn)有工程,適配歷史工程,導入Sample工程,在工程中添加/刪除Module。1創(chuàng)建新工程開發(fā)HarmonyOS應用時,根據(jù)向導,創(chuàng)建一個新的工程,工具會自動生成對應的代碼和資源模板。(1)通過如下兩種方式打開工程創(chuàng)建向導界面。如果當前未打開任何工程,可以在DevEcoStudio的歡迎頁,選擇CreateProject創(chuàng)建一個新工程。如果已經打開工程,可以在菜單欄選擇File→New→NewProject創(chuàng)建一個新工程,如圖2-22所示。(2)根據(jù)工程創(chuàng)建向導,選擇需要的Ability工程模板,單擊Next按鈕。DevEcoStudio支持手機、平板、車機、智慧屏、智能穿戴和智慧視覺設備的HarmonyOS應用開發(fā),預置了豐富的工程模板,可以根據(jù)向導輕松創(chuàng)建適應于各類設備的工程,并自動生成對應的代碼和資源模板。同時,DevEcoStudio還提供了多種編程語言進行應用開發(fā),包括Java、JS和C/C++編程語言。單擊TemplateMarket進入TemplateMarket可獲取更多模板資源,在TemplateMarket選中要下載的工程模板,單擊Download按鈕,下載工程模板后,顯示在Chooseyourabilitytemplate頁面上。(3)單擊Next按鈕,進入工程配置階段,需要根據(jù)向導配置工程的基本信息,如圖2-23所示。ProjectName:工程名稱,可以自定義。ProjectType:工程類型,標識該工程是一個原子化服務(Service)或傳統(tǒng)方式需要安裝的應用(Application)。如果是創(chuàng)建的原子化服務,在調試、運行時,設備桌面上沒有應用圖標,使用DevEcoStudio的調試和運行功能,啟動原子化服務。原子化服務免安裝,config.json中自動添加installationFree字段,取值為True。如果entry模塊的installationFree字段為True,則其相關的所有HAP模塊的installationFree字段都默認為True;如果entry模塊的installationFree字段為False,則其相關的所有HAP模塊可以配置為True或False。編譯構建App時,每個HAP包大小不能超過10MB。PackageName:軟件包名稱,默認情況下,應用ID也會使用該名稱,在發(fā)布時,ID需要唯一。SaveLocation:工程文件本地存儲路徑(不能包含中文字符)。圖2-22創(chuàng)建新工程CompatibleAPIVersion:兼容的SDK最低版本。Language:該工程模板支持的開發(fā)語言。DeviceType:該工程模板設備類型支持多選,默認全部勾選。如果勾選多個設備,表示該原子化服務或傳統(tǒng)方式需要安裝的應用支持部署在多個設備上。ShowinServiceCenter:是否在服務中心露出。如果ProjectType為Service,則會同步創(chuàng)建一個2×2的服務卡片模板,同時還會創(chuàng)建入口卡片;如果ProjectType為Application,則只會創(chuàng)建一個2×2的服務卡片模板。Advanced:高級選項,根據(jù)選項預覽該工程模板的效果圖(僅部分工程模板支持效果圖預覽)。(4)單擊Finish按鈕,工具會自動生成示例代碼和相關資源,等待工程創(chuàng)建完成。各模板支持的設備及API如表2-3所示。圖2-23配置工程信息表2-3各模板支持的設備及API2打開現(xiàn)有工程打開現(xiàn)有工程包括如下兩種方式:如果當前未打開任何工程,可以在DevEcoStudio的歡迎頁選擇OpenProject;如果已經打開,可以在菜單欄中選擇File→Open打開現(xiàn)有工程。3導入Sample工程DevEcoStudio支持HarmonyOSSample工程的導入功能,通過對接Gitee開源社區(qū)中的Sample資源,可一鍵導入Sample工程到DevEcoStudio中。目前,HarmonyOS和OpenHarmony的Sample均在同一個Gitee倉中,但OpenHarmony的Sample示例并不適用于HarmonyOSSDK。在導入時,請不要導入OpenHarmonySamples下的Sample中。下面介紹導入HarmonyOSSample的方法。(1)在DevEcoStudio的歡迎頁,進入Configure(或圖標)→Settings→VersionControl→Git界面,單擊Test按鈕檢測是否安裝Git工具,若已安裝,下一步開始導入Sample,如圖2-24所示。若未安裝,單擊DownloadandInstall,DevEcoStudio會自動下載并安裝。安裝完成后,開始導入Sample,如圖2-25所示。圖2-24檢測安裝Git圖2-25導入Sample(2)在DevEcoStudio的歡迎頁,單擊ImportSample按鈕,導入Sample工程。在打開工程的情況下,可以單擊File→New→ImportSample進行導入。(3)在HarmonyOSSamples下選擇需要導入的Sample工程,單擊Next按鈕。(4)設置ProjectName和ProjectLocation,單擊Finish按鈕,等待Sample工程導入完成。(5)導入Sample后,等待工程同步完成即可。4在工程中添加/刪除ModuleModule是HarmonyOS應用的基本功能單元,包含源代碼、資源文件、第三方庫及應用配置文件,每個Module都可以獨立進行編譯和運行。一個HarmonyOS應用通常會包含一個或多個Module,因此可以在工程中創(chuàng)建多個Module,每個Module分為Ability和Library(HarmonyOSLibrary和JavaLibrary)兩種類型。在一個App中,對于同一類型設備可以包含一個或多個EntryModule。如果同一類型設備存在多個EntryModule,還需要配置不同的Entry模塊的分發(fā)規(guī)則。1)創(chuàng)建新的Module創(chuàng)建新的Module步驟如下。(1)通過如下兩種方法,在工程中添加新的Module。方法1:鼠標指針移到工程目錄頂部,右擊選擇New→Module,開始創(chuàng)建新的Module。方法2:在菜單欄中選擇File→New→Module,創(chuàng)建新的Module。(2)在NewProjectModule界面中,選擇需要創(chuàng)建的模板。(3)單擊Next按鈕,在Module配置頁面設置新增Module的基本信息。Module類型為Ability或者HarmonyOSLibrary時,根據(jù)如下內容進行設置。Application/Libraryname:新增Module所屬的類名稱。ModuleName:新增模塊的名稱。ModuleType:僅在Ability模板存在,可以選擇Feature和Entry類型。如果同一類型的設備已經存在Entry模塊,添加新Module選擇Entry類型時,還需要配置distroFilter分發(fā)規(guī)則。PackageName:軟件包名稱,可以單擊Edit按鈕修改默認包名稱,需全局唯一。CompatibleAPIVersion:兼容的SDK最低版本。Language:選擇該Module的開發(fā)語言。DeviceType:選擇模塊的設備類型,如果新建模塊的ModuleType為Feature,則只能選擇該工程原有的設備類型;如果ModuleType為Entry,可以選擇Module支持的其他設備類型。ShowinServiceCenter:是否在服務中心露出,僅在Ability模板存在。如果工程類型為HarmonyOSService,則會同步創(chuàng)建一個2×2的服務卡片模板,同時還會創(chuàng)建入口卡片;如果工程類型為HarmonyOSApplication,則只會創(chuàng)建一個2×2的服務卡片模板。Module類型為JavaLibrary時,根據(jù)如下內容進行設置,然后單擊Finish按鈕完成創(chuàng)建。①Libraryname:JavaLibrary類名稱。②Javapackagename:軟件包名稱,可以單擊Edit按鈕修改默認包名稱,需全局唯一。③Javaclassname:class文件名稱。④Create.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論