Sdílet prostřednictvím


Adaptivní aplikace pro verze: Při zachování kompatibility s předchozími verzemi používejte nová rozhraní API.

Každá verze sady Windows 10 SDK přidává zajímavé nové funkce, které budete chtít využít. Ne všichni vaši zákazníci ale aktualizují svá zařízení na nejnovější verzi Windows 10 současně a chcete mít jistotu, že vaše aplikace funguje na nejširším možném rozsahu zařízení. Tady vám ukážeme, jak navrhnout aplikaci tak, aby běžela ve starších verzích Windows 10, ale také využívá nové funkce při každém spuštění aplikace na zařízení s nainstalovanou nejnovější aktualizací.

Existují tři kroky, které je potřeba provést, abyste měli jistotu, že vaše aplikace podporuje nejširší škálu zařízení Windows 10.

  • Nejprve nakonfigurujte projekt Visual Studio tak, aby cílil na nejnovější rozhraní API. To má vliv na to, co se stane při kompilaci aplikace.
  • Za druhé proveďte kontroly za běhu, abyste zajistili, že voláte pouze rozhraní API, která jsou na zařízení, na kterém je vaše aplikace spuštěná.
  • Za třetí otestujte aplikaci na minimální verzi a cílové verzi Windows 10.

Konfigurace projektu Visual Studio

Prvním krokem při podpoře více verzí Windows 10 je určení Target a Minimum podporované verze operačního systému nebo sady SDK v projektu Visual Studio.

  • Target: Verze sady SDK, proti níž Visual Studio kompiluje kód vaší aplikace a spouští všechny nástroje. Všechna rozhraní API a prostředky v této verzi sady SDK jsou k dispozici v kódu aplikace v době kompilace.
  • Minimum: Verze sady SDK, která podporuje nejstarší verzi operačního systému, na které může vaše aplikace být spuštěna (a bude nasazena obchodem), a verze, proti které Visual Studio kompiluje značkový kód vaší aplikace.

Během běhu aplikace poběží na verzi operačního systému, do které je nasazená, takže aplikace vyvolá výjimky, pokud použijete prostředky nebo voláte rozhraní API, která nejsou v této verzi dostupná. Ukážeme vám, jak pomocí kontrol za běhu volat správná rozhraní API dále v tomto článku.

Nastavení Cíl a Minimum určují konce rozsahu verzí operačního systému nebo sady SDK. Pokud ale aplikaci otestujete na minimální verzi, můžete se ujistit, že se bude spouštět na všech verzích mezi minimální a cílovou verzí.

Návod

Visual Studio vás neopozoruje na kompatibilitu rozhraní API. Je vaší zodpovědností otestovat a zajistit, aby vaše aplikace fungovala podle očekávání na všech verzích operačního systému od minimální po cílovou včetně.

Když v Visual Studio 2015, Update 2 nebo novějším vytvoříte nový projekt, zobrazí se výzva k nastavení cílových a minimálních verzí, které vaše aplikace podporuje. Ve výchozím nastavení je cílová verze nejvyšší nainstalovaná verze sady SDK a minimální verze je nejnižší nainstalovaná verze sady SDK. Cíl a Minimum můžete zvolit jenom z verzí sady SDK nainstalovaných na vašem počítači.

Nasadí cílovou sadu SDK v Visual Studio

Obvykle doporučujeme ponechat výchozí hodnoty. Pokud ale máte nainstalovanou verzi Preview sady SDK a píšete produkční kód, měli byste změnit cílovou verzi ze sady Preview SDK na nejnovější oficiální verzi sady SDK.

Pokud chcete změnit minimální a cílovou verzi projektu, který už byl vytvořen v Visual Studio, přejděte na Projekt -> Vlastnosti -> karta Aplikace -> Cílení.

Změna cílové sady SDK ve Visual Studio

V následující tabulce najdete čísla sestavení každého SDK.

Přátelský název Verze Sestavení operačního systému nebo sady SDK
RTM 1507 10240
Listopadová aktualizace 1511 10586
Výroční aktualizace 1607 14393
Aktualizace pro tvůrce 1703 15063
Fall Creators Update 1709 16299
Aktualizace z dubna 2018 1803 17134
Aktualizace z října 2018 1809 17763
Aktualizace z května 2019 1903 18362

Všechny vydané verze sady SDK si můžete stáhnout z archivu sady Windows SDK a emulátoru. Nejnovější sadu SDK Windows Insider Preview si můžete stáhnout z části pro vývojáře webu Windows Insider.

Další informace o aktualizacích Windows 10 najdete v části informace o vydání Windows 10. Důležité informace o životním cyklu podpory Windows 10 najdete v seznamu faktů životního cyklu Windows.

Provádění kontrol rozhraní API

Klíčem k adaptivním aplikacím pro správu verzí je kombinace kontraktů rozhraní API a třídy ApiInformation . Tato třída umožňuje zjistit, jestli je k dispozici zadaný kontrakt rozhraní API, typ nebo člen, abyste mohli bezpečně volat rozhraní API napříč různými zařízeními a verzemi operačního systému.

