Manifest aplikace

Manifest aplikace popisuje prostředky, označované také jako schopnosti aplikace, které aplikace vyžaduje. Každá aplikace má manifest aplikace.

Aplikace se musí přihlásit k používání funkcí tak, že v manifestu aplikace v části Schopnosti vypisují všechny požadované prostředky. Ve výchozím nastavení nejsou povolené žádné možnosti. Pokud aplikace požádá o funkci, která není uvedená, požadavek selže. Pokud soubor manifestu aplikace obsahuje chyby, pokusy o zkušební načtení aplikace se nezdaří. Manifest každé aplikace musí být uložený jako app_manifest.json v kořenovém adresáři složky aplikace na vašem počítači.

Šablona Azure Sphere automaticky vytvoří výchozí manifest aplikace při vytváření aplikace. Musíte upravit výchozí manifest tak, aby vypisovat možnosti, které vaše aplikace vyžaduje. Každá ukázka Azure Sphere obsahuje také manifest aplikace. Pokud aplikaci založíte na ukázce, budete pravděpodobně muset také upravit manifest.

Různá zařízení Azure Sphere můžou zpřístupňovat funkce čipu různými způsoby. V důsledku toho se hodnota, kterou v manifestu použijete k identifikaci konkrétní funkce, například špendlík GPIO, může lišit v závislosti na hardwaru, pro který vyvíjíte. Správa cílových hardwarových závislostí poskytuje další informace o hardwarových cílech pro aplikaci vysoké úrovně. V manifestu aplikace pro aplikaci vysoké úrovně použijte konstanty, které jsou definované v souboru JSON ve složce HardwareDefinitions instalačního adresáře sady Microsoft Azure Sphere SDK. Přesné umístění instalačního adresáře se bude lišit ve Windows a Linuxu. V aplikaci podporující v reálném čase (RTApp) použijte nezpracované hodnoty, které jsou uvedeny v části Obsah manifestu aplikace.

Když se nějaká aplikace načte bokem nebo nasadí do zařízení, modul runtime Azure Sphere načte manifest aplikace, aby zjistil, které funkce může aplikace používat. Pokusy o přístup k prostředkům, které nejsou uvedené v manifestu, budou mít za následek chyby rozhraní API, jako je například EPERM (oprávnění odepřeno). Prostředek může používat jenom jedna aplikace na zařízení. Pokud nainstalujete aplikaci, která požaduje prostředek, který se už používá, pokus se nezdaří.

Obsah manifestu aplikace

Manifest aplikace obsahuje následující položky:

Jméno Popis
SchemaVersion Verze schématu manifestu aplikace se používá. V současné době musí být 1. Požadované.
Jméno Název aplikace Při vytváření projektu je tato hodnota nastavena na název projektu. Název může mít libovolnou délku, ale v balíčku obrázku je uloženo pouze prvních 31 znaků; v dotazech týkajících se balíčku image se tak název zobrazí zkráceně. Požadované.
Id komponenty ID komponenty. Visual Studio toto ID vytvoří při sestavování aplikace. Pokud sadu Visual Studio nepoužíváte, informace o vytvoření ID najdete v tématu Generování ID komponenty . Požadované.
Entrypoint Název spustitelného souboru společně s relativní cestou v imagi systému souborů aplikace, která se vytvoří při sestavení aplikace. Visual Studio pro tuto hodnotu aktuálně používá /bin/app. Požadované.
CmdArgs Argumenty, které se mají předat aplikaci při spuštění. Každý argument uzavřete do dvojitých uvozovek a oddělte argumenty čárkou. Volitelné.
TargetBetaApis Určuje, že aplikace vyžaduje beta rozhraní API a identifikuje sadu použitých beta rozhraní API. Toto pole se automaticky přidá během procesu sestavení, pokud je aplikace sestavená pomocí beta rozhraní API. Volitelné. Podrobnosti najdete v tématu Použití beta funkcí .
Typ aplikace Typ aplikace Volitelné. Nastavte ladicí program jenom v případě, že vytváříte náhradu za gdbserver.
Schopnosti Seznam párů klíč/hodnota, které určují požadavky na prostředky aplikace. Požadované.
MallocVersion Celé číslo, které určuje verzi malloc, kde 1=standard a 2=mallocng, což je rozšířené malloc dostupné ve verzích MUSL větších než 1.2.1. Pro všechny nové aplikace se doporučuje verze 2.

Část Schopnosti podporuje následující možnosti:

Poznámka

Aplikace vysoké úrovně můžou používat hodnoty schopností ze souborů definic hardwaru nebo nezpracované hodnoty. Nemůžete ale kombinovat oba typy hodnot ve stejné funkci. RtApps můžou pro funkce používat jenom nezpracované hodnoty.

