Freigeben über


Fügen Sie ARM-Unterstützung zu Ihrer Windows-App hinzu

Arm-basierte Geräte werden aufgrund ihrer energieeffizienten Eigenschaften, der längeren Akkulaufzeit und der beeindruckenden Verarbeitungsleistung immer beliebter, zusätzlich zur Unterstützung von Windows on Arm für neuralen Verarbeitungseinheiten (NPUs), die für die immer populäreren KI- und Machine-Learning-Workloads optimiert sind.

In diesem Handbuch werden die Schritte zum Hinzufügen von Unterstützung für Ihre Windows-Apps für Geräte behandelt, die von Arm64-Prozessoren unterstützt werden. Anleitungen umfassen auch Möglichkeiten zum Beheben potenzieller Probleme oder Blocker (z. B. Abhängigkeiten von Drittanbietern oder Plug-Ins), die das Erstellen einer Arm64-basierten Version Ihrer App beeinträchtigen können.

Emulation auf Arm-basierten Geräten für x86- oder x64-Windows-Apps

Arm-Versionen von Windows 10 umfassen Emulationstechnologie, mit der vorhandene nicht geänderte x86-Apps auf Arm-Geräten ausgeführt werden können. Windows 11 erweitert diese Emulation, um unveränderte x64-Windows-Apps auf Arm-Geräten auszuführen.

Während die Möglichkeit zum Emulieren von x64 und x86 auf Arm-Geräten ein großer Fortschritt ist, hilft Ihnen dieser Leitfaden, ARM-native Unterstützung hinzuzufügen, damit Ihre App von nativen Leistungsgewinnen und den einzigartigen Qualitäten von Arm64-Geräten profitieren kann, einschließlich:

  • Optimieren des Stromverbrauchs Ihrer App, um die Akkulaufzeit des Geräts zu verlängern.
  • Optimieren der Leistung für CPU, GPU und NPUs zur Beschleunigung von Workflows, insbesondere beim Arbeiten mit KI.

Darüber hinaus müssen Kerneltreiber im nativen Arm64-Format erstellt werden. Im Kernel ist keine Emulation vorhanden. Dies wirkt sich in erster Linie auf Virtualisierungsszenarien aus. Für Apps, die Gerätetreiber verwenden, die direkten Zugriff auf das Innere des Betriebssystems oder der Hardware benötigen, die im Kernelmodus ausgeführt werden, statt im Benutzermodus, und die noch nicht aktualisiert wurden, um Arm64-Prozessoren zu unterstützen, siehe Building Arm64 Drivers with the WDK.

Hinweis

Progressive Web Apps (PWAs) werden bereits mit nativer Arm64-Leistung ausgeführt.

Voraussetzungen

Wenn Sie Ihre App mit einem Arm-basierten Gerät aktualisieren (native Kompilierung – Erzeugung des Codes für dieselbe Plattform, auf der Sie es verwenden), können Sie Folgendes verwenden:

  • Einführung in Visual Studio 17.10 – Vorschau 1 (Februar 2024)

  • Visual Studio 2022 v17.4 oder höher. Dies ist die erste GA-Version von Visual Studio, die das Erstellen und Debuggen von Arm64-Apps auf Arm-basierten Prozessoren nativ unterstützt. Sowohl die nativen Arm64-Versionen von Visual Studio 2022 17.4 als auch microsoft Visual C++ (MSVC) bieten im Vergleich zu früheren emulierten Versionen eine deutlich bessere Leistung.

  • (optional) LLVM (Clang) v12+ oder höher. LLVM 12 fügt eine offizielle Binärversion hinzu, die unter Windows auf Arm64 verfügbar ist, einschließlich eines Clang-Compilers, eines LLD-Linkers und von Compiler-rt-Laufzeitbibliotheken.

Wenn Sie Ihre Windows-App aktualisieren, um ARM-Unterstützung auf einem x64- oder x86 Intel-basierten Gerät zu integrieren (Cross-Kompilieren), können Sie Folgendes verwenden:

Es gibt mehrere Faktoren, die Sie bei der Auswahl zwischen der Kreuzkompilierung oder der nativen Kompilierung berücksichtigen müssen, wie z. B. die verfügbare Hardware und die einfache Durchführung von Tests.

Hinweis

