玩轉HarmonyOS NEXT之配置文件篇

配置文件概述

本文以Stage模型為例,詳細介紹了HarmonyOS NEXT應用的各種配置文件,這些配置文件會向編譯工具、操作系統和應用市場提供應用的基本信息。

在基于Stage模型開發的應用項目代碼下,都存在一個app.json5的配置文件、以及一個或者多個module.json5配置文件。

應用配置文件

app.json5配置文件

先通過一個示例,整體認識下app.json5配置文件。

{"app": {"bundleName": "com.application.myapplication","vendor": "example","versionCode": 1000000,"versionName": "1.0.0","icon": "$media:app_icon","label": "$string:app_name","description": "$string:description_application","minAPIVersion": 9,"targetAPIVersion": 9,"apiReleaseType": "Release","debug": false,"car": {"minAPIVersion": 8},"targetBundleName": "com.application.test","targetPriority": 50,"appEnvironments": [{"name":"name1","value": "value1"}],"maxChildProcess": 5},
}

app.json5配置文件主要包含一下內容:

  • 應用的全局配置信息,包含應用的Bundle名稱、開發廠商、版本號等基本信息。
  • 特定設備類型的配置信息。

具體屬性如下表:

屬性名稱屬性含義數據類型是否必填
bundleName標識應用的Bundle名稱,用于標識應用的唯一性。命名規則如下 :
- 由字母、數字、下劃線和符號“.”組成,且必須以字母開頭。
- 字符串最小長度為7字節,最大長度為128字節。
- 推薦采用反域名形式命名(如com.example.demo,建議第一級為域名后綴com,第二級為廠商/個人名,第三級為應用名,也可以多級)。對于隨系統源碼編譯的應用,建議命名為com.ohos.demo形式,其中的ohos標識系統應用。
string
bundleType標識應用的Bundle類型,用于區分應用或者元服務。支持的取值如下:
- app:當前Bundle為應用。
- atomicService:當前Bundle為元服務。
shared:當前Bundle為共享庫應用,預留字段。
- appService:當前Bundle為系統級共享庫應用,僅供系統應用使用。
string否,默認值為app
debug標識應用是否可調試。
- true:可以進行斷點調試。
- false:不可以進行斷點調試。
Boolean否,默認值為false
icon標識應用的圖標,取值為圖標資源文件的索引。string
label標識應用的名稱,取值為字符串資源的索引,字符串長度不超過63字節。string
description標識應用的描述信息。取值為長度不超過255字節的字符串,內容為描述信息的字符串資源索引。string否,默認值為空
versionCode標識應用的版本號,取值為小于2^31的正整數。此數字僅用于確定某個版本是否比另一個版本更新,數值越大標識版本越高。
開發者可以將該值設置為任何正整數,但是必須確保應用的新版本都使用比舊版本更大的值。
number
versionName標識向用戶展示的應用版本號。
取值為長度不超過127字節的字符串,僅由數字和點構成,推薦采用“A.B.C.D"四段式的形式。四段式推薦的含義如下所示。
第一段:主版本號/Major,范圍0~99,重大修改的版本,如實現新的大功能或重大變化。
第二段:次版本號/Minor,范圍0~99,表示實現較突出的特點,如新功能添加或大問題修復。
第三段:特性版本號/Feature,范圍0~99,標識規劃的新版本特性。
第四段:修訂版本號/Parch,范圍0~999,表示維護版本,如修復bug。
string
minCompatibleVersionCode標識應用能夠兼容的最低歷史版本號,用于應用跨設備兼容性判斷,取值范圍為0~2147483647。number否,默認值為versionCode標簽的值。
minAPIVersion標識應用運行需要的SDK的API最小版本。取值范圍為0~2147482647number應用編譯構建時由build-profile.json5中的compatibleSdkVersion自動生成。
targetAPIVersion標識應用運行需要的API目標版本。取值范圍為0~2147483647。number應用編譯構建時由build-profile.json5中的compileSdkVersion自動生成。
apiReleaseType標識應用運行需要的API目標版本的類型,采用字符串類型表示。取值為”CaneryN"、“BetaN”或者“Release”,其中,N代表大于零的整數。
- Canary:受限發布的版本。
- Beta:公開發布的Beta版本。
- Release:公開發布的正式版本。
string應用編譯構建時根據當前使用的SDK的Stage自動生成。即便手動配置了取值,編譯構建時也會被覆蓋。
accessible標識應用是否能訪問應用的安裝目錄,僅針對Stage模型的系統應用和預置應用生效。boolean否,默認值為false
multiProjects標識當前工程是否支持多個工程的聯合開發。
true:當前工程支持多個工程的聯合開發。
- false:當前工程不支持多個工程的聯合開發。
否,默認值為false
asanEnabled標識應用程序是否開啟asan檢測,用于輔助定位buffer越界造成的crash問題。
- true:當前工程開啟asan檢測。
- false:當前工程不開啟asan檢測。
boolean否,默認值為false
tablet標識對tablet設備做的特殊配置,可以配置的屬性字段有minAPIVersion。如果使用該屬性對tablet設備做了特殊配置,則應用在tablet設備中會采用此處配置的屬性值,并忽略在app.json5公共區域配置的屬性值。object否,默認值為app.json5公共區域配置的屬性值。
tv標識對tv設備做的特殊配置,可以配置的屬性字段有minAPIVersion。如果使用該屬性對tv設備做了特殊配置,則應用在tv設備中會采用此處配置的屬性值,并忽略在app.json5公共區域配置的屬性值。object否,默認值為app.json5公共區域配置的屬性值。
wearable標識對wearable設備做的特殊配置,可以配置的屬性字段有minAPIVersion。如果使用該屬性對wearable設備做了特殊配置,則應用在wearable設備中會采用此處配置的屬性值,并忽略在app.json5公共區域配置的屬性值。object否,默認值為app.json5公共區域配置的屬性值。
car標識對car設備做的特殊配置,可以配置的屬性字段有minAPIVersion。如果使用該屬性對car設備做了特殊配置,則應用在car設備中會采用此處配置的屬性值,并忽略在app.json5公共區域配置的屬性值。object否,默認值為app.json5公共區域配置的屬性值。
default標識對default設備做的特殊配置,可以配置的屬性字段有minAPIVersion。如果使用該屬性對default設備做了特殊配置,則應用在default設備中會采用此處配置的屬性值,并忽略在app.json5公共區域配置的屬性值。object否,默認值為app.json5公共區域配置的屬性值。
targetBundleName標識當前包所指定的目標應用,標簽值的取值規則和范圍與bundleName標簽一致。配置該字段的應用為具有overlay特征的應用string否,默認值為空。
targetPriority標識當前應用的優先級,取值范圍為1~100。配置targetBundleName字段之后,才支持配置該字段。number否,默認值為1。
generateBuildHash標識當前應用的所有HAPHSP是否由打包工具生成哈希值。該字段配置為true時,該應用下的所有HAP和HSP都會由打包工具生成對應的哈希值。系統OTA升級時,若應用的versionCode保持不變,可根據哈希值判斷應用是否需要升級。說明:該字段僅對預置應用生效。boolean否,默認值為false
GWPAsanEnabled標識應用程序是否開啟GWP-asan堆內存檢測工具,用于對內存越界、內存釋放后使用等內存破壞問題進行分析。
- true:當前工程開啟GWP-asan檢測。
- false:當前工程不開啟GWP-asan檢測。
boolean否,默認值為false
appEnvironments標識當前模塊配置的應用環境變量。Array否,默認值為空。
maxChildProcess標識當前應用自身可創建的子進程的最大個數,取值范圍為0~512,0表示不限制,當應用有多個模塊時,以entry模塊的配置為準。number否,默認使用系統配置的默認值。

