Sdílet prostřednictvím


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í výpisem jednotlivých požadovaných prostředků v oddílu Schopnosti manifestu aplikace. Ve výchozím nastavení nejsou povoleny žádné možnosti. Pokud aplikace požádá o možnost, která není uvedená, požadavek selže. Pokud soubor manifestu aplikace obsahuje chyby, pokusí se aplikaci načíst bokem. 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 při vytváření aplikace automaticky vytvoří výchozí manifest aplikace. Pokud chcete zobrazit seznam funkcí, které vaše aplikace vyžaduje, musíte upravit výchozí manifest. Každá ukázka Azure Sphere obsahuje také manifest aplikace. Pokud aplikaci založíte na ukázce, pravděpodobně budete muset také upravit manifest.

Různá zařízení Azure Sphere můžou vystavovat funkce čipu různými způsoby. V důsledku toho se hodnota, kterou v manifestu použijete k identifikaci konkrétní funkce, jako je pin GPIO, může lišit v závislosti na hardwaru, pro který vyvíjíte. Správa závislostí cílového hardwaru poskytuje další informace o hardwarových cílech pro aplikaci vysoké úrovně. V manifestu aplikace vysoké úrovně použijte konstanty 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 uvedené v obsahu manifestu aplikace.

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

Obsah manifestu aplikace

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

Název Popis
SchemaVersion Verze používaného schématu manifestu aplikace Aktuálně musí být 1. Povinný:
Název 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 pouze prvních 31 znaků jsou uloženy v balíčku image; proto se název zobrazí zkráceně v dotazech na balíček image. Povinný:
ComponentId ID komponenty. Visual Studio vytvoří toto ID při sestavování aplikace. Pokud visual Studio nepoužíváte, přečtěte si téma Generování ID součásti pro informace o vytvoření ID. Povinný:
Vstupní bod 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 aktuálně pro tuto hodnotu používá /bin/app. Povinný:
CmdArgs Argumenty, které se mají předat aplikaci při spuštění. Jednotlivé argumenty uzavřete do dvojitých uvozovek a oddělte argumenty čárkou. Nepovinné.
TargetBetaApis Určuje, že aplikace vyžaduje rozhraní API beta verze a identifikuje sadu použitých rozhraní API beta verze. Toto pole se automaticky přidá během procesu sestavení, pokud je aplikace sestavená pomocí rozhraní BETA API. Nepovinné. Podrobnosti najdete v tématu Použití beta funkcí .
Typ aplikace Typ aplikace. Nepovinné. Nastavte na Ladicí program pouze v případě, že vytváříte náhradu pro gdbserver.
Možnosti Seznam párů klíč/hodnota, které určují požadavky na prostředky aplikace Povinný:
MallocVersion Celé číslo, které určuje verzi malloc, kde 1=standard a 2=mallocng, vylepšený malloc dostupný ve verzích MUSL větší než 1.2.1. Pro vývoj všech nových aplikací se doporučuje verze 2.

Oddíl Možnosti podporuje následující:

Poznámka:

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

