Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Urządzenia oparte na ARM stają się coraz bardziej popularne ze względu na ich charakter oszczędzający energię, dłuższy czas pracy baterii i imponującą moc obliczeniową. System Windows on Arm obsługuje jednostki przetwarzania neuronowego (NPU) dostosowane do coraz bardziej popularnych obciążeń sztucznej inteligencji i uczenia maszynowego.
W tym przewodniku opisano kroki dodawania obsługi do aplikacji systemu Windows dla urządzeń obsługiwanych przez procesory Arm64. Zawiera również wskazówki dotyczące sposobów rozwiązywania potencjalnych problemów lub blokad, takich jak zależności lub wtyczki innych firm, które mogą zakłócać tworzenie wersji aplikacji opartej na usłudze Arm64.
Emulacja na urządzeniach opartych na architekturze Arm dla aplikacji systemu Windows x86 lub x64
Wersje arm systemu Windows 10 obejmują technologię emulacji, która umożliwia uruchamianie istniejących niezmodyfikowanych aplikacji x86 na urządzeniach arm. System Windows 11 rozszerza emulację w celu uruchamiania niezmodyfikowanych aplikacji x64 systemu Windows na urządzeniach z systemem Arm.
Chociaż możliwość emulowania x64 i x86 na urządzeniach Arm jest doskonałym krokiem naprzód, ten przewodnik ułatwia dodanie natywnej obsługi Arm, dzięki czemu aplikacja może korzystać z zalet wydajnościowych i unikalnych cech urządzeń z obsługą Arm64, w tym:
- Optymalizacja zużycia energii przez aplikację w celu wydłużenia czasu pracy baterii urządzenia.
- Optymalizacja wydajności procesora CPU, procesora GPU i jednostek NPU w celu przyspieszenia przepływów pracy, szczególnie podczas pracy ze sztuczną inteligencją.
Ponadto sterowniki jądra należy skompilować jako natywny arm64. Jądro nie zawiera emulacji. To ograniczenie dotyczy głównie scenariuszy wirtualizacji. W przypadku aplikacji korzystających z sterowników urządzeń wymagających bezpośredniego dostępu do wewnętrznych systemów operacyjnych lub sprzętu działającego w trybie jądra, a nie w trybie użytkownika i które nie zostały jeszcze zaktualizowane do obsługi procesorów Arm64, zobacz Building Arm64 Drivers with the WDK (Tworzenie sterowników arm64 za pomocą zestawu WDK).
Uwaga / Notatka
Progresywne aplikacje internetowe (PWA) są już wykonywane z natywną wydajnością Arm64.
Wymagania wstępne
Jeśli aktualizujesz aplikację przy użyciu urządzenia opartego na usłudze Arm (kompilacja natywna — generowanie kodu dla tej samej platformy, na której działasz), możesz użyć:
Wprowadzenie do programu Visual Studio 17.10 — wersja zapoznawcza 1 (luty 2024 r.)
Visual Studio 2022 w wersji 17.4 lub nowszej. Jest to pierwsza wersja ogólnodostępna programu Visual Studio, która natywnie obsługuje tworzenie i debugowanie aplikacji Arm64 na procesorach opartych na architekturze Arm. Zarówno natywne wersje Arm64 programu Visual Studio 2022 17.4, jak i Microsoft Visual C++ (MSVC) zapewniają znacznie lepszą wydajność w porównaniu z poprzednimi wersjami emulowanymi.
(Opcjonalnie) LLVM (Clang) v12+ lub nowsza wersja. LlVM 12 dodaje oficjalną wersję binarną hostowaną w systemie Windows w systemie Arm64, w tym kompilator Clang, llD Linker i biblioteki środowiska uruchomieniowego compiler-rt.
Jeśli aktualizujesz aplikację systemu Windows w celu obsługi usługi Arm przy użyciu urządzenia opartego na procesorze x64 lub x86 Intel (kompilowanie krzyżowe), możesz użyć:
- Visual Studio 2022 v17.10 (zalecane)
- Visual Studio 2019 wersja 16.x
- programu Visual Studio 2017 od wersji 15.9 (UWP, Desktop Bridge, win32 C++)
- LLVM (Clang) v12+
Podczas wybierania między kompilacją krzyżową lub kompilacją natywną należy wziąć pod uwagę kilka czynników, takich jak dostępny sprzęt i prostota wykonywania testu.
Uwaga / Notatka
Obsługa GCC, czyli Kolekcji Kompilatora GNU, jest planowana na najbliższą przyszłość.
Procedura dodawania natywnej obsługi arm64
Aby zaktualizować aplikację tak, aby uruchamiała się natywnie na urządzeniach Arm64:
- Dodawanie konfiguracji arm64 do projektu w programie Visual Studio
- testowanie i debugowanie nowo utworzonej aplikacji Arm64
- Buduj i testuj swoją aplikację na urządzeniach Arm
Po potwierdzeniu, że aplikacja jest zoptymalizowana pod kątem urządzeń arm:
Krok 1. Dodawanie konfiguracji arm64 do projektu w programie Visual Studio
Aby dodać nową platformę rozwiązania ARM64 z miejscami docelowymi debugowania i wydania do istniejącego projektu aplikacji x64 lub x86:
- Otwórz rozwiązanie (kod projektu) w programie Visual Studio (zobacz wymagania wstępne dla obsługiwanych wersji).
- W menu rozwijanym "Platformy rozwiązań" na standardowym pasku narzędzi (lub w menu "Buduj") wybierz pozycję Menedżer Konfiguracji...
- Otwórz menu rozwijane "Aktywna platforma rozwiązania" i wybierz pozycję <Nowy...>.
- W menu rozwijanym "Wpisz lub wybierz nową platformę" wybierz ARM64 i upewnij się, że wartość "Kopiuj ustawienia z" jest ustawiona na wartość x64 z włączonym polem wyboru "Utwórz nowe platformy projektu", a następnie wybierz OK.
Gratulacje! Rozpocząłeś dodawanie wsparcia dla architektury Arm do swojej aplikacji. Następnie sprawdź, czy Twoje rozwiązanie Arm64 zostało pomyślnie zbudowane.
Jeśli rozwiązanie nie zostanie pomyślnie skompilowane, należy rozwiązać problemy powodujące niepowodzenie kompilacji. Najbardziej prawdopodobną przyczyną jest to, że zależność nie jest dostępna dla ARM64, co jest omówione w Rozwiązywanie Problemów poniżej.
(Opcjonalnie): Aby sprawdzić, czy plik binarny aplikacji został skompilowany dla usługi Arm64, otwórz katalog projektu w programie PowerShell (kliknij prawym przyciskiem myszy projekt aplikacji w Eksploratorze rozwiązań programu Visual Studio i wybierz polecenie Otwórz w terminalu). Przełącz katalogi, aby został wybrany nowy katalog bin\ARM64\Debug lub Release twojego projektu. Wprowadź polecenie: dumpbin /headers .\<appname>.exe (zastępując <appname> nazwą aplikacji). Przewiń w górę w wynikach danych wyjściowych terminalu, aby znaleźć sekcję FILE HEADER VALUES i potwierdzić, że pierwszy wiersz jest AA64 machine (ARM64).
Krok 2. Testowanie i debugowanie nowo utworzonej aplikacji Arm64
Aby sprawdzić, czy rozwiązanie Arm64 kompiluje się pomyślnie po dodaniu platformy rozwiązania Arm64 do projektu w programie Visual Studio:
- Zamknij okno Aktywna platforma rozwiązania.
- Zmień ustawienie kompilacji z Debugowanie na Wydanie.
- W menu rozwijanym Kompilacja wybierz pozycję Kompiluj rozwiązanie i poczekaj na ponowne skompilowanie projektu.
- Otrzymasz komunikat wyjściowy "Rebuild All zakończone powodzeniem". Jeśli nie, zobacz sekcję Rozwiązywanie problemów .
Po skompilowaniu plików binarnych dla swojej aplikacji do obsługi architektury Arm64, chcesz je przetestować. To testowanie wymaga posiadania urządzenia lub maszyny wirtualnej z systemem Windows w usłudze Arm.
Jeśli tworzysz oprogramowanie na urządzeniu z systemem Windows na Arm, możesz łatwo skonfigurować Visual Studio z użyciem lokalnego debugowania. Jeśli kompilujesz krzyżowo (używasz urządzenia, które nie działa na procesorze Arm), chcesz użyć zdalnego debugowania na urządzeniu z systemem Windows na Arm lub maszynie wirtualnej, aby umożliwić pracę deweloperską w programie Visual Studio podczas uruchamiania aplikacji Arm64 na innym urządzeniu.
System Windows na sprzęcie arm lub maszynach wirtualnych dostępnych do testowania
Jeśli szukasz sprzętu do użycia na potrzeby ciągłej integracji i testowania, oto kilka urządzeń z systemem Windows z procesorem opartym na architekturze Arm64:
- zestaw Windows Dev Kit 2023
-
Surface Pro 9 5G - Lenovo x13s
Aby uzyskać pomoc dotyczącą konfigurowania maszyny wirtualnej z systemem Windows dla Arm do obsługi CI i testowania, zobacz Szybki start: tworzenie maszyny wirtualnej Arm w portalu Azure.
Przeczytaj ogłoszenie na blogu platformy Azure o ogólnej dostępności dla maszyn wirtualnych platformy Azure z procesorami opartymi na architekturze Ampere Altra z możliwością uruchamiania wersji opartych na architekturze Arm64 w systemach Windows 11 Pro i Enterprise.
Dowiedz się więcej na temat systemu Windows 11 w programie Arm Insider Preview (VHDX) na potrzeby tworzenia lokalnego systemu Windows na maszynie wirtualnej arm przy użyciu Hyper-V i niejawnego programu testów systemu Windows VHDX. *Maszyny wirtualne Arm64 są obsługiwane tylko na urządzeniach spełniających wymagania wstępne. Tworzenie maszyn wirtualnych arm64 nie jest obsługiwane na sprzęcie x64 — musisz hostować maszynę wirtualną w chmurze, zobacz link Szybki start powyżej.
Zapoznaj się z filmem wideo "Zapytaj eksperta: tworzenie aplikacji za pomocą maszyn wirtualnych platformy Azure opartych na platformie Ampere".
Krok 3. Kompilowanie i testowanie aplikacji na urządzeniach arm
Dodanie etapu automatyzacji testów jest ważnym elementem strategii ciągłej integracji i ciągłego dostarczania (CI/CD). W przypadku rozwiązań Arm64 działających w systemie Windows ważne jest, aby uruchomić pakiet testowy w architekturze Arm64. Ta architektura może być rzeczywistym systemem Windows na sprzęcie Arm, używając jednego z wymienionych wcześniej urządzeń Arm lub maszyny wirtualnej z wcześniej wymienionych VM.
Kompilowanie aplikacji jest wygodniejsze podczas wykonywania na tej samej maszynie co testy, ale w wielu przypadkach nie jest wymagane. Zamiast tego można rozważyć rozszerzenie istniejącej infrastruktury kompilacji w celu utworzenia krzyżowo skompilowanych danych wyjściowych dla usługi Arm64.
Krok 4. Aktualizowanie instalatora i publikowanie zaktualizowanej aplikacji
Jeśli opublikujesz aplikację w Sklepie Microsoft, to po zbudowaniu wersji ARM64 aplikacji zgodnie z powyższymi krokami, możesz zaktualizować istniejący pakiet aplikacji w Sklepie Microsoft, odwiedzając swój pulpit nawigacyjny Centrum partnerskiego i dodając nowo utworzone pliki binarne ARM64 do przesłania.
Jeśli aplikacja nie jest jeszcze publikowana w Sklepie Microsoft Store, możesz postępować zgodnie z instrukcjami, aby utworzyć przesyłanie aplikacji na podstawie tego, czy chcesz przesłać plik MSI lub EXE, pakiet MSIX, aplikację PWA lub dodatek aplikacji.
Jeśli tworzysz własny instalator, upewnij się, że będzie można pomyślnie zainstalować nową wersję arm64. Większość struktur instalatora, takich jak WiX, Squirrel, InnoSetup, InstallAwarei inne obsługują system Windows w usłudze Arm bez problemu.
Jeśli oferujesz instalator aplikacji ze strony internetowej, możesz użyć User-Agent wskazówek klienta, aby wykryć, kiedy klient odwiedza z urządzenia z systemem Windows na urządzeniu z procesorem Arm i zaoferować im zaktualizowaną natywną wersję aplikacji dla procesorów Arm. W przeciwieństwie do ciągu agenta użytkownika, User-Agent Client Hints umożliwiają rozróżnienie klientów korzystających z Arm od tych używających urządzeń x86.
Krok 5. Planowanie bieżących aktualizacji
Teraz, gdy publikujesz wersję aplikacji Arm64, chcesz upewnić się, że pozostaje ona aktualizowana tak samo jak inne wersje aplikacji. Zachowaj wersje i funkcje dostosowane do architektur, aby uniknąć nieporozumień klientów w przyszłości.
Rozwiązywanie problemów
Typowe problemy, które zakłócają lub uniemożliwiają dodanie wersji Arm64 do istniejącej aplikacji systemu Windows w wersji x64 lub x86, obejmują:
- Zależność nieskompilowana dla usługi ARM64 blokuje pomyślne skompilowanie.
- Kod jest napisany dla konkretnej architektury innej niż Arm64.
- Aplikacja opiera się na sterowniku jądra.
- Jesteś zablokowany i potrzebujesz pomocy.
Zależność, która nie została skompilowana dla usługi ARM64, blokuje pomyślne kompilowanie
Jeśli nie możesz skompilować aplikacji ze względu na zależność, zarówno wewnętrzną, od innej firmy, jak i z biblioteki open source, musisz zaktualizować ją tak, aby obsługiwała architekturę ARM64, lub ją usunąć.
W przypadku zależności wewnętrznych ponownie skompiluj zależność dla obsługi usługi ARM64.
W przypadku zależności innych firm poproś opiekuna o ponowne skompilowanie zależności z obsługą ARM64.
W przypadku zależności typu open source sprawdź narzędzie vcpkg , aby sprawdzić, czy nowsza wersja zależności obejmuje obsługę arm64, do której można przeprowadzić aktualizację. Jeśli żadna aktualizacja nie istnieje, rozważ dodanie obsługi ARM64 do pakietu samodzielnie. Wielu opiekunów open source docenia wkład.
Organizacja Linaro współpracuje z firmami i społecznościami open source w celu opracowania oprogramowania opartego na technologii arm. Możesz złożyć żądanie w Linaro Service Desk, aby pomóc w aktualizacji obsługi pakietów dla wszelkich brakujących zależności związanych z Windows na platformie Arm.
Użyj arm64EC. Wersje arm64EC zależności mogą służyć do ponownego kompilowania aplikacji przy jednoczesnym wykorzystaniu wersji x64 zależności. Dowolny kod x64, w tym kod z zależności, w procesie Arm64EC jest uruchamiany w ramach emulacji w aplikacji. (W tym przypadku wersje zależności arm64 nie mogą być używane).
Usuń i zastąp zależności w projekcie aplikacji.
Kod jest napisany dla określonej architektury innej niż Arm64
- Należy zmodyfikować wywołania funkcji assemblera specyficzne dla CPU lub wbudowane wywołania funkcji wewnętrznych, aby dopasować dostępne instrukcje i funkcje na procesorze Arm. Aby uzyskać wskazówki, zobacz: Using Assembly and Intrinsics in C or C++ Code.
Aplikacja opiera się na sterowniku jądra
Sterowniki jądra muszą być tworzone w architekturze Arm64 jako natywne. Jądro nie zapewnia żadnej emulacji. To ograniczenie dotyczy głównie scenariuszy wirtualizacji. W przypadku aplikacji korzystających z sterowników urządzeń wymagających bezpośredniego dostępu do wewnętrznych systemów operacyjnych lub sprzętu działającego w trybie jądra (a nie w trybie użytkownika) i które nie zostały jeszcze zaktualizowane do obsługi procesorów Arm64, zobacz Tworzenie sterowników Arm64 za pomocą zestawu WDK.
Ponadto sterowniki w systemie Windows muszą być tworzone jako Arm64 i nie mogą być emulowane. W przypadku aplikacji korzystających z sterowników oprogramowania, które nie zostały jeszcze zaktualizowane do obsługi procesorów Arm64, zobacz Tworzenie sterowników Arm64 za pomocą zestawu WDK.
Łańcuch narzędzi dla systemu Windows w usłudze Arm
Oprócz obsługi programów Visual Studio i LLVM (CLANG), jak podano w sekcji Prerequisites tego przewodnika, obsługiwane są również następujące narzędzia i frameworki dla Arm64:
- .NET 7
-
.NET 6 (LTS) - .NET 5.0.8+
- .NET Framework 4.8.1
- clang-cl kompiluje kod C++ dla systemu Windows i może służyć jako zamiennik kompilatora I konsolidatora MSVC. Nadal używa nagłówków i bibliotek z MSVC i jest zgodny z ABI MSVC.
Oprócz frameworków innych firm, w tym:
- Qt for Windows, Boost C++ Library, Bazel, narzędzie do kompilacji i testowania open source.
- Obsługa kompilatorów GCC i Mingw / GNU Toolchain dla Windows na Arm jest w toku w Linaro.
- Aby uzyskać bardziej pełną listę, zobacz Windows On Arm (WOA) — Confluence (atlassian.net).
Potrzebujesz pomocy? Korzystanie z naszej usługi App Assure
Usługa doradcza Arm Assure jest dostępna, aby ułatwić deweloperom tworzenie aplikacji zoptymalizowanych pod kątem usługi Arm. Ta usługa jest dodatkiem do naszej istniejącej obietnicy: twoje aplikacje działają w systemie Windows w usłudze Arm, a jeśli wystąpią jakiekolwiek problemy, firma Microsoft pomoże ci je skorygować. Dowiedz się więcej.
Windows on Arm