module.json5配置文件

先通過一個示例,整體認識下module.json5配置文件。

{"module": {"name": "entry","type": "entry","description": "$string:module_desc","mainElement": "EntryAbility","deviceTypes": ["tv","tablet"],"deliveryWithInstall": true,"installationFree": false,"pages": "$profile:main_pages","virtualMachine": "ark","metadata": [{"name": "string","value": "string","resource": "$profile:distributionFilter_config"}],"abilities": [{"name": "EntryAbility","srcEntry": "./ets/entryability/EntryAbility.ts","description": "$string:EntryAbility_desc","icon": "$media:icon","label": "$string:EntryAbility_label","startWindowIcon": "$media:icon","startWindowBackground": "$color:start_window_background","exported": true,"skills": [{"entities": ["entity.system.home"],"actions": ["ohos.want.action.home"]}]}],"requestPermissions": [{"name": "ohos.abilitydemo.permission.PROVIDER","reason": "$string:reason","usedScene": {"abilities": ["FormAbility"],"when": "inuse"}}]},"targetModuleName": "feature","targetPriority": 50,"isolationMode": "nonisolationFirst"
}

module.json5配置文件主要包含以下內容:

  • Module的基本配置信息,包含Module名稱、類型、描述、支持的設備類型等基本信息。
  • 應用組件信息,包含UIAbility組件和ExtensionAbility組件的描述信息。
  • 應用運行過程中所需的權限信息。

