Delen via


Arm-ondersteuning toevoegen aan uw Windows-app

Arm-apparaten worden steeds populairder vanwege hun energiezuinige aard, het langer meegaan van de batterij en indrukwekkende verwerkingskracht. Windows on Arm ondersteunt NPU's (Neural Processing Units) die zijn afgestemd op de steeds populairdere AI- en Machine Learning-workloads.

In deze handleiding worden de stappen beschreven voor het toevoegen van ondersteuning aan uw Windows-apps voor apparaten die worden mogelijk gemaakt door Arm64-processors. Het biedt ook richtlijnen voor manieren om potentiële problemen of blokkeringen, zoals afhankelijkheden van derden of invoegtoepassingen, op te lossen die kunnen interfereren met het maken van een arm64-versie van uw app.

Emulatie op Arm-apparaten voor x86- of x64-Windows-apps

Arm-versies van Windows 10 bevatten emulatietechnologie waarmee bestaande ongewijzigde x86-apps kunnen worden uitgevoerd op Arm-apparaten. Windows 11 breidt die emulatie uit om ongewijzigde x64 Windows-apps uit te voeren op Arm-aangedreven apparaten.

Hoewel de mogelijkheid om x64 en x86 op Arm-apparaten te emuleren een grote stap voorwaarts is, helpt deze handleiding u bij het toevoegen van systeemeigen ondersteuning zodat uw app kan profiteren van systeemeigen prestatieverbeteringen en de unieke kwaliteiten van arm64-apparaten, waaronder:

  • Optimaliseer het energieverbruik van uw app om de levensduur van de batterij van het apparaat te verlengen.
  • Prestaties optimaliseren voor CPU, GPU en NPU's om werkstromen te versnellen, met name wanneer u met AI werkt.

Daarnaast moeten kernelstuurprogramma's worden gebouwd als systeemeigen Arm64. De kernel bevat geen emulatie. Deze beperking is voornamelijk van invloed op virtualisatiescenario's. Voor apps die gebruikmaken van apparaatstuurprogramma's die directe toegang nodig hebben tot de interne functies van het besturingssysteem of de hardware die wordt uitgevoerd in de kernelmodus, in plaats van in de gebruikersmodus, en die nog niet zijn bijgewerkt om Arm64-processors te ondersteunen, raadpleegt u Building Arm64-stuurprogramma's met de WDK.

Opmerking