GCC ist die GNU Compiler Collection Unterstützung für die nahe Zukunft vorgesehen.

Schritte zum Hinzufügen der nativen Arm64-Unterstützung

So aktualisieren Sie Ihre App so, dass sie nativ auf Arm64 ausgeführt wird:

  1. Hinzufügen einer Arm64-Konfiguration zu Ihrem Projekt in Visual Studio
  2. Testen und Debuggen der neu erstellten Arm64-App-
  3. Entwickeln und testen Sie Ihre App auf Arm-Geräten

Nachdem Sie bestätigt haben, dass Ihre App für Arm-Geräte erfolgreich optimiert wurde:

  1. Aktualisieren Sie Ihr Installationsprogramm und veröffentlichen Sie Ihre aktualisierte App
  2. Planen von laufenden Updates

Schritt 1 : Hinzufügen einer Arm64-Konfiguration zu Ihrem Projekt in Visual Studio

So fügen Sie Ihrem vorhandenen x64- oder x86-App-Projekt eine neue ARM64-Lösungsplattform mit Debug- und Releasezielen hinzu:

  1. Öffnen Sie Ihre Projektmappe (Projektcode) in Visual Studio (siehe Voraussetzungen für die unterstützten Versionen).
  2. Wählen Sie im Dropdown-Menü "Lösungsplattformen" auf der Standard-Symbolleiste (oder im Menü "Erstellen") die Option Configuration Manager...
  3. Öffnen Sie das Dropdownmenü "Aktive Lösungsplattform", und wählen Sie <Neu...>aus.
  4. Wählen Sie im Dropdownmenü "Eingeben oder Auswählen der neuen Plattform" ARM64- aus, und stellen Sie sicher, dass der Wert "Einstellungen kopieren von" auf x64- festgelegt ist, wobei das Kontrollkästchen "Neue Projektplattformen erstellen" aktiviert ist, und wählen Sie dann OKaus.

Glückwunsch! Sie haben mit dem Hinzufügen der Arm-Unterstützung in Ihrer App begonnen. Überprüfen Sie als Nächstes, ob Ihre Arm64-Lösung erfolgreich erstellt wurde.

Wenn Ihre Lösung nicht erfolgreich erstellt wird, müssen Sie die Probleme beheben, die dazu führen, dass der Build fehlschlägt. Der wahrscheinlichste Grund ist, dass eine Abhängigkeit für ARM64 nicht verfügbar ist, die unter Problembehandlung unten behandelt wird.

(Optional): Wenn Sie zuerst überprüfen möchten, ob Ihre App-Binärdatei jetzt für Arm64 erstellt wurde, können Sie das Projektverzeichnis in PowerShell öffnen (klicken Sie mit der rechten Maustaste auf Ihr App-Projekt im Visual Studio-Projektmappen-Explorer und wählen Sie Im Terminalöffnen). Ändern Sie Verzeichnisse so, dass das neue bin\ARM64\Debug- oder Releaseverzeichnis Ihres Projekts ausgewählt ist. Geben Sie den Befehl ein: dumpbin /headers .\<appname>.exe (ersetzen <appname> durch den Namen Ihrer App). Scrollen Sie in den Ausgabeergebnissen Ihres Terminals nach oben, um den FILE HEADER VALUES Abschnitt zu finden und zu bestätigen, dass die erste Zeile AA64 machine (ARM64)ist.

Schritt 2: Testen und Debuggen der neu erstellten Arm64-App

Um zu überprüfen, ob Ihre Arm64-Lösung erfolgreich kompiliert wird, nachdem Sie die Arm64-Lösungsplattform zu Ihrem Projekt in Visual Studio hinzugefügt haben:

  1. Schließen Sie das Fenster "Aktive Lösungsplattform".
  2. Ändern Sie die Buildeinstellung von Debug zu Release.
  3. Wählen Sie im Dropdownmenü "Erstellen" Lösung neu erstellen aus und warten Sie, bis die Lösung neu erstellt wird.
  4. Sie erhalten eine Ausgabe "Alle neu erstellen erfolgreich". Falls nicht, siehe den Abschnitt Problembehandlung unten.

Sobald die Binärdateien für Ihre App erstellt wurden, um Arm64 zu unterstützen, sollten Sie sie testen. Dazu ist es erforderlich, ein Gerät oder eine virtuelle Maschine mit Windows auf Arm zu betreiben.