具體屬性如下表:

屬性名稱屬性含義數據類型是否必輸
name標識當前Module的名稱,確保該名稱在整個應用中唯一。取值為長度不超過31字節的字符串,不支持中文。應用升級時允許修改該名稱,但需要應用適配Module相關數據目錄的遷移string
type標識當前Module的類型。支持的取值如下:
- entry:應用的主模塊。
- feature:應用的動態特性模塊。
*- har*:靜態共享包模塊。
- shared:動態共享包模塊。
string
srcEntry標識當前Module所對應的代碼路徑,取值為長度不超過127字節的字符串。string否,默認值為空。
description標識當前Module的描述信息,取值為長度不超過255字節的字符串,可以采用字符串資源索引格式。string否,默認值為空。
process標識當前Module的進程名,取值為長度不超過31字節的字符串。如果在HAP標簽下配置了process,則該應用的所有UIAbilityDataShareExtensionAbilityServiceExtensionAbility都運行在該進程中。說明:僅支持系統應用配置,第三方應用配置不生效。string否,默認值為app.json5文件下app標簽下的bundleName
mainElement標識當前Module的入口UIAbility名稱或者ExtensionAbility名稱,取值為長度不超過255字節的字符串。string否,默認值為空。
deviceTypes標識當前Module可以運行在哪類設備上。Array
deliveryWithInstall標識當前Module是否在用戶主動安裝的時候安裝,即該Module對應的HAP是否跟隨應用一起安裝。
- true:主動安裝時安裝。
- false:主動安裝時不安裝
boolean
installationFree標識當前Module是否支持免安裝特性。
- true:表示支持免安裝特性,且符合免安裝約束。
- false:表示不支持免安裝特性。
說明:當bundleType為元服務時,該字段需要配置為true。反之,該字段需要配置為false
boolean
virtualMachine標識當前Module運行的目標虛擬機類型,僅供云端分發使用,如應用市場和分發中心。如果目標虛擬機類型為ArkTS引擎,則其值為“ark+版本號”。string該標簽由IDE構建HAP的時候自動插入。
pages標識當前Moduleprofile資源,用于列舉每個頁面信息,取值為長度不超過255字節的字符串。string在有UIAbility的場景下,該標簽必輸。
metadata標識當前Module的自定義元信息,可通過資源引用的方式配置distributionFiltershortcuts等信息。只對當前ModuleUIAbilityExtensionAbility生效。Array否,默認值為空。
abilities標識當前ModuleUIAbility的配置信息,只對當前UIAbility生效。Array否,默認值為空。
extensionAbilities標識當前ModuleExtensionAbility的配置信息,只對當前ExtensionAbility生效。Array否,默認值為空。
definePermissions標識系統資源hap定義的權限,不支持應用自定義權限。Array否,默認值為空。
requestPermissions標識當前應用運行時需向系統申請的權限集合。Array否,默認值為空。
testRunner標識用于測試當前Mobule的測試框架的配置。object否,默認值為空。
atomicService標識當前應用是元服務時,有關元服務的相關配置。object
dependencies標識當前模塊運行時依賴的共享庫列表。Array否,默認值為空。
targetModuleName標識當前包所指定的目標module,確保該名稱在整個應用中唯一。取值為長度不超過31字節的字符串,不支持中文。配置該字段的Module具有overlay特性。僅在動態共享包(HSP)中適用。string否,默認值為空。
targetPriority標識當前Module的優先級,取值范圍為1~100。配置targetModuleName字段之后才需要配置該字段。僅在動態共享包(HSP)中適用。Integer否,默認值為1。
proxyData標識當前Module提供的數據代理列表Array否,默認值為空。
isolationMode標識當前Module的多進程配置項。支持的取值如下:
- nonisolationFirst:優先在非獨立進程中進行。
- isolationFirst:優先在獨立進程中運行。
- isolationOnly:只在獨立進程中運行。
- nonisolationOnly:只在非獨立進程中運行。
string否,默認值為nonisolationFirst
generateBuildHash標識當前HAP/HSP是否由打包工具生成哈希值。當配置為trrue時,如果系統OTA升級時應用versionCode保持不變,可根據哈希值判斷應用是否需要升級。該字段僅在app.json5文件中的generateBuildHash字段為false時生效。
說明:該字段僅對預置應用生效。
boolean否,默認值為false
compressNativeLibs標識libs庫是否以壓縮存儲的方式打包到HAP。
- true:libs庫以壓縮方式存儲。
- false:libs庫以不壓縮方式存儲。
boolean否,默認值為false。
libIsolation用于區分同應用不同HAP下的.so文件,以防止.so沖突。
- true:當前HAP的.so文件會存儲在libs目錄中以Module命名的路徑下。
- false:當前HAP的.so文件會直接存儲在libs目錄下。
string否,默認值為false。
fileContextMenu標識當前HAP的右鍵菜單配置項。取值為長度不超過255字節的字符串。string否,默認值為空。
querySchemes標識允許當前應用進行跳轉查詢的URL schemes,只允許entry類型模塊配置,最多50個,每個字符串取值不超過128字節。Array否,默認值為空。
routerMap標識當前模塊配置的路由表路徑。取值為長度不超過255字節的字符串string否,默認值為空。
appEnvironments標識當前模塊配置的應用環境變量,只允許entry和feature模塊配置。Array否,默認值為空。
appStartup標識當前Module啟動框架配置路徑,僅在Entry中生效。string否,默認值為空。

