Wersja środowiska wykonawczego aplikacji, sysroots i interfejsy API beta
Wersja azure Sphere SDK może zawierać zarówno interfejsy API produkcyjne, jak i interfejsy API beta. Interfejsy API produkcji są uważane za długoterminowe stabilne (LTS), podczas gdy interfejsy API beta są nadal opracowywane i mogą ulec zmianie lub zostać usunięte z nowszej wersji. W większości przypadków nowe interfejsy API są oznaczone jako beta w ich pierwszym wydaniu i przenoszone do produkcji w kolejnej wersji. Interfejsy API wersji Beta zapewniają wczesny dostęp do nowych funkcji, umożliwiając tworzenie prototypów i przekazywanie opinii przed ich zakończeniem. Aplikacje korzystające z interfejsów API beta zwykle wymagają modyfikacji po przyszłych wersjach systemu operacyjnego Azure i SDK, aby nadal działać poprawnie.
Funkcje wersji beta są oznaczone w dokumentacji jako funkcja BETA . Każda aplikacja platformy Azure Sphere na wysokim poziomie określa, czy jest przeznaczona tylko na interfejsy API produkcyjne, czy zarówno interfejsy API produkcyjne, jak i beta.
Docelowe zestawy interfejsów API, ARV i sysroots
Docelowy zestaw interfejsów API wskazuje, które interfejsy API używane przez aplikację: tylko interfejsy API produkcyjne lub interfejsy API wersji produkcyjnej i beta. Docelowa wartość zestawu interfejsu API to liczba całkowita reprezentująca wersję środowiska wykonawczego aplikacji (ARV) lub ARV oraz ciąg identyfikujący wersję interfejsu API beta. Sama wartość liczbowa określa tylko interfejsy API produkcji w ARV, podczas gdy "wartość+BetaNumber" określa interfejsy API produkcji i beta w określonym wydaniu. Na przykład wartość ARV 8 wskazuje wersję 21.01, a wartość "8+Beta2101" określa interfejsy API wersji produkcyjnej i beta w wersji 20.01. W przyszłych wersjach zostaną dodane dodatkowe telewizory ARV.
Zestaw SDK Azure Sphere implementuje wiele zestawów API przy użyciu sysroots. Sysroot określa biblioteki, pliki nagłówków i narzędzia służące do kompilowania i łączenia aplikacji docelowej określonego zestawu INTERFEJSÓW API. Sysroots są instalowane w katalogu Microsoft Azure Sphere SDK w podfolderze sysroots.
Ustawianie lub aktualizowanie docelowego zestawu interfejsu API dla aplikacji wysokiego poziomu
Jeśli korzystasz z aplikacji na przykładzie usługi Azure Sphere, docelowym interfejsem API ustawionym domyślnie jest zestaw interfejsu API używany przez próbkę. Jeśli w próbce są używane tylko produkcyjne interfejsy API, docelowy zestaw interfejsów API zostanie ustawiony na bieżącą wartość ARV. Jeśli w próbce są używane zarówno interfejsy API wersji produkcyjnej, jak i beta w bieżącej wersji, docelowym zestawem interfejsów API będzie "value+BetaNumber", aby uwzględnić interfejsy API beta.
Jeśli nie korzystasz z aplikacji na podstawie przykładu, musisz ustawić docelowy zestaw interfejsów API w instrukcjach dotyczących kompilacji aplikacji.
Jeśli aplikacja została już utworzona, może być konieczna zmiana docelowego zestawu interfejsów API, jeśli odbudujesz aplikację do nowej wersji systemu operacyjnego. Jeśli aplikacja korzysta z interfejsów API beta, należy zaktualizować ją, gdy docelowe opcje zestawu interfejsów API ulegają zmianie, co zwykle występuje w każdej wersji funkcji. Interfejsy API wersji Beta mogą zostać przeniesione bezpośrednio ze stanu Beta do wersji produkcyjnej, co skutkuje wprowadzeniem nowego ARV lub mogą zostać zmienione i pozostać w wersji beta. Jeśli zaktualizujesz aplikację korzystającą z interfejsów API beta w celu kierowania do nowszego docelowego zestawu interfejsów API, mogą wystąpić błędy lub ostrzeżenia dotyczące usuniętych lub wycofanych interfejsów API.
Za każdym razem, gdy zmienisz docelowy zestaw interfejsów API, musisz usunąć plik CMakeCache.txt przed utworzeniem aplikacji. Ten plik jest przechowywany w katalogu out\ARM-Debug lub out\ARM-Release projektu.
Określanie docelowego zestawu interfejsu API
Ustaw docelowy zestaw interfejsów API w CMakePresets.json:
Użyj "AZURE_SPHERE_TARGET_API_SET", aby skonfigurować docelowy zestaw interfejsów API. Na przykład:
"AZURE_SPHERE_TARGET_API_SET": "5"
Lub"AZURE_SPHERE_TARGET_API_SET": "5+Beta2004"
Jeśli aplikacja jest przeznaczona do najnowszego zestawu interfejsu API, możesz po prostu ustawić tę zmienną na "latest-lts", jeśli nie jest jeszcze dostępna. Jeśli aplikacja jest przeznaczona na najnowszy zestaw interfejsów API beta, możesz po prostu ustawić tę zmienną na "najnowsza wersja beta", jeśli nie jest jeszcze dostępna. Jeśli jednak aplikacja korzysta ze starszego zestawu interfejsów API, należy ustawić tę zmienną tak, aby była zgodna z określoną używaną wartością.
Aby określić zmienną AZURE_SPHERE_TARGET_API_SET zewnętrzną w projekcie programu Visual Studio, ustaw następujące wartości w pliku CMakeSettings.json w ramach konfiguracji ARM-Debug i ARM-Release:
"variables": [ { "name": "AZURE_SPHERE_TARGET_API_SET", "value": "latest-beta" } ]
Aby określić zmienną AZURE_SPHERE_TARGET_API_SET zewnętrzną w projekcie Visual Studio Code, w pliku vscode/settings.json ustaw następujące wartości:
"cmake.configureSettings": { "AZURE_SPHERE_TARGET_API_SET": "latest-lts" },
Aby określić zmienną AZURE_SPHERE_TARGET_API_SET zewnętrzną w wierszu polecenia, uwzględnij parametr podczas wywoływania funkcji CMake:
-DAZURE_SPHERE_TARGET_API_SET="latest-lts"
Zamień "latest-lts" na "najnowszą wersję beta" lub określoną starszą wartość, taką jak "4" lub "5+Beta2004", jak wyjaśniono wcześniej.
Docelowe zestawy interfejsów API i zgodność systemów operacyjnych
Zgodność aplikacji z systemem operacyjnym Azure Sphere zależy od docelowego zestawu interfejsów API, za pomocą którego została utworzona aplikacja, oraz od najnowszej ARV obsługiwanej przez wersję systemu operacyjnego. Aplikacja niższego poziomu lub system operacyjny używa starszej ARV (która ma niższą liczbę), a aplikacja wyższego poziomu lub system operacyjny używa nowszego ARV (który ma większą liczbę). W poniższych sekcjach opisano, czego należy oczekiwać w każdym możliwym scenariuszu.
Aplikacje wyższego poziomu z systemem operacyjnym wyższego poziomu
Istniejące obrazy wyższego poziomu, które korzystają tylko z interfejsów API produkcyjnych, są obsługiwane w wersjach systemu operacyjnego Azure Sphere na poziomie ogólnym. Na przykład aplikacja, która została utworzona przy użyciu docelowego zestawu interfejsów API 1, działa pomyślnie na systemie operacyjnym Azure Sphere, który obsługuje ARV 2. W ten sposób istniejące wdrożone aplikacje będą nadal działać poprawnie po aktualizacjach systemu operacyjnego w chmurze. W systemie operacyjnym wyższego poziomu można pobrać lub wdrożyć w chmurze obrazy w poziomie produkcyjnym bez błędu.
Obrazy na poziomie niżej używające interfejsów API beta nie są obsługiwane i mogą nie działać z założenia w wersjach systemu operacyjnego Azure Sphere na poziomie ogólnym. Na przykład aplikacja utworzona przy użyciu docelowego zestawu interfejsów API 1+Beta1902 może nie działać w systemie operacyjnym Azure Sphere, który ma ARV 2. Próby załadowania bezpośredniego takiego obrazu zwracają błąd, chyba że użyjesz --force
flagi na urządzeniu az sphere przy użyciu polecenia deploy deploy . Podobnie polecenie az sphere image add wymaga --force
, aby flaga przekazała taki obraz. Żadne bieżące testy nie zapobiegają później wdrażaniu poprzednio przekazanego obrazu, który korzysta z interfejsów API beta, wraz z systemem operacyjnym wyższego poziomu, który nie obsługuje już tych interfejsów API beta.
Aplikacje wyższego poziomu z systemem operacyjnym wyższego poziomu
Aplikacji wyższego poziomu nie można wdrażać w wersjach systemu operacyjnego Azure Sphere, niezależnie od tego, czy używają one interfejsów API beta. Próba załadowania bezpośredniego takiego obrazu zakończy się niepowodzeniem z powodu błędu. Próby wdrożenia w powietrzu nie są obecnie możliwe, ponieważ jednocześnie są udostępniane zestawie SDK i system operacyjny wyższego poziomu.