Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows 10 SDK minden egyes kiadása izgalmas új funkciókat ad hozzá, amelyeket ki szeretne használni. Azonban nem minden ügyfél fogja egyszerre frissíteni az eszközeit a Windows 10 legújabb verziójára, és meg szeretné győződni arról, hogy az alkalmazás a lehető legszélesebb eszközskálán működik. Itt bemutatjuk, hogyan tervezheti meg az alkalmazást úgy, hogy az a Windows 10 korábbi verzióin fusson, de az új funkciókat is kihasználja, amikor az alkalmazás a legújabb frissítéssel rendelkező eszközön fut.
3 lépéssel biztosíthatja, hogy az alkalmazás a Windows 10 eszközök legszélesebb körét támogatja.
- Először konfigurálja a Visual Studio projektet a legújabb API-k megcélzásához. Ez hatással van arra, hogy mi történik az alkalmazásod fordításakor.
- Másodszor, futtasson futtatókörnyezeti ellenőrzéseket, hogy csak azon az eszközön található API-kat hívja meg, amelyen az alkalmazás fut.
- Harmadszor tesztelje az alkalmazást a Windows 10 minimális verzióján és célverzióján.
A Visual Studio projekt konfigurálása
A több Windows 10 verzió támogatásának első lépése a Target és Minimum támogatott OPERÁCIÓS/SDK-verziók megadása a Visual Studio projektben.
- Target: Az SDK-verzió, amelyet a Visual Studio az alkalmazáskód fordításához és az összes eszköz futtatásához használ. Az SDK-verzió összes API-ja és erőforrása elérhető az alkalmazás kódjában fordításkor.
- Minimum: Az az SDK-verzió, amely támogatja az alkalmazás által futtatható legkorábbi operációsrendszer-verziót (és azt az áruház fogja üzembe helyezni), valamint az a verzió, amely Visual Studio lefordítja az alkalmazás jelölőkódját.
A futtatókörnyezet során az alkalmazás a telepített operációsrendszer-verzióval fog futni, így az alkalmazás kivételeket fog eredményezni, ha erőforrásokat használ, vagy olyan API-kat hív meg, amelyek nem érhetők el az adott verzióban. A cikk későbbi részében bemutatjuk, hogyan hívhatja meg a megfelelő API-kat futtatókörnyezeti ellenőrzések használatával.
A Cél és a Minimális beállítás határozza meg az OPERÁCIÓS/SDK-verziók tartományának végét. Ha azonban az alkalmazást a minimális verzión teszteli, biztos lehet benne, hogy a Minimum és a Cél közötti verziókon fog futni.
Jótanács
Visual Studio nem figyelmezteti az API-kompatibilitásra. Az Ön felelőssége, hogy tesztelje és ellenőrizze, hogy az alkalmazás a várt módon működik-e a Minimális és a Cél operációsrendszer-verziók között és azok között.
Amikor új projektet hoz létre a 2015.Visual Studio 2. frissítésében vagy újabb verziójában, a rendszer kéri, hogy állítsa be az alkalmazás által támogatott Target és Minimum verziókat. Alapértelmezés szerint a célverzió a legmagasabb telepített SDK-verzió, a minimális verzió pedig a legalacsonyabb telepített SDK-verzió. A Cél és a Minimum lehetőséget csak a számítógépre telepített SDK-verziók közül választhatja ki.
Általában azt javasoljuk, hogy hagyja meg az alapértelmezett értékeket. Ha azonban telepítve van az SDK előzetes verziója, és éles kódot ír, a célverziót az előzetes verziójú SDK-ról a legújabb hivatalos SDK-verzióra kell módosítania.
A Visual Studio már létrehozott projektek minimális és célverziójának módosításához nyissa meg a Project -> Properties -> Application tab -> Targeting lehetőséget.
Az alábbi táblázat az egyes SDK-k buildszámát mutatja be.
| Barátságos név | Verzió | OS/SDK összeállítás |
|---|---|---|
| RTM | 1507 | 10240 |
| Novemberi frissítés | 1511 | 10586 |
| Évfordulós frissítés | 1607 | 14393 |
| Alkotók frissítése | 1703 | 15063 |
| Fall Creators Update | 1709 | 16299 |
| 2018. áprilisi frissítés | 1803 | 17134 |
| 2018. októberi frissítés | 1809 | 17763 |
| 2019. májusi frissítés | 1903 | 18362 |
Az SDK bármely kiadott verzióját letöltheti a Windows SDK és emulátor archívumból. A legújabb Windows Insider Preview SDK-t a Windows Insider webhely fejlesztői szakaszából töltheti le.
A Windows 10 frissítésekkel kapcsolatos további információkért lásd: Windows 10 kiadási információk. A Windows 10 támogatási életciklusával kapcsolatos fontos információkért tekintse meg a Windows életciklus-adatlapot.
API-ellenőrzések végrehajtása
Az adaptív alkalmazások verziójának kulcsa az API-szerződések és az ApiInformation osztály kombinációja. Ez az osztály lehetővé teszi annak észlelését, hogy egy adott API-szerződés, típus vagy tag jelen van-e, így biztonságosan kezdeményezhet API-hívásokat különböző eszközökön és operációsrendszer-verziókon.
API-szerződések
Az eszközcsaládon belüli API-k halmaza az API-szerződéseknek nevezett alosztályokra van lebontva. Az ApiInformation.IsApiContractPresent metódus használatával tesztelheti az API-szerződés meglétét. Ez akkor hasznos, ha egy API-szerződés ugyanazon verziójában található számos API jelenlétét szeretné tesztelni.
bool isScannerDeviceContract_1_Present =
Windows.Foundation.Metadata.ApiInformation.IsApiContractPresent
("Windows.Devices.Scanners.ScannerDeviceContract", 1);
Mi az az API-szerződés? Az API-szerződések lényegében egy funkciót képviselnek – egy kapcsolódó API-kat, amelyek együttesen biztosítanak bizonyos funkciókat. A hipotetikus API-szerződés olyan API-k készletét jelentheti, amelyek két osztályt, öt interfészt, egy struktúrát, két számokat és így tovább tartalmaznak.
A logikailag kapcsolódó típusok API-szerződésbe vannak csoportosítva, és Windows 10 kezdve minden Windows Runtime API valamilyen API-szerződés tagja. Az API-szerződésekkel egy adott funkció vagy API rendelkezésre állását ellenőrzi az eszközön, így hatékonyan az eszköz képességeit ellenőrzi, nem pedig egy adott eszközt vagy operációs rendszert. Az API-szerződés összes API-jának implementálásához egy olyan platformra van szükség, amely az API-szerződés összes API-ját implementálja. Ez azt jelenti, hogy tesztelheti, hogy a futó operációs rendszer támogat-e egy adott API-szerződést, és ha igen, meghívhatja az ADOTT API-szerződés bármelyik API-ját anélkül, hogy egyenként ellenőrizned kell azokat.
A legnagyobb és leggyakrabban használt API-szerződés a Windows. Foundation.UniversalApiContract. A Universal Windows Platform api-k többségét tartalmazza. Az Eszközcsalád bővítmény SDK-k és API-szerződések dokumentációja a rendelkezésre álló API-szerződések sokféleségét ismerteti. Látni fogja, hogy a legtöbb funkcionálisan kapcsolódó API-kat jelöl.
Megjegyzés:
Ha olyan előzetes verziójú Windows szoftverfejlesztői készlet (SDK) van telepítve, amely még nincs dokumentálva, Az API-szerződés támogatásáról a (Program Files (x86))\Windows Kits\10\Platforms<platform><SDK verzió>\Platform.xml) SDK telepítési mappájában található "Platform.xml' fájlban is találhat információkat.
Adaptív verziókód és feltételes XAML
A Windows 10 minden verziójában használhatja az ApiInformation osztályt a kód egy feltételében, hogy tesztelje a meghívni kívánt API jelenlétét. Az adaptív kódban az osztály különböző módszereit használhatja, például az IsTypePresent, az IsEventPresent, az IsMethodPresent és az IsPropertyPresent metódusokat, hogy a szükséges részletességgel tesztelje az API-kat.
További információkért és példákért lásd: Adaptív verziókód.
Ha az alkalmazás minimális verziója az 15063-as (alkotói frissítés) vagy újabb build, feltételes XAML-lel beállíthatja a tulajdonságokat, és létrehozhat objektumokat a jelölőnyelvben anélkül, hogy a háttérkódot használná. A feltételes XAML lehetővé teszi az ApiInformation.IsApiContractPresent metódus használatát a korrektúrában.
További információkért és példákért lásd a feltételes XAML-t.
Késleltetett API-k
A QueryOptionalDelayLoadedAPI függvény lehetővé teszi a Store-alkalmazások számára (melyeket a szabályzat nem enged hívni a LoadLibrary-t), hogy észleljék, megtalálható-e valójában a késleltetve betöltött függvény.
#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;
}
Tesztelje verzió-adaptív alkalmazását
Ha adaptív verziójú kódot vagy feltételes XAML-t használ egy adaptív verziójú alkalmazás írásához, tesztelnie kell azt a minimális verziót futtató eszközön és a Windows 10 célverzióját futtató eszközön.
Egyetlen eszközön nem tesztelheti az összes feltételes kód elérési útját. Az összes kódútvonal tesztelésének biztosításához telepítenie kell és tesztelnie kell az alkalmazást egy olyan távoli eszközön (vagy virtuális gépen), amely a minimálisan támogatott operációsrendszer-verziót futtatja. További információ a távoli hibakeresésről: UWP-alkalmazások üzembe helyezése és hibakeresése.