資源配置文件

資源分類

應用開發中使用的各類資源文件,需要放入特定子目錄中存儲管理。資源目錄的示例如下所示,base目錄、限定詞目錄、rawfile目錄、resfile目錄稱為資源目錄,elementmediaprofile稱之為資源組目錄。

resources
|---base
|   |---element
|   |   |---string.json
|   |---media
|   |   |---icon.png
|   |---profile
|   |   |---test_profile.json
|---en_US  // 默認存在的目錄,設備語言環境是美式英文時,優先匹配此目錄下資源
|   |---element
|   |   |---string.json
|   |---media
|   |   |---icon.png
|   |---profile
|   |   |---test_profile.json
|---zh_CN  // 默認存在的目錄,設備語言環境是簡體中文時,優先匹配此目錄下資源
|   |---element
|   |   |---string.json
|   |---media
|   |   |---icon.png
|   |---profile
|   |   |---test_profile.json
|---en_GB-vertical-car-mdpi // 自定義限定詞目錄示例,由開發者創建
|   |---element
|   |   |---string.json
|   |---media
|   |   |---icon.png
|   |---profile
|   |   |---test_profile.json
|---rawfile // 其他類型文件,原始文件形式保存,不會被集成到resources.index文件中。文件名可自定義。
|---resfile // 其他類型文件,原始文件形式保存,不會被集成到resources.index文件中。文件名可自定義。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38445.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38445.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38445.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從零開始實現大語言模型(一):概述

1. 前言 大家好,我是何睿智。我現在在做大語言模型相關工作,我用業余時間寫一個專欄,給大家講講如何從零開始實現大語言模型。 從零開始實現大語言模型是了解其原理及領域大語言模型實現路徑的最好方法,沒有之一。已有研究證明&…

《昇思25天學習打卡營第07天|函數式自動微分》

函數式自動微分 環境配置 # 實驗環境已經預裝了mindspore2.2.14,如需更換mindspore版本,可更改下面mindspore的版本號 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore2.2.14 import numpy as np imp…

Windows10錄屏,教你3個方法,簡單快速錄屏

“我的電腦系統是Windows10的系統,今晚要進行線上開會,但我實在有事沒辦法參加會議,想把會議的內容錄制下來方便我后續觀看。但卻找不到電腦錄屏功能在哪里打開?求助一下,誰能幫幫我?” 在數字化時代&…

mysql 命令 —— 查看表信息(show table status)

查詢表信息,如整個表的數據量大小、表的索引占用空間大小等 1、查詢某個庫下面的所有表信息: SHOW TABLE STATUS FROM your_database_name;2、查詢指定的表信息: SHOW TABLE STATUS LIKE your_table_name;如:Data_length 顯示表…

閑聊 .NET Standard

前言 有時候,我們從 Nuget 下載第三方包時,會看到這些包的依賴除了要求 .NET FrameWork、.NET Core 等的版本之外,還會要求 .NET Standard 的版本,比如這樣: 這個神秘的 .NET Standard 是什么呢? .NET St…

【算法】字母異位詞分組

題目:字母異位詞分組 給你一個字符串數組,請你將 字母異位詞 組合在一起。可以按任意順序返回結果列表。 字母異位詞 是由重新排列源單詞的所有字母得到的一個新單詞。 示例 1: 輸入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] …

從零開始搭建spring boot多模塊項目

一、搭建父級模塊 1、打開idea,選擇file–new–project 2、選擇Spring Initializr,選擇相關java版本,點擊“Next” 3、填寫父級模塊信息 選擇/填寫group、artifact、type、language、packaging(后面需要修改)、java version(后面需要修改成和第2步中版本一致)。點擊“…