Wenn Sie die Entwicklung auf einem Windows auf Arm-Gerät durchführen, haben Sie ein einfaches Setup mit dem lokalen Debuggen von Visual Studio. Wenn Sie für eine andere Plattform kompilieren (mithilfe eines Geräts, das nicht auf einem Arm-Prozessor läuft), sollten Sie Remote-Debugging auf einem Windows-auf-Arm-Gerät oder einer virtuellen Maschine verwenden, um Ihre Arbeitserfahrung in Visual Studio zu verbessern, während Sie die Arm64-App auf einem anderen Gerät ausführen.

Windows auf Arm-Hardware oder virtuellen Computern zum Testen verfügbar

Wenn Sie nach Hardware suchen, die für die kontinuierliche Integration (Continuous Integration, CI) und Tests verwendet werden soll, sind dies einige der Windows-Geräte mit einem Arm64-basierten Prozessor:

Hilfe zum Einrichten eines virtuellen Computers (VM), auf dem Windows auf Arm ausgeführt wird, um CI und Tests zu unterstützen, finden Sie in der Schnellstartanleitung: Erstellen eines virtuellen Windows-Computers auf Arm im Azure-Portal.

Schritt 3 : Erstellen und Testen Ihrer App auf Arm-Geräten

Das Hinzufügen eines Testautomatisierungspasses ist ein wichtiger Aspekt für Ihre Strategie für kontinuierliche Integrationen und kontinuierliche Übermittlung (CI/CD). Für Arm64-Lösungen, die unter Windows ausgeführt werden, ist es wichtig, Ihre Testsuite auf der Arm64-Architektur auszuführen . Dies kann tatsächlich Windows auf Arm-Hardware sein, indem Sie eines der oben aufgeführten Arm-Geräte oder einen virtuellen Computer aus den oben aufgeführten virtuellen Computern verwenden.

Das Kompilieren der App ist bequemer, wenn sie auf demselben Computer wie die Tests durchgeführt wird, aber in vielen Fällen nicht erforderlich ist. Stattdessen können Sie erwägen, die vorhandene Build-Infrastruktur zu erweitern, um ein cross-kompiliertes Ergebnis für Arm64 zu erzeugen.

Schritt 4 : Aktualisieren Des Installers und Veröffentlichen der aktualisierten App

Wenn Sie im Microsoft Store veröffentlichen, können Sie Ihr vorhandenes App-Paket im Microsoft Store aktualisieren. Erstellen Sie zunächst eine Arm64-Version Ihrer App gemäß den obigen Schritten. Besuchen Sie dann Ihr Partner Center-Dashboard und fügen Sie die neu erstellten ARM64-Binärdateien zur Übermittlung hinzu.

Wenn Ihre App noch nicht im Microsoft Store veröffentlicht wurde, können Sie die Anweisungen befolgen, um eine App-Einreichung zu erstellen, je nachdem, ob Sie ein MSI- oder EXE-, MSIX-Paket, PWA oder App-Add-on einreichen möchten.

Wenn Sie Ein eigenes Installationsprogramm erstellen, sollten Sie sicherstellen, dass sie Ihre neue Arm64-Version erfolgreich installieren kann. Die meisten Installer-Frameworks wie WiX, Squirrel, InnoSetup, InstallAwareund andere unterstützen Windows auf Arm ohne Problem.

Wenn Sie das Installationsprogramm Ihrer App über eine Webseite anbieten, können Sie User-Agent Client Hints verwenden, um zu erkennen, wann Ihr Kunde von einem Windows auf Arm-Gerät aus auf die Webseite zugreift, und ihm die aktualisierte Arm-native Version Ihrer App empfehlen. Im Gegensatz zur Benutzer-Agent-Zeichenfolge ermöglichen es User-Agent Client-Hinweise, Kunden auf Arm von Kunden auf x86-Geräten zu unterscheiden.

Schritt 5 – Planen fortlaufender Updates

Nachdem Sie nun eine Arm64-Version Ihrer App veröffentlicht haben, sollten Sie sicherstellen, dass sie auf die gleiche Weise aktualisiert wird wie andere Versionen Ihrer App. Am besten halten Sie Versionen und Features über Architekturen hinweg abgestimmt, um Verwirrung bei Kunden in der Zukunft zu vermeiden.

