應用程式資訊清單

應用程式資訊清單說明應用程式需要的資源,也稱為 應用程式功能。 每個應用程式都有應用程式資訊清單。

應用程式必須在應用程式資訊清單的 [ 功能 ] 區段中列出每個必要資源,以加入宣告使用功能;預設不會啟用任何功能。 如果應用程式要求未列出的功能,要求會失敗。 如果應用程式資訊清單檔案包含錯誤,則嘗試側載應用程式會失敗。 每個應用程式的資訊清單都必須儲存為 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 以進行應用程式開發。