應用程式資訊清單
應用程式資訊清單說明應用程式需要的資源,也稱為 應用程式功能。 每個應用程式都有應用程式資訊清單。
應用程式必須在應用程式資訊清單的 [ 功能 ] 區段中列出每個必要資源,以加入宣告使用功能;預設不會啟用任何功能。 如果應用程式要求未列出的功能,要求會失敗。 如果應用程式資訊清單檔案包含錯誤,則嘗試側載應用程式會失敗。 每個應用程式的資訊清單都必須儲存為 app_manifest.json 儲存在您電腦上應用程式資料夾的根目錄中。
當您建立應用程式時,Azure 球體範本會自動建立預設的應用程式資訊清單。 您必須編輯預設資訊清單,才能列出應用程式需要的功能。 每個 Azure 球體範例也包含應用程式資訊清單。 如果您的應用程式是以樣本為基礎,您可能也需要編輯資訊清單。
不同的 Azure 球體裝置可能會以不同的方式公開晶片的功能。 因此,您在資訊清單中用來識別特定功能的值,例如 GPIO PIN 碼,可能會根據您開發的硬體而有所不同。 管理目標硬體相依性 可提供高階應用程式之硬體目標的詳細資訊。 在 高階應用程式的應用程式資訊清單中,使用 Microsoft Azure 球體 SDK 安裝目錄之 HardwareDefinitions 資料夾中 JSON 檔案中定義的常數。 安裝目錄的確切位置在 Windows 和 Linux 上會有所不同。 在支援 RTApp) 的即時應用程式 (中,使用應用程式 資訊清單的 [內容] 中所列的原始值。
當任何應用程式側載或部署到裝置時,Azure 球體執行時間會讀取應用程式資訊清單,以確認允許應用程式使用哪些功能。 嘗試存取未列在資訊清單中的資源會導致 API 錯誤,例如 EPERM (許可權遭拒絕) 。 裝置上只有一個應用程式可以使用資源。 如果您安裝要求已在使用之資源的應用程式,嘗試將會失敗。
應用程式資訊清單的內容
應用程式資訊清單包含下列專案:
名字 | 描述 |
---|---|
SchemaVersion | 使用中的應用程式資訊清單架構版本。 目前必須為 1。 必填。 |
名字 | 應用程式名稱。 在專案建立時,此值會設定為專案的名稱。 名稱可以是任何長度,但只有前 31 個字元會儲存在影像套件中;因此,在有關影像套件的查詢中,名稱會被截斷。 必填。 |
ComponentId | 元件的識別碼。 Visual Studio 會在您建立應用程式時建立此識別碼。 如果您不是使用 Visual Studio,請參閱 產生元件識別碼 以取得建立識別碼的相關資訊。 必填。 |
EntryPoint | 可執行檔的名稱與應用程式檔案系統映射中的相對路徑,後者是在應用程式建立時建立。 Visual Studio 目前針對此值使用 /bin/app。 必填。 |
CmdArgs | 在啟動時傳遞至應用程式的引數。 以雙引號括住每個引數,並以逗號分隔引數。 選。 |
TargetBetaApis | 指定應用程式需要 Beta API,並識別所使用的 Beta API 集合。 如果應用程式是使用 Beta API 建置,則會在組建程式期間自動新增此欄位。 選。 如需詳細資訊,請參閱 使用 Beta 功能 。 |
ApplicationType | 應用程式類型。 選。 只有在您建置 gdbserver 的取代專案時,才設定為偵錯程式。 |
能力 | 指定應用程式資源需求的金鑰/值組清單。 必填。 |
MallocVersion | 指定 malloc 版本的整數,其中 1=standard 和 2=mallocng,這是一個在MUSL 版本中大於 1.2.1 的增強型馬場。 所有新應用程式開發都建議使用版本 2。 |
[ 功能] 區段支援下列專案:
注意
高階應用程式可以使用硬體定義檔案的功能值,也可以使用原始值。 不過,您無法在相同的功能中混合這兩種數數值型別。 RTApps 只能針對功能使用原始值。
名字 | 描述 |
---|---|
Adc | 應用程式使用 ADC) 控制器 (類比數位轉換。 此功能會保留由 8 pin 區塊) 組成的整個 ADC 控制器 (,而不只是在區塊中釘選 0。 在高階應用程式中,指定硬體定義標頭檔案中所宣告的周邊名稱。 在 RTApp 中,指定硬體定義 JSON 檔案中宣告的 AppManifestValue。 硬體定義範例: "Adc": [ "$MT3620_RDB_ADC_CONTROLLER0" ] Raw 值範例: "Adc": [ "ADC-CONTROLLER-0" ] API 參照:Applibs adc.h 概念性:在 Azure 球體上使用 ADC |
AllowedApplicationConnections | 允許應用程式連線的應用程式元件識別碼清單。 例子: "AllowedApplicationConnections": [ "005180BC-402F-4CB3-A662-72937DBCDE47" ] API 參考:Applibs 應用程式。h 概念性:使用高階應用程式進行溝通 |
AllowedConnections | 允許應用程式連線 (IPv4) 的 DNS 主機名稱或 IP 位址清單。 如果應用程式使用Azure IoT 中樞,清單必須包含中樞的 IP 位址或 DNS 主機名稱,通常是hub-name.azure-devices.net。 不接受名稱和 IP 位址中的埠號碼和萬用字元。 例子: "AllowedConnections" : [ "my-hub.example.net", "global.azure-devices-provisioning.net" ] |
AllowedTcpServerPorts | 允許內送 TCP 流量的埠清單。 您最多可以包含 10 個埠,而且每個埠都必須個別列出。 支援的埠是 1024 到 65535。 您可以為 TCP 和 UDP 指定相同的埠。 不過,如果您為裝置上的多個應用程式指定相同的埠,則第二個要執行的應用程式將無法載入。 例子: "AllowedTcpServerPorts": [ 1024, 65535 ] |
AllowedUdpServerPorts | 允許內送 UDP 流量的埠清單。 您最多可以包含 10 個埠,而且每個埠都必須個別列出。 支援的埠是 1024 到 65535。 您可以為 TCP 和 UDP 指定相同的埠。 不過,如果您為裝置上的多個應用程式指定相同的埠,則第二個要執行的應用程式將無法載入。 例子: "AllowedUdpServerPorts": [ 1024, 50000 ] |
CertStore | 指出高階應用程式是否具有使用 CertStore API 管理憑證的許可權的布林值:啟用 API 的 True;否則,false。 例子: "CertStore" : true |
DeviceAuthentication | 指定 Azure 球體 UUID 的字串 (舊版) 租使用者用來進行裝置驗證。 例子: "DeviceAuthentication": "77304f1f-9530-4157-8598-30bc1f3d66f0" |
DhcpService | 指出應用程式是否具有設定 DHCP 服務的許可權的布林值:如果應用程式具有此功能,則為 True;否則,false。 例子: "DhcpService" : true API 參考:Applibs 網路功能。h 概念性:使用網路服務 |
EnterpriseWifiConfig | 指出高階應用程式是否具有建立 EAP-TLS 網路的許可權並與其建立憑證的相關聯的布林值:如果應用程式具備此功能,則為 True;否則,false。 例子: "EnterpriseWifiConfig" : true |
ExternalInterrupt | RTApp 使用的外部中斷清單。 這項功能不適用於高階應用程式。 例子: "ExternalInterrupt": [ "EINT4", "EINT12" ] |
Gpio | 應用程式使用的 GPIO 清單。 在高階應用程式中,指定硬體定義標頭檔案中宣告的 GPIO 名稱,例如 $MT 3620_RDB_LED1_RED。 在 RTApp 中,指定對應到硬體定義 JSON 檔案中 GPIO 數位的整數。 例如, 8 指定 GPIO 8。 硬體定義範例: "Gpio": [ "$MT3620_RDB_HEADER1_PIN6_GPIO", "$MT3620_RDB_LED1_RED", "$MT3620_RDB_BUTTON_A" ] Raw 值範例: "Gpio": [ 8, 12 ] API 參考:Applibs gpio.h 概念性:在 Azure 球體上使用 GPIO |
HardwareAddressConfig | 指出應用程式是否具有設定網路介面硬體位址的許可權的布林值:如果應用程式具備此功能,則為 True;否則,false。 例子: "HardwareAddressConfig" : true API 參考:Applibs 網路功能。h 概念性:使用網路服務 |
HeapMemStats | 指出是否啟用堆記憶體配置追蹤的布林值:如果應用程式具備此功能,則為 True;否則,false。 例子: "HeapMemStats": true 概念性:在高階應用程式中使用記憶體 |
I2cMaster | 應用程式所使用的 I2C 主介面清單。 在高階應用程式中,指定硬體定義標頭檔案中所宣告的周邊名稱。 在 RTApp 中,指定硬體定義 JSON 檔案中宣告的 AppManifestValue 。 硬體定義範例: "I2cMaster": [ "$MT3620_RDB_HEADER2_ISU0_I2C", "$MT3620_RDB_HEADER4_ISU1_I2C" ] Raw 值範例: "I2cMaster": [ "ISU0", "ISU1" ] API 參照:Applibs i2c.h 概念性:搭配 Azure 球體使用 I2C |
I2sSubordinate | I2S 間的 IC 間音效 () RTApp 使用的附屬介面。 這項功能不適用於高階應用程式。 Raw 值範例: 「I2sSubordinate」: [ 「I2S0」, 「I2S1」 ] |
MutableStorage | 可讓應用程式使用持續儲存空間的可靜音儲存空間設定。 例子: "MutableStorage" : { "SizeKB": 64, } API 參考:Applibs 儲存空間。h 概念性:使用 Azure 球體上的儲存空間 |
NetworkConfig | 指出應用程式是否具有設定網路介面的許可權的布林值:如果應用程式具備此功能,則為 True;否則,false。 例子: "NetworkConfig" : true API 參考:Applibs 網路功能。h 概念性:使用網路服務 |
PowerControls | 代表控制裝置電源狀態之細部功能的字串陣列。 ForcePowerDown 和 ForceReboot 是唯一支援的值。 警告: 由於 ForcePowerDown 和 ForceReboot 允許應用程式立即終止所有應用程式,您 必須 確定您的裝置仍可接收作業系統和應用程式更新。 如需詳細資訊和指導方針,請參閱 強制電源下移和更新。 例子: "PowerControls": ["ForcePowerDown", "ForceReboot"] API 參考:Applibs 電源管理。h 概念性:管理 Azure 球體裝置的電源下拉式狀態 |
Pwm | pulse 寬度調製器 (應用程式使用的 PWM) 。 在高階應用程式中,指定硬體定義標頭檔案中所宣告的周邊名稱。 在 RTApp 中,指定硬體定義 JSON 檔案中宣告的 AppManifestValue 。 硬體定義範例: "Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ] Raw 值範例: "Pwm": [ "PWM-CONTROLLER-0" ] API 參照:Applibs pwm.h 概念性:在高階應用程式中使用 PWM |
ReadNetworkProxyConfig | 指出應用程式是否具有擷取 Proxy 設定的許可權的布林值:如果應用程式具備此功能,則為 True;否則,false。 例子: "ReadNetworkProxyConfig": true API 參考:Applibs 網路功能。h 概念性:連線至 Web 服務 |
SntpService | 指出應用程式是否具有設定 SNTP 服務的許可權的布林值:如果應用程式有此功能,則為 True;否則,false。 例子: "SntpService" : true API 參考:Applibs 網路功能。h 概念性:SNTP 伺服器 |
SoftwareUpdateDeferral | 指出應用程式是否具有將軟體更新延遲一段時間的許可權的布林值:如果應用程式具備此功能,則為 True;否則,false。 例子: "SoftwareUpdateDeferral" : true API 參照:Applibs 事件開啟。H 概念性:延遲裝置更新 |
SpiMaster | 應用程式所使用的 SPI 主介面清單。 在高階應用程式中,指定硬體定義標頭檔案中所宣告的周邊名稱。 在 RTApp 中,指定硬體定義 JSON 檔案中宣告的 AppManifestValue 。 硬體定義範例: "SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ] Raw 值範例: "SpiMaster": [ "ISU0", "ISU1" ] API 參照:Applibs spi.h 概念性:搭配 Azure 球體使用 SPI |
SystemEventNotifications | 指出應用程式是否具有接收系統事件通知的許可權的布林值:如果應用程式具備此功能,則為 True;否則,false。 例子: "SystemEventNotifications" : true API 參照:Applibs sysevent.h 概念性:延遲裝置更新 |
SystemTime | 指出應用程式是否具有設定系統時間的許可權的布林值:如果應用程式具備此功能,則為 True;否則,false。 例子: "SystemTime" : true API 參照:Applibs rtc.h 概念性:管理 Azure 球體上的系統時間和 RTC |
TimeSyncConfig | 指出應用程式是否具有設定時間同步處理服務的許可權的布林值:如果應用程式有此功能,則為 True;否則,false。 例子: "TimeSyncConfig" : true |
Uart | 應用程式使用的 UART 周邊設備清單。 這項功能無法在 MT3620 開發面板上啟用專用的 UART。 如需專用 UART 的相關資訊,請參閱 建立支援即時功能的應用程式。 在高階應用程式中,指定硬體定義標頭檔案中所宣告的周邊名稱。 在 RTApp 中,指定硬體定義 JSON 檔案中宣告的 AppManifestValue 。 硬體定義範例: "Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ] Raw 值範例: "Uart": [ "ISU0", "ISU1" ] API 參照:Applibs uart.h 概念性:在 Azure 球體上使用 UART |
WifiConfig | 指出應用程式是否具有使用 WifiConfig API 來變更 Wi-Fi 設定的許可權的布林值:如果應用程式具備此功能,則為 True;否則,false。 例子: "WifiConfig" : true API 參照:Applibs wificonfig.h 概念性:設定網路功能 |
MutableStorage區段支援下列專案:
名字 | 描述 |
---|---|
SizeKB | 指定 kibibytes 中可靜音儲存空間大小的整數。 最大值為 64。 0 的值相當於沒有可靜音儲存功能。 |
例子
下列顯示針對 MT3620 RDB 硬體的高層級應用程式的範例 app_manifest.json 檔案:
{
"SchemaVersion": 1,
"Name": "MyTestApp",
"ComponentId": "072c9364-61d4-4303-86e0-b0f883c7ada2",
"EntryPoint": "/bin/app",
"CmdArgs": ["-m", "262144", "-t", "1"],
"Capabilities": {
"AllowedConnections" : [
"my-hub.example.net",
"contoso.azure-devices.net",
"global.azure-devices-provisioning.net" ],
"AllowedTcpServerPorts": [ 1024, 65535 ],
"AllowedUdpServerPorts": [ 1024, 50000 ],
"DeviceAuthentication": "77304f1f-9530-4157-8598-30bc1f3d66f0",
"Gpio": [ "$MT3620_RDB_HEADER1_PIN6_GPIO", "$MT3620_RDB_LED1_RED", "$MT3620_RDB_BUTTON_A" ],
"HardwareAddressConfig": true,
"I2cMaster": [ "ISU2" ],
"MutableStorage" : {
"SizeKB": 64,
},
"SpiMaster": [ "ISU1" ],
"SystemTime" : true,
"Uart": [ "ISU0" ],
"WifiConfig" : true
},
"ApplicationType": "Default",
"MallocVersion": 2
}
MyTestApp 的範例 app_manifest.json 檔案會執行下列動作:
- 將四個命令列引數傳遞至應用程式。
- 只允許連線到 DNS 主機 my-hub.example.net、contoso.azure-devices.net 和 global.azure-devices-provisioning.net。
- 允許埠 1024 和 65535 上的內送 TCP 流量。
- 允許埠 1024 和 50000 上的內送 UDP 流量。
- 指定 Azure 球 (舊版) 租使用者 UUID 用於裝置驗證,並允許裝置布建服務的連線。
- 指定使用三個 GPIO。
- 允許應用程式設定網路介面的硬體位址。
- 指定使用一個 UART 周邊設備。
- 啟用具有 64 KIBIB 儲存空間的可靜音儲存空間。
- 可讓應用程式使用 WifiConfig API 來變更 Wi-Fi 設定。
- 指定使用一個 SPI 主介面。
- 指定使用一個 I2C 主介面。
- 可讓應用程式使用 RTC API 設定系統時間。
- 啟用 mallocng 以進行應用程式開發。