Jméno Popis
Adc Řadič analog-to-digital conversion (ADC), který používá aplikace. Tato funkce vyhrazuje celý kontroler ADC (který se skládá z bloku 8 pinů), ne jen pin 0 v bloku.
V aplikaci vysoké úrovně zadejte název periferního zařízení, který je deklarován v souboru hlavičky definice hardwaru.
V aplikaci RTApp zadejte hodnotu AppManifestValue, která je deklarována v souboru JSON definice hardwaru.
Příklad definice hardwaru:"Adc": [ "$MT3620_RDB_ADC_CONTROLLER0" ]
Příklad nezpracované hodnoty:"Adc": [ "ADC-CONTROLLER-0" ]
Referenční informace k rozhraní API:Applibs adc.h
Koncepční:Použití řadičů služby ACS v Azure Sphere
AllowedApplicationConnections Seznam ID komponent aplikace, ke kterým se aplikace může připojit.
Příklad:"AllowedApplicationConnections": [ "005180BC-402F-4CB3-A662-72937DBCDE47" ]
Referenční informace k rozhraní API:Applibs application.h
Koncepční:Komunikace s aplikací vysoké úrovně
AllowedConnections Seznam názvů hostitelů DNS nebo IP adres (IPv4), ke kterým se aplikace může připojit. Pokud aplikace používá Azure IoT Hub, musí seznam obsahovat IP adresu nebo název hostitele DNS centra, obvykle hub-name.azure-devices.net. Čísla portů a zástupné znaky v názvech a IP adresách se nepřijímají.
Příklad:"AllowedConnections" : [ "my-hub.example.net", "global.azure-devices-provisioning.net" ]
AllowedTcpServerPorts Seznam portů, které umožňují příchozí provoz TCP. Můžete zahrnout až 10 portů a každý port musí být uvedený samostatně. Podporované porty jsou 1024 až 65535. Můžete zadat stejné porty pro PROTOKOL TCP i UDP. Pokud ale zadáte stejný port pro více než jednu aplikaci v zařízení, nenačte se druhá aplikace, která se má spustit.
Příklad:"AllowedTcpServerPorts": [ 1024, 65535 ]
AllowedUdpServerPorts Seznam portů, které umožňují příchozí provoz UDP. Můžete zahrnout až 10 portů a každý port musí být uvedený samostatně. Podporované porty jsou 1024 až 65535. Můžete zadat stejné porty pro PROTOKOL TCP i UDP. Pokud ale zadáte stejný port pro více než jednu aplikaci v zařízení, nenačte se druhá aplikace, která se má spustit.
Příklad:"AllowedUdpServerPorts": [ 1024, 50000 ]
CertStore Logická hodnota označující, jestli má aplikace vysoké úrovně oprávnění ke správě certifikátů pomocí rozhraní API CertStore: true pro povolení rozhraní API; jinak nepravda.
Příklad:"CertStore" : true
DeviceAuthentication Řetězec, který určuje UUID tenanta Azure Sphere (starší verze), který se má použít k ověřování zařízení.
Příklad:"DeviceAuthentication": "77304f1f-9530-4157-8598-30bc1f3d66f0"
DhcpService Logická hodnota označující, jestli má aplikace oprávnění ke konfiguraci služby DHCP: true, pokud má aplikace tuto funkci; jinak nepravda.
Příklad:"DhcpService" : true
Referenční informace k rozhraní API:Applibs networking.h
Koncepční:Použití síťových služeb
EnterpriseWifiConfig Logická hodnota označující, jestli má aplikace vysoké úrovně oprávnění k vytvoření sítě EAP-TLS a přidružit k ní certifikáty: true, pokud aplikace tuto funkci má; jinak nepravda.
Příklad:"EnterpriseWifiConfig" : true
ExternalInterrupt Seznam externích přerušení, která aplikace RTApp používá. Tato funkce není dostupná pro aplikace vysoké úrovně.
Příklad:"ExternalInterrupt": [ "EINT4", "EINT12" ]
Gpio Seznam objektů zásad skupiny, které aplikace používá.
V aplikaci vysoké úrovně zadejte název GPIO, který je deklarován v souboru hlavičky definice hardwaru, například $MT 3620_RDB_LED1_RED.
V aplikaci RTApp zadejte celá čísla, která odpovídají číslům GPIO v souboru JSON definice hardwaru. Například 8 určuje GPIO 8.
Příklad definice hardwaru:"Gpio": [ "$MT3620_RDB_HEADER1_PIN6_GPIO", "$MT3620_RDB_LED1_RED", "$MT3620_RDB_BUTTON_A" ]
Příklad nezpracované hodnoty:"Gpio": [ 8, 12 ]
Referenční informace k rozhraní API:Applibs gpio.h
Koncepční:Použití objektů zásad skupiny v Azure Sphere
HardwareAddressConfig Logická hodnota označující, jestli má aplikace oprávnění ke konfiguraci hardwarové adresy síťového rozhraní: true, pokud má aplikace tuto funkci; jinak nepravda.
Příklad:"HardwareAddressConfig" : true
Referenční informace k rozhraní API:Applibs networking.h
Koncepční:Použití síťových služeb
HeapMemStats Logická hodnota označující, jestli je povolené sledování přidělení paměti haldy: true, pokud má aplikace tuto funkci; jinak nepravda.
Příklad:"HeapMemStats": true
Koncepční:Využití paměti v aplikacích vysoké úrovně
I2cMaster Seznam hlavních rozhraní I2C, které aplikace používá.
V aplikaci vysoké úrovně zadejte název periferního zařízení, který je deklarován v souboru hlavičky definice hardwaru.
V aplikaci RTApp zadejte hodnotu AppManifestValue , která je deklarována v souboru JSON definice hardwaru.
Příklad definice hardwaru:"I2cMaster": [ "$MT3620_RDB_HEADER2_ISU0_I2C", "$MT3620_RDB_HEADER4_ISU1_I2C" ]
Příklad nezpracované hodnoty:"I2cMaster": [ "ISU0", "ISU1" ]
Referenční informace k rozhraní API:Applibs i2c.h
Koncepční:Použití I2C s Azure Sphere
I2sSubordinate Podřízené rozhraní I2S (Inter-IC Sound) používané aplikací RTApp Tato funkce není dostupná pro aplikace vysoké úrovně. Příklad nezpracované hodnoty: "I2sSubordinate": [ "I2S0", "I2S1" ]
MutableStorage Proměnlivá nastavení úložiště, která aplikaci umožňují používat trvalé úložiště.
Příklad:"MutableStorage" : { "SizeKB": 64, }
Referenční informace k rozhraní API:Applibs storage.h
Koncepční:Použití úložiště v Azure Sphere
Konfigurace sítě Logická hodnota označující, jestli má aplikace oprávnění ke konfiguraci síťového rozhraní: true, pokud má aplikace tuto funkci; jinak nepravda.
Příklad:"NetworkConfig" : true
Referenční informace k rozhraní API:Applibs networking.h
Koncepční:Použití síťových služeb
PowerControls Pole řetězců, které představují podrobné možnosti řízení stavu napájení zařízení. Jedinými podporovanými hodnotami jsou ForcePowerDown a ForceReboot.
Upozornění: Vzhledem k tomu, že ForcePowerDown a ForceReboot umožňují aplikaci okamžitě ukončit všechny aplikace, musíte se ujistit, že vaše zařízení stále může přijímat aktualizace operačního systému a aplikací. Další informace a pokyny najdete v tématu Vynucení vypnutí a aktualizace.
Příklad:"PowerControls": ["ForcePowerDown", "ForceReboot"]
Referenční informace k rozhraní API:Applibs powermanagement.h
Koncepční:Správa stavu vypnutí pro zařízení Azure Sphere
Pwm Modulátor šířky impulsů (PWM), který se používá v aplikaci.
V aplikaci vysoké úrovně zadejte název periferního zařízení, který je deklarován v souboru hlavičky definice hardwaru.
V aplikaci RTApp zadejte hodnotu AppManifestValue , která je deklarována v souboru JSON definice hardwaru.
Příklad definice hardwaru:"Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]
Příklad nezpracované hodnoty:"Pwm": [ "PWM-CONTROLLER-0" ]
Referenční informace k rozhraní API:Applibs pwm.h
Koncepční:Použití PWM v aplikacích vysoké úrovně
ReadNetworkProxyConfig Logická hodnota označující, zda má aplikace oprávnění k načtení konfigurace proxy serveru: true, pokud má aplikace tuto funkci; jinak nepravda.
Příklad:"ReadNetworkProxyConfig": true
Referenční informace k rozhraní API:Applibs networking.h
Koncepční:Připojení k webovým službám
SntpService Logická hodnota označující, jestli má aplikace oprávnění ke konfiguraci služby SNTP: true, pokud má aplikace tuto funkci; jinak nepravda.
Příklad:"SntpService" : true
Referenční informace k rozhraní API:Applibs networking.h
Koncepční:Server SNTP
SoftwareUpdateDeferral Logická hodnota označující, zda má aplikace oprávnění odložit aktualizace softwaru o omezenou dobu: true, pokud má aplikace tuto funkci; jinak nepravda.
Příklad:"SoftwareUpdateDeferral" : true
Referenční informace k rozhraní API:Applibs eventloop.H
Koncepční:Odložení aktualizací zařízení
SpiMaster Seznam hlavních rozhraní SPI, které aplikace používá.
V aplikaci vysoké úrovně zadejte název periferního zařízení, který je deklarován v souboru hlavičky definice hardwaru.
V aplikaci RTApp zadejte hodnotu AppManifestValue , která je deklarována v souboru JSON definice hardwaru.
Příklad definice hardwaru:"SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ]
Příklad nezpracované hodnoty:"SpiMaster": [ "ISU0", "ISU1" ]
Referenční informace k rozhraní API:Applibs spi.h
Koncepční:Použití SPI s Azure Sphere
SystemEventNotifications Logická hodnota označující, jestli má aplikace oprávnění přijímat oznámení o systémových událostech: true, pokud má aplikace tuto funkci; jinak nepravda.
Příklad:"SystemEventNotifications" : true
Referenční informace k rozhraní API:Applibs sysevent.h
Koncepční:Odložení aktualizací zařízení
SystemTime Logická hodnota označující, jestli má aplikace oprávnění ke konfiguraci systémového času: true, pokud má aplikace tuto funkci; jinak nepravda.
Příklad:"SystemTime" : true
Referenční informace k rozhraní API:Applibs rtc.h
Koncepční:Správa systémového času a RTC v Azure Sphere
TimeSyncConfig Logická hodnota označující, jestli má aplikace oprávnění ke konfiguraci služby synchronizace času: true, pokud má aplikace tuto funkci; jinak nepravda.
Příklad:"TimeSyncConfig" : true
Uart Seznam periferních zařízení UART, která aplikace používá. Tato funkce nepovoluje vyhrazený objekt UART na vývojovém panelu MT3620. Informace o vyhrazeném objektu UART najdete v tématu Vytvoření aplikace podporující v reálném čase.
V aplikaci vysoké úrovně zadejte název periferního zařízení, který je deklarován v souboru hlavičky definice hardwaru.
V aplikaci RTApp zadejte hodnotu AppManifestValue , která je deklarována v souboru JSON definice hardwaru.
Příklad definice hardwaru:"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ]
Příklad nezpracované hodnoty:"Uart": [ "ISU0", "ISU1" ]
Referenční informace k rozhraní API:Applibs uart.h
Koncepční:Použití UART v Azure Sphere
Konfigurace wi-fi Logická hodnota označující, jestli má aplikace oprávnění používat rozhraní API WifiConfig ke změně konfigurace Wi-Fi: true, pokud má aplikace tuto možnost; jinak nepravda.
Příklad:"WifiConfig" : true
Referenční informace k rozhraní API:Applibs wificonfig.h
Koncepční:Konfigurace sítí