Kontrakty rozhraní API

Sada rozhraní API v rámci řady zařízení je rozdělená do dílčích oddílů, které se označují jako kontrakty rozhraní API. K otestování přítomnosti kontraktu rozhraní API můžete použít metodu ApiInformation.IsApiContractPresent . To je užitečné, pokud chcete otestovat přítomnost mnoha rozhraní API, která existují ve stejné verzi kontraktu rozhraní API.

    bool isScannerDeviceContract_1_Present =
        Windows.Foundation.Metadata.ApiInformation.IsApiContractPresent
            ("Windows.Devices.Scanners.ScannerDeviceContract", 1);

Co je kontrakt rozhraní API? Kontrakt rozhraní API v podstatě představuje funkci – sadu souvisejících rozhraní API, která společně poskytují určité konkrétní funkce. Hypotetický kontrakt rozhraní API může představovat sadu rozhraní API obsahující dvě třídy, pět rozhraní, jednu strukturu, dva výčty atd.

Logicky související typy jsou seskupeny do kontraktu rozhraní API a počínaje Windows 10 je každé rozhraní API Windows Runtime členem některého kontraktu rozhraní API. U kontraktů rozhraní API kontrolujete dostupnost konkrétní funkce nebo rozhraní API v zařízení a efektivně kontrolujete možnosti zařízení, a nekontrolujete konkrétní zařízení nebo operační systém. K implementaci každého rozhraní API v kontraktu rozhraní API se vyžaduje platforma, která implementuje každé rozhraní API v kontraktu rozhraní API. To znamená, že můžete otestovat, jestli spuštěný operační systém podporuje konkrétní kontrakt rozhraní API, a pokud ano, zavolejte některá z rozhraní API v daném kontraktu rozhraní API bez kontroly jednotlivých rozhraní API.

Největší a nejčastěji používaný kontrakt rozhraní API je Windows. Foundation.UniversalApiContract. Obsahuje většinu rozhraní API v Universal Windows Platform. Dokumentace k sadám SDK a kontraktům rozhraní API pro rozšíření řady zařízení popisuje různé dostupné kontrakty rozhraní API. Uvidíte, že většina z nich představuje sadu funkčně souvisejících rozhraní API.

Poznámka:

Pokud máte nainstalovanou sadu PREVIEW Windows Software Development Kit (SDK), která ještě není zdokumentovaná, najdete také informace o podpoře kontraktů rozhraní API v souboruPlatform.xmlumístěném v instalační složce sady SDK v umístění (Program Files (x86))\Windows Kits\10\Platforms<platform><SDK verze>\Platform.xml'.

Adaptivní kód verze a podmíněný XAML

Ve všech verzích Windows 10 můžete pomocí třídy ApiInformation v podmínce v kódu otestovat přítomnost rozhraní API, které chcete volat. V adaptivním kódu můžete použít různé metody třídy, jako je IsTypePresent, IsEventPresent, IsMethodPresent a IsPropertyPresent, k otestování rozhraní API s požadovanou členitostí.

Další informace a příklady najdete v tématu Adaptivní kód verze.

Pokud je minimální verze vašich aplikací build 15063 (Creators Update) nebo novější, můžete pomocí podmíněného XAML nastavit vlastnosti a vytvářet instance objektů v jazyce XAML, aniž byste museli používat kód. Podmíněný XAML poskytuje způsob, jak použít metodu ApiInformation.IsApiContractPresent ve značkování.

Další informace a příklady najdete v tématu Podmíněný kód XAML.

Rozhraní API s opožděným načítáním

Funkce QueryOptionalDelayLoadedAPI umožňuje aplikacím Store (které nesmějí volat LoadLibrary) zjistit, zda byla jejich funkce načítaná se zpožděním skutečně nalezena.

#include <windows.h>
#include <commdlg.h>
#include <libloaderapi2.h>
#include <stdio.h>

EXTERN_C IMAGE_DOS_HEADER __ImageBase;
#define HMODULE_THISCOMPONENT reinterpret_cast<HMODULE>(&__ImageBase)

int __cdecl main(int argc, char** argv)
{
    if (QueryOptionalDelayLoadedAPI(HMODULE_THISCOMPONENT,
          "comdlg32.dll", "GetOpenFileNameW", 0))
    {
        printf("GetOpenFileNameW can be called!\n");
    }
    return 0;
}

Otestujte svou aplikaci přizpůsobující se různým verzím

Pokud k vytváření aplikací, které se přizpůsobují verzím, používáte adaptivní kód verze nebo podmíněný kód XAML, musíte ji otestovat na zařízení s minimální verzí a na zařízení běžícím s cílovou verzí Windows 10.

Nemůžete testovat všechny cesty podmíněného kódu na jednom zařízení. Abyste měli jistotu, že jsou testovány všechny cesty kódu, musíte aplikaci nasadit a otestovat na vzdáleném zařízení (nebo virtuálním počítači) s minimální podporovanou verzí operačního systému. Další informace o vzdáleném ladění najdete v tématu Nasazení a ladění aplikací pro UPW.