Progressive Web Apps (PBA's) worden al uitgevoerd met systeemeigen Arm64-prestaties.

Vereiste voorwaarden

Als u uw app bijwerkt met behulp van een arm-apparaat (systeemeigen compilatie: de code genereren voor hetzelfde platform waarop u werkt), kunt u het volgende gebruiken:

  • Inleiding tot Visual Studio 17.10 – Preview 1 (februari 2024)

  • Visual Studio 2022 v17.4 of hoger. Dit is de eerste GA-versie van Visual Studio die systeemeigen ondersteuning biedt voor het bouwen en opsporen van fouten in Arm64-apps op processors op basis van Arm. Zowel Visual Studio 2022 17.4 als native Arm64-versies van Microsoft Visual C++ (MSVC) bieden aanzienlijk betere prestaties vergeleken met eerdere geëmuleerde versies.

  • (Optioneel) LLVM (Clang) v12+ of hoger. LLVM 12 voegt officiële binaire release toe die wordt gehost in Windows op Arm64, waaronder een Clang-compiler, LLD Linker en runtimebibliotheken voor compiler-rt.

Als u uw Windows-app bijwerkt ter ondersteuning van Arm met behulp van een x64- of x86 Intel-apparaat (kruislings compileren), kunt u het volgende gebruiken:

Houd rekening met verschillende factoren bij het kiezen tussen kruiscompilatie of systeemeigen compilatie, zoals beschikbare hardware en eenvoud van testuitvoering.

Opmerking

GCC is de GNU Compiler Collection ondersteuning bedoeld voor de nabije toekomst.

Stappen voor het toevoegen van systeemeigen Arm64-ondersteuning

Uw app bijwerken zodat deze systeemeigen wordt uitgevoerd op Arm64-apparaten:

  1. Een Arm64-configuratie toevoegen aan uw project in Visual Studio
  2. De zojuist gebouwde Arm64-app testen en fouten opsporen
  3. Bouw en test uw app op Arm-apparaten

Nadat u hebt bevestigd dat uw app is geoptimaliseerd voor Arm-apparaten:

  1. Uw installatieprogramma bijwerken en uw bijgewerkte app publiceren
  2. Plan voor doorlopende updates

Stap 1: Een Arm64-configuratie toevoegen aan uw project in Visual Studio

Een nieuw ARM64-oplossingsplatform met foutopsporings- en releasedoelen toevoegen aan uw bestaande x64- of x86-app-project:

  1. Open uw oplossing (projectcode) in Visual Studio (zie vereisten voor de ondersteunde versies).
  2. Selecteer in de vervolgkeuzelijst "Oplossingsplatforms" op de Standaardwerkbalk (of in het menu Bouwen) Configuration Manager...
  3. Open de vervolgkeuzelijst Actief oplossingsplatform en selecteer <Nieuw...>.
  4. Selecteer in de vervolgkeuzelijst 'Typ of selecteer het nieuwe platform' de optie ARM64 en zorg ervoor dat de waarde 'Instellingen kopiëren van' is ingesteld op x64 , waarbij het selectievakje Nieuwe projectplatformen maken is ingeschakeld en selecteer VERVOLGENS OK.

Gefeliciteerd! U bent begonnen met het toevoegen van Arm-ondersteuning aan uw app. Controleer vervolgens of uw Arm64-oplossing succesvol wordt gebouwd.

Als uw oplossing niet goed wordt gebouwd, moet u de problemen oplossen die ervoor zorgen dat de build mislukt. De meest waarschijnlijke reden is dat een afhankelijkheid niet beschikbaar is voor ARM64, wat wordt behandeld in de onderstaande probleemoplossing .

(Optioneel): als u wilt controleren of het binaire app-bestand is gemaakt voor Arm64, opent u de projectmap in PowerShell (klik met de rechtermuisknop op uw app-project in Visual Studio Solution Explorer en selecteer Openen in Terminal). Wijzig mappen zodat de nieuwe bin\ARM64\Debug map of releasemap van uw project is geselecteerd. Voer de opdracht in: dumpbin /headers .\<appname>.exe (vervang <appname> door de naam van uw app). Schuif omhoog in de uitvoerresultaten van uw terminal om de FILE HEADER VALUES sectie te vinden en controleer of de eerste regel is AA64 machine (ARM64).

Stap 2: de zojuist gebouwde Arm64-app testen en fouten opsporen

Als u wilt controleren of uw Arm64-oplossing is gebouwd nadat u het Arm64-oplossingsplatform hebt toegevoegd aan uw project in Visual Studio:

  1. Sluit het venster Actief oplossingsplatform .
  2. Wijzig de build-instelling van Foutopsporing naar Release.
  3. Selecteer in de vervolgkeuzelijst Opbouwende optie Oplossing opnieuw opbouwen en wacht tot het project opnieuw is opgebouwd.
  4. U ontvangt de uitvoer Alle opnieuw opbouwen . Als dit niet het probleem is, raadpleegt u de sectie Probleemoplossing .

Zodra de binaire bestanden zijn gebouwd voor uw app ter ondersteuning van Arm64, wilt u ze testen. Voor het testen is het hebben van een apparaat of virtuele machine met Windows op Arm vereist.

Als u ontwikkelt op een Windows op Arm-apparaat, hebt u een eenvoudige installatie met lokale foutopsporing in Visual Studio. Als u meerdere compilaties uitvoert (met behulp van een apparaat dat niet wordt uitgevoerd op een Arm-processor), wilt u externe foutopsporing gebruiken op een Windows op Arm-apparaat of een virtuele machine om uw ontwikkelervaring in Visual Studio in te schakelen tijdens het uitvoeren van de Arm64-app op een ander apparaat.

Windows op Arm-hardware of virtuele machines die beschikbaar zijn voor testen

Als u op zoek bent naar hardware die moet worden gebruikt voor continue integratie (CI) en testen, zijn dit enkele van de Windows-apparaten met een op Arm64 gebaseerde processor:

Voor hulp bij het instellen van een virtuele machine (VM) waarop Windows op Arm wordt uitgevoerd ter ondersteuning van CI en testen, raadpleegt u quickstart: Een virtuele Windows-machine maken in Azure Portal.

Stap 3: uw app bouwen en testen op Arm-apparaten

Het toevoegen van een testautomatiseringspas is een belangrijke overweging voor uw CI/CD-strategie (Continuous Integrations and Continuous Delivery). Voor Arm64-oplossingen die worden uitgevoerd in Windows, is het belangrijk om uw testpakket uit te voeren op arm64-architectuur. Deze architectuur kan eigenlijk Windows op Arm-hardware zijn, met behulp van een van de arm-apparaten die eerder worden vermeld, of een virtuele machine, van de eerder vermelde VM's.

Het compileren van de app is handiger wanneer dit op dezelfde computer gebeurt als waar de tests worden uitgevoerd, maar in veel gevallen is het niet vereist. In plaats daarvan kunt u overwegen om de bestaande build-infrastructuur uit te breiden om een kruisgecompileerde uitvoer voor Arm64 te produceren.

Stap 4: uw installatieprogramma bijwerken en uw bijgewerkte app publiceren

Als u publiceert naar de Microsoft Store, kunt u, zodra u een Arm64-versie van uw app bouwt door de voorgaande stappen uit te voeren, uw bestaande app-pakket bijwerken in de Microsoft Store door naar het dashboard van het Partnercentrum te gaan en de zojuist gebouwde BINAIRE ARM64-bestanden toe te voegen aan de inzending.

Als u uw app nog niet publiceert in de Microsoft Store, kunt u de instructies volgen om een app-inzending te maken op basis van of u een MSI- of EXE-, MSIX-pakket, PWA- of App-invoegtoepassing wilt indienen.

Als u uw eigen installatieprogramma bouwt, moet u ervoor zorgen dat deze uw nieuwe Arm64-versie kan installeren. De meeste installatieframeworks, zoals WiX, Squirrel, InnoSetup, InstallAware, en anderen ondersteunen Windows op Arm zonder probleem.

Als u het installatieprogramma van uw app vanaf een webpagina aanbiedt, kunt u User-Agent clienthints gebruiken om te detecteren wanneer uw klant een bezoek brengt vanuit een Windows op Arm-apparaat en deze de bijgewerkte Arm-systeemeigen versie van uw app aanbiedt. In tegenstelling tot de tekenreeks voor de gebruikersagent kunt u met User-Agent Client Hints klanten op Arm onderscheiden van klanten op x86-apparaten.

Stap 5: doorlopende updates plannen

Nu u een Arm64-versie van uw app publiceert, wilt u ervoor zorgen dat deze op dezelfde manier wordt bijgewerkt als andere versies van uw app. Behoud versies en functies die zijn afgestemd op architecturen om verwarring van klanten in de toekomst te voorkomen.

Probleemoplossingsproces

Veelvoorkomende problemen die u belemmeren of verhinderen dat u een Arm64-versie van uw bestaande x64- of x86 Windows-app toevoegt, zijn onder andere:

Een afhankelijkheid die niet is gecompileerd voor ARM64 blokkeert u van een geslaagde build

Als u uw app niet kunt bouwen vanwege een afhankelijkheid, intern, van een derde partij of vanuit een opensource-bibliotheek, moet u die afhankelijkheid bijwerken om arm64-architectuur te ondersteunen of verwijderen.

  • Bouw voor interne afhankelijkheden de afhankelijkheid opnieuw voor ARM64-ondersteuning.

  • Voor afhankelijkheden van derden vraagt u de onderhouder om de afhankelijkheid opnieuw te bouwen met ARM64-ondersteuning.

  • Voor opensource-afhankelijkheden controleert u vcpkg om te zien of een nieuwere versie van de afhankelijkheid ARM64-ondersteuning bevat waarnaar u kunt bijwerken. Als er geen update bestaat, kunt u overwegen om zelf de toevoeging van ARM64-ondersteuning aan het pakket te leveren. Veel opensource-onderhouders waarderen de bijdrage.

  • De Linaro-organisatie werkt samen met bedrijven en opensource-community's om software te ontwikkelen op arm-technologie. U kunt een aanvraag indienen bij de Linaro Service Desk voor ondersteuning bij het updaten van pakketten voor ontbrekende afhankelijkheden voor Windows on Arm.

  • Gebruik Arm64EC. Arm64EC-versies van afhankelijkheden kunnen worden gebruikt om een toepassing opnieuw te bouwen terwijl er nog steeds x64-versies van afhankelijkheden worden gebruikt. Elke x64-code, inclusief code van afhankelijkheden, in een Arm64EC-proces wordt uitgevoerd onder emulatie in uw app. (Arm64-versies van afhankelijkheden zijn in dit geval niet bruikbaar.)

  • Verwijder en vervang de afhankelijkheid van uw app-project.

Code is geschreven voor een andere architectuur dan Arm64

Uw app is afhankelijk van een kernelstuurprogramma

Kernelstuurprogramma's moeten worden gebouwd als systeemeigen Arm64. De kernel biedt geen emulatie. Deze beperking is voornamelijk van invloed op virtualisatiescenario's. Voor apps die gebruikmaken van apparaatstuurprogramma's die directe toegang nodig hebben tot de interne functies van het besturingssysteem of de hardware die wordt uitgevoerd in de kernelmodus (in plaats van de gebruikersmodus) en die nog niet zijn bijgewerkt om Arm64-processors te ondersteunen, raadpleegt u Building Arm64-stuurprogramma's met de WDK.

Bovendien moeten stuurprogramma's in Windows worden gebouwd als Arm64 en kunnen ze niet worden geëmuleerd. Voor apps die afhankelijk zijn van softwarestuurprogramma's die nog niet zijn bijgewerkt ter ondersteuning van Arm64-processors, raadpleegt u Building Arm64 Drivers with the WDK.

Toolchain voor Windows op ARM

Naast ondersteuning voor Visual Studio en LLVM (CLANG) zoals gedeeld in de sectie Vereisten van deze handleiding, worden de volgende hulpprogramma's en frameworks ook ondersteund voor Arm64:

Naast frameworks van derden, waaronder:

Hulp nodig? Onze App Assure-service gebruiken

De App Assure Arm Advisory Service is beschikbaar om ontwikkelaars te helpen bij het bouwen van apps die zijn geoptimaliseerd voor Arm. Deze service is een aanvulling op onze bestaande belofte: uw apps worden uitgevoerd in Windows op Arm en als u problemen ondervindt, helpt Microsoft u deze op te lossen. Meer informatie.

Meld u aan voor Windows Arm Advisory Services.