【0300】Postgres內核動態哈希表實現機制(1)

相關文章: 【0299】Postgres內核之哈希表(Hash Tables) 0 概述 在【0299】Postgres內核之哈希表(Hash Tables)一文中,講解了哈希表的作用、實現、優缺點等特性。本文開始,將詳細分析Postgres內…

MySQL之應用層優化(三)

應用層優化 應用層緩存 2.本地共享內存緩存 這種緩存一般是中等大小(幾個GB),快速,難以在多臺機器間同步。它們對小型的半靜態位數據比較合適。例如每個州的城市列表,分片數據存儲的分區函數(映射表),或者使用存活時間(TTL)策略…

記錄一次Chrome瀏覽器自動排序ajax請求的JSON數據問題

文章目錄 1.前言2. 為什么會這樣?3.如何解決? 1.前言 作者作為新人入職的第一天,mentor給了一個維護公司運營平臺的小需求,具體需求是根據運營平臺的某個管理模塊所展示記錄的某些字段對展示記錄做排序。 第一步: myb…

工業觸摸一體機優化MES應用開發流程

工業觸摸一體機在現代工業生產中扮演著至關重要的角色,它集成了智能觸摸屏和工業計算機的功能,廣泛應用于各種生產場景中。而制造執行系統(MES)作為工業生產管理的重要工具,對于提高生產效率、降低成本、優化資源利用具…

力扣hot100-普通數組

文章目錄 題目:最大子數組和方法1 動態規劃方法2 題目:合并區間題解 題目:最大子數組和 原題鏈接:最大子數組和 方法1 動態規劃 public class T53 {//動態規劃public static int maxSubArray(int[] nums) {if (nums.length 0…

C++基礎知識-編譯相關

記錄C語言相關的基礎知識 1 C源碼到可執行文件的四個階段 預處理(.i)、編譯(.s)、匯編(.obj)、鏈接。 1.1 預處理 預處理階段,主要完成宏替換、文件展開、注釋刪除、條件編譯展開、添加行號和文件名標識,輸出.i/.ii預處理文件。 宏替換,…

【UML用戶指南】-26-對高級行為建模-狀態圖

目錄 1、概念 2、組成結構 3、一般用法 4、常用建模技術 4.1、對反應型對象建模 一個狀態圖顯示了一個狀態機。在為對象的生命期建模中 活動圖展示的是跨過不同的對象從活動到活動的控制流 狀態圖展示的是單個對象內從狀態到狀態的控制流。 在UML中,用狀態圖…

tcpdump命令詳解及使用實例

1、抓所有網卡數據包,保存到指定路徑 tcpdump -i any -w /oemdata/123.pcap&一、tcpdump簡介 tcpdump可以將網絡中傳送的數據包完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,并提供and、or、not等邏輯語句來去掉無用的信…

【Python】已解決:SyntaxError: positional argument follows keyword argument

文章目錄 一、分析問題背景二、可能出錯的原因三、錯誤代碼示例四、正確代碼示例五、注意事項 已解決:SyntaxError: positional argument follows keyword argument 一、分析問題背景 在Python編程中,當我們在調用函數時混合使用位置參數(p…

RabbitMQ進階篇

文章目錄 發送者的可靠性生產者重試機制實現生產者確認 MQ的可靠性數據持久化交換機持久化隊列持久化消息持久化 Lazy Queue(可配置~)控制臺配置Lazy模式代碼配置Lazy模式更新已有隊列為lazy模式 消費者的可靠性消費者確認機制失敗重試機制失敗處理策略 業務冪等性唯一消息ID業…

西部智慧健身小程序+華為運動健康服務

1、 應用介紹 西部智慧健身小程序為用戶提供一站式全流程科學健身綜合服務。用戶通過登錄微信小程序,可享用健康篩查、運動風險評估、體質檢測評估、運動處方推送、個人運動數據監控與評估等公益服務。 2、 體驗介紹西部智慧健身小程序華為運動健康服務核心體驗如…

idea xml ctrl+/ 注釋格式不對齊

處理前 處理后 解決辦法 取消這兩個勾選

核方法總結(三)———核主成分(kernel PCA)學習筆記

一、核主成分 1.1 和PCA的區別 PCA (主成分分析)對應一個線性高斯模型(參考書的第二章),其基本假設是數據由一個符合正態分布的隱變量通過一個線性映射得到,因此可很好描述符合高斯分布的數據。然而在很多實…