Název Popis
Adc Řadič ADC (analog-to-digital conversion), který používá aplikace. Tato funkce si vyhrazuje celý kontroler ADC (který se skládá z bloku s 8 kolíky), nikoli jen připnutí 0 v bloku.
V aplikaci vysoké úrovně zadejte název periferního zařízení deklarovaný v souboru hlavičky definice hardwaru.
V rtApp zadejte AppManifestValue, který je deklarován 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žívání adcs v Azure Sphere
AllowedApplicationConnections Seznam ID komponent aplikace, ke kterým se může aplikace 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 pro centrum, obvykle název-název_centra.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 jednotlivě. Podporované porty jsou 1024 až 65535. Pro tcp i UDP můžete zadat stejné porty. Pokud však zadáte stejný port pro více než jednu aplikaci v zařízení, druhá aplikace, která se má spustit, nenačte.
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 jednotlivě. Podporované porty jsou 1024 až 65535. Pro tcp i UDP můžete zadat stejné porty. Pokud však zadáte stejný port pro více než jednu aplikaci v zařízení, druhá aplikace, která se má spustit, nenačte.
Příklad: "AllowedUdpServerPorts": [ 1024, 50000 ]
CertStore Logická hodnota, která označuje, jestli má aplikace vysoké úrovně oprávnění ke správě certifikátů pomocí rozhraní CertStore API: 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, která označuje, zda má aplikace oprávnění ke konfiguraci služby DHCP: true, pokud má aplikace schopnost; 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, která označuje, jestli má aplikace vysoké úrovně oprávnění k vytvoření sítě EAP-TLS a přidružení certifikátů k ní: true, pokud má aplikace schopnost; 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 deklarovaný 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žívání objektů zásad skupiny v Azure Sphere
HardwareAddressConfig Logická hodnota označující, zda má aplikace oprávnění ke konfiguraci hardwarové adresy síťového rozhraní: true, pokud má aplikace schopnost; jinak nepravda.
Příklad:"HardwareAddressConfig" : true
Referenční informace k rozhraní API: Applibs networking.h
Koncepční: Použití síťových služeb
Statistiky haldy Logická hodnota, která označuje, zda je povolené sledování přidělení paměti haldy: true, pokud má aplikace schopnost; jinak nepravda.
Příklad: "HeapMemStats": true
Conceptual:Memory use in high-level applications
I2cMaster Seznam hlavních rozhraní I2C, která aplikace používá.
V aplikaci vysoké úrovně zadejte název periferního zařízení deklarovaný v souboru hlavičky definice hardwaru.
V rtApp zadejte AppManifestValue , který je deklarován 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
NetworkConfig Logická hodnota, která označuje, zda má aplikace oprávnění ke konfiguraci síťového rozhraní: true, pokud má aplikace schopnost; 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é funkce pro řízení stavu napájení zařízení. ForcePowerDown a ForceReboot jsou jediné podporované hodnoty.
Upozornění: Protože ForcePowerDown a ForceReboot umožňují aplikaci okamžitě ukončit všechny aplikace, musíte zajistit, aby vaše zařízení stále mohlo přijímat operační systém a aktualizace aplikací. Další informace a pokyny najdete v tématu Vynucení vypnutí a aktualizací.
Příklad: "PowerControls": ["ForcePowerDown", "ForceReboot"]
Referenční informace k rozhraní API: Powermanagement.h Applibs
Koncepční: Správa stavu vypnutí pro zařízení Azure Sphere
Pwm Modulátor s šířkou impulsu (PWM), který aplikace používá.
V aplikaci vysoké úrovně zadejte název periferního zařízení deklarovaný v souboru hlavičky definice hardwaru.
V rtApp zadejte AppManifestValue , který je deklarován 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, která označuje, jestli má aplikace oprávnění k načtení konfigurace proxy serveru: true, pokud má aplikace schopnost; 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 schopnost; jinak nepravda.
Příklad: "SntpService" : true
Referenční informace k rozhraní API: Applibs networking.h
Koncepční: Server SNTP
SoftwareUpdateDeferral Logická hodnota, která označuje, zda má aplikace oprávnění odložit aktualizace softwaru po omezenou dobu: true, pokud má aplikace schopnost; 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í deklarovaný v souboru hlavičky definice hardwaru.
V rtApp zadejte AppManifestValue , který je deklarován 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í služby SPI s Azure Sphere
SystemEventNotifications Logická hodnota, která označuje, jestli má aplikace oprávnění přijímat oznámení událostí systému: true, pokud má aplikace schopnost; 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, která označuje, jestli má aplikace oprávnění ke konfiguraci systémového času: true, pokud má aplikace schopnost; 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, která označuje, jestli má aplikace oprávnění ke konfiguraci služby synchronizace času: true, pokud má aplikace schopnost; 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é desce MT3620. Informace o vyhrazeném objektu UART naleznete v tématu Vytvoření aplikace podporující v reálném čase.
V aplikaci vysoké úrovně zadejte název periferního zařízení deklarovaný v souboru hlavičky definice hardwaru.
V rtApp zadejte AppManifestValue , který je deklarován 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
WifiConfig Logická hodnota, která označuje, jestli má aplikace oprávnění k použití rozhraní WifiConfig API ke změně konfigurace Wi-Fi: true, pokud má aplikace schopnost; jinak nepravda.
Příklad: "WifiConfig" : true
Referenční informace k rozhraní API: Applibs wificonfig.h
Koncepční: Konfigurace sítí

Oddíl MutableStorage podporuje následující:

Název Popis
Velikost kB Celé číslo, které určuje velikost proměnlivého úložiště v kibibajtech. Maximální hodnota je 64. Hodnota 0 je ekvivalentní tomu, že nemá proměnlivou schopnost ú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 následující:

  • 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) pro 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 nakonfigurovat hardwarovou adresu síťového rozhraní.
  • Určuje použití jednoho periferního zařízení UART.
  • Umožňuje proměnlivé úložiště s 64 kibibajtemi ú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 nakonfigurovat systémový čas pomocí rozhraní RTC API.
  • Umožňuje mallocng pro vývoj aplikací.