Část MutableStorage podporuje následující:

Jméno Popis
Velikost kB Celé číslo, které určuje velikost proměnlivého úložiště v kibibajtech. Maximální hodnota je 64. Hodnota 0 odpovídá tomu, že nemáte možnost měnitelného úložiště.

Příklad

Následující příklad ukazuje ukázkový soubor app_manifest.json pro aplikaci vysoké úrovně, která cílí na hardware MT3620 RDB:

{
    "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
}

Ukázkový soubor app_manifest.json pro MyTestApp provede toto:

  • Předá aplikaci čtyři argumenty příkazového řádku.
  • Umožňuje pouze připojení k hostitelům DNS my-hub.example.net, contoso.azure-devices.net a global.azure-devices-provisioning.net.
  • Umožňuje příchozí provoz TCP na portech 1024 a 65535.
  • Umožňuje příchozí provoz UDP na portech 1024 a 50000.
  • Určuje UUID tenanta Azure Sphere (starší verze), které se má použít k ověřování zařízení, a povolí připojení ke službě Device Provisioning.
  • Určuje použití tří objektů zásad skupiny.
  • Umožňuje aplikaci konfigurovat hardwarovou adresu síťového rozhraní.
  • Určuje použití jednoho periferního zařízení UART.
  • Umožňuje měnitelné úložiště s 64 kibibajtů úložného prostoru.
  • Umožňuje aplikaci používat rozhraní API WifiConfig ke změně konfigurace Wi-Fi.
  • Určuje použití jednoho hlavního rozhraní SPI.
  • Určuje použití jednoho hlavního rozhraní I2C.
  • Umožňuje aplikaci konfigurovat systémový čas pomocí rozhraní RTC API.
  • Umožňuje mallocng pro vývoj aplikací.