Problembehandlung

Häufige Probleme, die Sie daran hindern können, eine Arm64-Version Ihrer vorhandenen x64- oder x86-Windows-App hinzuzufügen, umfassen:

Eine Abhängigkeit, die nicht für ARM64 kompiliert wurde, blockiert Sie von einem erfolgreichen Build.

Wenn Sie aufgrund einer Abhängigkeit, ob intern, von einem Drittanbieter oder aus einer Open-Source-Bibliothek, nicht erstellen können, müssen Sie entweder eine Möglichkeit finden, diese Abhängigkeit zur Unterstützung der ARM64-Architektur zu aktualisieren oder sie zu entfernen.

  • Für interne Abhängigkeiten wird empfohlen, die Abhängigkeit für die ARM64-Unterstützung neu zu erstellen.

  • Für Abhängigkeiten von Drittanbietern empfehlen wir, einen Antrag beim Verantwortlichen zu stellen, diese mit ARM64-Unterstützung neu zu kompilieren.

  • Für Open-Source-Abhängigkeiten sollten Sie vcpkg prüfen, um festzustellen, ob eine neuere Version der Abhängigkeit mit ARM64-Unterstützung verfügbar ist, die Sie aktualisieren können. Wenn kein Update vorhanden ist, ziehen Sie in Betracht, ARM64-Unterstützung selbst zum Paket hinzuzufügen. Viele Open Source-Betreuer wären dankbar für den Beitrag.

  • Die Linaro-Organisation arbeitet auch mit Unternehmen und Open-Source-Communities zusammen, um Software auf ARM-basierter Technologie zu entwickeln. Sie können eine Anforderung mit dem Linaro Service Desk , um die Paketunterstützung für fehlende Abhängigkeiten im Zusammenhang mit Windows on Arm zu aktualisieren.

  • Erwägen Sie die Verwendung von Arm64EC. Arm64EC-Versionen von Abhängigkeiten können verwendet werden, um eine Anwendung neu zu erstellen und gleichzeitig x64-Versionen von Abhängigkeiten zu verwenden. Jeder x64-Code, einschließlich Code aus Abhängigkeiten, in einem Arm64EC-Prozess wird unter Emulation in Ihrer App ausgeführt. (Arm64-Versionen von Abhängigkeiten können in diesem Fall nicht verwendet werden.)

  • Die letzte Wahl wäre, die Abhängigkeit von Ihrem App-Projekt zu entfernen und/oder zu ersetzen.

Code wird für eine andere Architektur als Arm64 geschrieben

Ihre App basiert auf einem Kerneltreiber.

Kerneltreiber müssen als native Arm64 erstellt werden. Im Kernel ist keine Emulation vorhanden. Dies wirkt sich in erster Linie auf Virtualisierungsszenarien aus. Für Apps, die Gerätetreiber verwenden, die direkten Zugriff auf das Innere des Betriebssystems oder der Hardware benötigen, die im Kernelmodus ausgeführt werden, statt im Benutzermodus, und die noch nicht aktualisiert wurden, um Arm64-Prozessoren zu unterstützen, siehe Building Arm64 Drivers with the WDK.

Darüber hinaus müssen Treiber unter Windows als Arm64 erstellt werden und können nicht emuliert werden. Apps, die auf Softwaretreibern basieren, die noch nicht aktualisiert wurden, um Arm64-Prozessoren zu unterstützen, finden Sie unter Building Arm64 Drivers with the WDK.

Toolkette für Windows auf Arm

Zusätzlich zur Unterstützung von Visual Studio und LLVM (CLANG), wie im Abschnitt Voraussetzungen dieses Handbuchs geteilt, werden auch die folgenden Tools und Frameworks für Arm64 unterstützt:

Sowie Drittanbieterframeworks, darunter:

Benötigen Sie Hilfe? Nutzen sie unseren App Assure-Dienst

Der App Assure Arm Advisory Service steht Entwicklern zur Verfügung, um optimierte Apps für Arm zu erstellen. Dieser Dienst ergänzt unser bestehendes Versprechen: Ihre Apps werden unter Windows auf ARM laufen, und wenn Probleme auftreten, hilft Microsoft Ihnen bei deren Behebung. Erfahren Sie mehr.

Registrieren Sie sich für Windows Arm Advisory Services.