鴻蒙初學002-應用程式包基礎知識

_York發表於2024-10-11

應用與應用程式包

使用者應用程式泛指執行在裝置的作業系統之上,為使用者提供特定服務的程式,簡稱“應用”。一個應用所對應的軟體包檔案,稱為“應用程式包”。

當前系統提供了應用程式包開發、安裝、查詢、更新、解除安裝的管理機制,便於開發者開發和管理應用。同時,系統還遮蔽了不同的晶片平臺的差異(包括x86/ARM,32位/64位等),應用程式包在不同的晶片平臺都能夠安裝執行,這使得開發者可以聚焦於應用的功能實現。

應用的多Module設計機制

  • 支援模組化開發: 一個應用通常會包含多種功能,將不同的功能特性按模組來劃分和管理是一種良好的設計方式。在開發過程中,我們可以將每個功能模組作為一個獨立的Module進行開發,Module中可以包含原始碼、資原始檔、第三方庫、配置檔案等,每一個Module可以獨立編譯,實現特定的功能。這種模組化、松耦合的應用管理方式有助於應用的開發、維護與擴充套件。

  • 支援多裝置適配: 一個應用往往需要適配多種裝置型別,在採用多Module設計的應用中,每個Module都會標註所支援的裝置型別。有些Module支援全部型別的裝置,有些Module只支援某一種或幾種型別的裝置(比如平板),那麼在應用市場分發應用包時,也能夠根據裝置型別做精準的篩選和匹配,從而將不同的包合理的組合和部署到對應的裝置上。

Module型別

Module按照使用場景可以分為兩種型別:

  • Ability型別的Module: 用於實現應用的功能和特性。每一個Ability型別的Module編譯後,會生成一個以.hap為字尾的檔案,我們稱其為HAP(Harmony Ability Package)包。HAP包可以獨立安裝和執行,是應用安裝的基本單位,一個應用中可以包含一個或多個HAP包,具體包含如下兩種型別。

    • entry型別的Module:應用的主模組,包含應用的入口介面、入口圖示和主功能特性,編譯後生成entry型別的HAP。每一個應用分發到同一型別的裝置上的應用程式包,只能包含唯一一個entry型別的HAP。
    • feature型別的Module:應用的動態特性模組,編譯後生成feature型別的HAP。一個應用中可以包含一個或多個feature型別的HAP,也可以不包含。
  • Library型別的Module: 用於實現程式碼和資源的共享。同一個Library型別的Module可以被其他的Module多次引用,合理地使用該型別的Module,能夠降低開發和維護成本。Library型別的Module分為Static和Shared兩種型別,編譯後會生成共享包。

    • Static Library:靜態共享庫。編譯後會生成一個以.har為字尾的檔案,即靜態共享包HAR(Harmony Archive)。
    • Shared Library:動態共享庫。編譯後會生成一個以.hsp為字尾的檔案,即動態共享包HSP(Harmony Shared Package)。
    說明

    實際上,Shared Library編譯後除了會生成一個.hsp檔案,還會生成一個.har檔案。這個.har檔案中包含了HSP對外匯出的介面,應用中的其他模組需要透過.har檔案來引用HSP的功能。為了表述方便,我們通常認為Shared Library編譯後生成HSP。

    HAR與HSP兩種共享包的主要區別體現在:

    共享包型別編譯和執行方式釋出和引用方式
    HAR

    HAR中的程式碼和資源跟隨使用方編譯,如果有多個使用方,它們的編譯產物中會存在多份相同複製。

    注意:編譯HAR時,建議開啟混淆能力,保護程式碼資產。

    HAR除了支援應用內引用,還可以獨立打包釋出,供其他應用引用。
    HSP HSP中的程式碼和資源可以獨立編譯,執行時在一個程序中程式碼也只會存在一份。 HSP一般隨應用進行打包,當前支援應用內和整合態HSP。應用內HSP只支援應用內引用,整合態HSP支援釋出到ohpm私倉和跨應用引用。

相關文章