Freigeben über


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

Arm-basierte Geräte werden aufgrund ihrer energieeffizienten Eigenschaften, längeren Akkulaufzeit und beeindruckenden Verarbeitungsleistung immer beliebter. Windows on Arm unterstützt neurale Verarbeitungseinheiten (Neural Processing Units, NPUs), die für die immer beliebteren AI- und Machine Learning-Workloads abgestimmt 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. Außerdem enthält sie Anleitungen zur Behebung potenzieller Probleme oder Blocker, z. B. Abhängigkeiten von Drittanbietern oder Plug-Ins, die die Erstellung einer Arm64-basierten Version Ihrer App beeinträchtigen könnten.

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-Geräten auf Arm-Geräten ein großer Schritt nach vorne ist, hilft Ihnen dieses Handbuch, arm-native Unterstützung hinzuzufügen, damit Ihre App systemeigene Leistungsvorteile und die einzigartigen Qualitäten von Arm64-geräten nutzen 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 als systemeigene Arm64 erstellt werden. Der Kernel enthält keine Emulation. Diese Einschränkung wirkt sich in erster Linie auf Virtualisierungsszenarien aus. Für Apps, die Gerätetreiber verwenden, die direkten Zugriff auf die Internen des Betriebssystems oder der Hardware benötigen, die im Kernelmodus ausgeführt wird, und nicht im Benutzermodus, und die noch nicht aktualisiert wurden, um Arm64-Prozessoren zu unterstützen, lesen Sie das Erstellen von Arm64-Treibern mit dem WDK.

Hinweis

Progressive Web Apps (PWAs) werden bereits mit systemeigener 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:

Berücksichtigen Sie bei der Auswahl zwischen kreuzkompilierung oder systemeigener Kompilierung mehrere Faktoren, z. B. verfügbare Hardware und Einfachheit der Testausführung.

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-Geräten 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 optimiert ist:

  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): Um zu überprüfen, ob Die App-Binärdatei für Arm64 erstellt wurde, öffnen Sie Ihr Projektverzeichnis in PowerShell (klicken Sie mit der rechten Maustaste auf Ihr App-Projekt im Visual Studio-Projektmappen-Explorer, und wählen Sie "Im Terminal öffnen" aus). Ä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

So überprüfen Sie, ob Ihre Arm64-Lösung erfolgreich erstellt wird, nachdem Sie ihr Projekt in Visual Studio die Arm64-Lösungsplattform 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 Dropdown-Menü Build die Option Solution neu erstellen aus, und warten Sie, bis das Projekt neu erstellt wird.
  4. Sie erhalten die Ausgabe "Alle neu erstellen erfolgreich". Falls nicht, lesen Sie den Abschnitt "Problembehandlung" .

Sobald die Binärdateien für Ihre App erstellt wurden, um Arm64 zu unterstützen, möchten Sie sie testen. Für diese Tests ist ein Computer oder eine virtuelle Maschine erforderlich, auf der Windows on Arm ausgeführt wird.

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 Cross-Kompilieren (unter Verwendung eines Geräts, das nicht auf einem Arm-Prozessor ausgeführt wird), möchten Sie das Remote-Debugging auf einem Windows-on-Arm-Gerät oder einem virtuellen Computer verwenden, um Ihre Entwicklungsumgebung in Visual Studio zu ermöglichen, während die Arm64-App auf einem anderen Gerät ausgeführt wird.

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

Wenn Sie nach Hardware für die kontinuierliche Integration (CI) und Tests suchen, 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 eine wichtige Überlegung für Ihre Strategie für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD). Für Arm64-Lösungen, die unter Windows ausgeführt werden, ist es wichtig, Ihre Testsuite auf der Arm64-Architektur auszuführen. Diese Architektur kann tatsächliche Windows auf Arm-Hardware sein, wobei eines der zuvor aufgeführten Arm-Geräte oder ein virtueller Computer von den zuvor aufgeführten virtuellen Computern verwendet wird.

Das Kompilieren der App ist praktischer, 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, nachdem Sie eine ARM64-Version Ihrer App gemäß den vorherigen Schritten erstellt haben, indem Sie Ihr Partner Center-Dashboard besuchen und die neu erstellten ARM64-Binärdateien zur Übermittlung hinzufügen.

Wenn Sie Ihre App noch nicht im Microsoft Store veröffentlichen, können Sie die Anweisungen befolgen, um eine App-Übermittlung basierend darauf zu erstellen, ob Sie ein MSI- oder EXE-, MSIX-Paket, PWA- oder App-Add-On übermitteln 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, möchten Sie sicherstellen, dass sie auf die gleiche Weise aktualisiert wird wie andere Versionen Ihrer App. Halten Sie Versionen und Funktionen über alle Architekturen hinweg ausgerichtet, um Verwirrung bei Kunden in Zukunft zu vermeiden.

Problembehandlung

Häufige Probleme, die Sie daran hindern, 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 Ihre App aufgrund einer Abhängigkeit, unabhängig davon, ob intern, von einem Drittanbieter oder aus einer Open Source-Bibliothek, nicht erstellen können, müssen Sie diese Abhängigkeit entweder aktualisieren, um die ARM64-Architektur zu unterstützen oder sie zu entfernen.

  • Erstellen Sie für interne Abhängigkeiten die Abhängigkeit für die ARM64-Unterstützung neu.

  • Fordern Sie für Abhängigkeiten von Drittanbietern den Betreuer an, die Abhängigkeit mit ARM64-Unterstützung neu zu erstellen.

  • Überprüfen Sie für Open Source-Abhängigkeiten vcpkg , um festzustellen, ob eine neuere Version der Abhängigkeit ARM64-Unterstützung enthält, auf 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 schätzen den Beitrag.

  • Die Linaro-Organisation arbeitet 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.

  • Verwenden Sie 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.)

  • Entfernen und ersetzen Sie die Abhängigkeit von Ihrem App-Projekt.

Code wird für eine andere Architektur als Arm64 geschrieben

Ihre App basiert auf einem Kerneltreiber.

Kerneltreiber müssen in nativer ARM64-Version erstellt werden. Der Kernel stellt keine Emulation bereit. Diese Einschränkung wirkt sich hauptsächlich auf Virtualisierungsszenarien aus. Für Apps, die Gerätetreiber verwenden, die direkten Zugriff auf die Internen des Betriebssystems oder der Hardware benötigen, die im Kernelmodus ausgeführt wird (und nicht im Benutzermodus), und die noch nicht aktualisiert wurden, um Arm64-Prozessoren zu unterstützen, lesen Sie das Erstellen von Arm64-Treibern mit dem WDK.

Darüber hinaus müssen Treiber unter Windows als Arm64 erstellt und nicht emuliert werden. Informationen zu 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, einschließlich:

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 ist zusätzlich zu unserem bestehenden Versprechen: Ihre Apps werden unter Windows auf Arm ausgeführt, und wenn Probleme auftreten, hilft Microsoft Ihnen, sie zu beheben. Erfahren Sie mehr.

Registrieren Sie sich für Windows Arm Advisory Services.