Menambahkan dukungan Arm ke aplikasi Windows Anda

Perangkat berbasis arm menjadi semakin populer karena sifat hemat daya mereka, masa pakai baterai yang lebih lama, dan daya pemrosesan yang mengesankan. Windows on Arm mendukung Unit Pemrosesan Neural (NPU) yang disetel untuk menghadapi beban kerja AI dan Pembelajaran Mesin yang semakin populer.

Panduan ini mencakup langkah-langkah untuk menambahkan dukungan ke aplikasi Windows Anda untuk perangkat yang didukung oleh prosesor Arm64. Ini juga menyediakan panduan tentang cara mengatasi potensi masalah atau pemblokir, seperti dependensi atau plug-in pihak ketiga, yang mungkin mengganggu pembuatan versi aplikasi Anda berbasis Arm64.

Emulasi pada perangkat berbasis Arm untuk aplikasi Windows x86 atau x64

Versi arm Windows 10 mencakup teknologi emulasi yang memungkinkan aplikasi x86 yang tidak dimodifikasi yang ada berjalan di perangkat Arm. Windows 11 memperluas emulasi tersebut untuk menjalankan aplikasi Windows x64 yang tidak dimodifikasi di perangkat bertenaga Arm.

Meskipun kemampuan untuk meniru perangkat x64 dan x86 di Arm adalah langkah maju yang bagus, panduan ini membantu Anda menambahkan dukungan Arm-native sehingga aplikasi Anda dapat memanfaatkan keuntungan performa asli dan kualitas unik perangkat bertenaga Arm64, termasuk:

  • Mengoptimalkan konsumsi daya aplikasi Anda untuk memperpanjang masa pakai baterai perangkat.
  • Mengoptimalkan performa untuk CPU, GPU, dan NPU untuk mempercepat alur kerja, terutama saat bekerja dengan AI.

Selain itu, Kernel driver perlu dikompilasi sebagai asli Arm64. Kernel ini tidak termasuk emulasi. Batasan ini terutama memengaruhi skenario virtualisasi. Untuk aplikasi yang menggunakan driver perangkat yang memerlukan akses langsung ke internal OS atau perangkat keras yang berjalan dalam mode kernel, bukan mode pengguna, dan yang belum diperbarui untuk mendukung prosesor Arm64, lihat Membangun Driver Arm64 dengan WDK.

Nota

Progresif Web Apps (PWAs) sudah dijalankan dengan performa Arm64 asli.

Prasyarat

Jika Anda memperbarui aplikasi menggunakan perangkat berbasis Arm (kompilasi asli - menghasilkan kode untuk platform yang sama tempat Anda menjalankan), Anda dapat menggunakan:

Jika Anda memperbarui aplikasi Windows untuk mendukung Arm menggunakan perangkat berbasis Intel x64 atau x86 (kompilasi silang), Anda dapat menggunakan:

Pertimbangkan beberapa faktor saat memilih antara kompilasi silang atau kompilasi asli, seperti perangkat keras yang tersedia dan kesederhanaan eksekusi pengujian.

Nota

GCC, dukungan untuk GNU Compiler Collection ditargetkan pada waktu dekat.

Langkah-langkah untuk menambahkan dukungan asli Arm64

Untuk memperbarui aplikasi agar berjalan secara asli di perangkat Arm64:

  1. Menambahkan konfigurasi Arm64 ke proyek Anda di Visual Studio
  2. Menguji dan men-debug aplikasi Arm64 yang baru dibuat
  3. Membuat dan menguji aplikasi Anda di perangkat Arm

Setelah mengonfirmasi bahwa aplikasi Anda dioptimalkan untuk perangkat Arm:

  1. Memperbarui alat penginstal dan menerbitkan aplikasi yang diperbarui
  2. Merencanakan pembaruan berkelanjutan

Langkah 1 - Menambahkan konfigurasi Arm64 ke proyek Anda di Visual Studio

Untuk menambahkan platform solusi ARM64 baru dengan target debug dan rilis ke proyek aplikasi x64 atau x86 yang ada:

  1. Buka solusi Anda (kode proyek) di Visual Studio (lihat prasyarat untuk versi yang didukung).
  2. Di menu drop-down "Platform Solusi" pada toolbar Standar (atau di menu "Build"), pilih Configuration Manager...
  3. Buka menu drop-down "Platform solusi aktif" dan pilih <Baru...>.
  4. Pada menu drop-down "Ketik atau pilih platform baru", pilih ARM64 dan pastikan bahwa nilai "Salin pengaturan dari" diatur ke x64 serta kotak centang "Buat platform proyek baru" diaktifkan, lalu pilih OK.

Selamat! Anda telah mulai menambahkan dukungan Arm ke aplikasi Anda. Selanjutnya, periksa untuk melihat apakah Solusi Arm64 Anda berhasil dibangun.

Jika Solusi Anda tidak berhasil dibangun, Anda harus menyelesaikan masalah yang menyebabkan build gagal. Alasan yang paling mungkin adalah bahwa dependensi tidak tersedia untuk ARM64, yang dibahas dalam bagian Pemecahan Masalah di bawah ini.

(Opsional): Untuk memverifikasi bahwa biner aplikasi Anda dibuat untuk Arm64, buka direktori proyek Anda di PowerShell (klik kanan proyek aplikasi Anda di Penjelajah Solusi Visual Studio dan pilih Buka di Terminal). Ubah direktori agar direktori baru bin\ARM64\Debug atau Rilis proyek Anda terpilih. Masukkan perintah: dumpbin /headers .\<appname>.exe (mengganti <appname> dengan nama aplikasi Anda). Gulir ke atas di hasil output terminal Anda untuk menemukan bagian FILE HEADER VALUES dan mengonfirmasi baris pertama adalah AA64 machine (ARM64).

Langkah 2 - Uji dan debug aplikasi Arm64 yang baru dibuat

Untuk memeriksa apakah solusi Arm64 Anda berhasil dibangun setelah menambahkan platform solusi Arm64 ke proyek Anda di Visual Studio:

  1. Tutup jendela Platform solusi aktif .
  2. Ubah pengaturan build dari Debug ke Rilis.
  3. Di menu tarik turun Build, pilih Membangun Kembali Solusi dan tunggu hingga proyek selesai dibangun kembali.
  4. Anda menerima output Kompilasi Ulang Semua berhasil. Jika tidak, lihat bagian Pemecahan Masalah .

Setelah biner dibuat untuk aplikasi Anda untuk mendukung Arm64, Anda ingin mengujinya. Pengujian tersebut memerlukan perangkat atau komputer virtual yang menjalankan Windows di Arm.

Jika Anda mengembangkan pada perangkat Windows pada Arm, maka Anda memiliki kemudahan penyiapan dengan debugging lokal Visual Studio. Jika Anda melakukan kompilasi silang (menggunakan perangkat yang tidak berjalan pada prosesor Arm), maka Anda ingin menggunakan penelusuran kesalahan jarak jauh pada perangkat Windows di Arm atau komputer virtual untuk memungkinkan pengalaman pengembangan Anda di Visual Studio saat menjalankan aplikasi Arm64 di perangkat lain.

Perangkat keras Windows di Arm atau komputer virtual tersedia untuk pengujian

Jika Anda mencari perangkat keras untuk digunakan untuk integrasi berkelanjutan (CI) dan pengujian, ini adalah beberapa perangkat Windows dengan prosesor berbasis Arm64:

Untuk bantuan menyiapkan komputer virtual (VM) yang menjalankan Windows di Arm untuk mendukung CI dan pengujian, lihat Mulai Cepat: Membuat Windows di komputer virtual Arm di portal Microsoft Azure.

Langkah 3 - Membuat dan menguji aplikasi Anda di perangkat Arm

Menambahkan tahap otomatisasi pengujian adalah pertimbangan penting untuk strategi Integrasi Berkelanjutan dan Pengiriman Berkelanjutan (CI/CD) Anda. Untuk solusi Arm64 yang berjalan di Windows, penting untuk menjalankan rangkaian pengujian Anda pada arsitektur Arm64. Arsitektur ini bisa menjadi perangkat keras Windows on Arm yang sebenarnya, menggunakan salah satu perangkat Arm yang tercantum sebelumnya, atau Komputer Virtual, dari VM yang tercantum sebelumnya.

Mengkompilasi aplikasi lebih nyaman ketika dilakukan pada komputer yang sama dengan pengujian, tetapi dalam banyak kasus tidak diperlukan. Sebagai gantinya, Anda dapat mempertimbangkan untuk memperluas infrastruktur build yang ada untuk menghasilkan output hasil kompilasi silang untuk Arm64.

Langkah 4 - Perbarui penginstal Anda dan terbitkan aplikasi yang diperbarui

Jika Anda menerbitkan ke Microsoft Store, setelah membuat aplikasi versi Arm64 dengan mengikuti langkah-langkah sebelumnya, Anda dapat memperbarui paket aplikasi yang ada di Microsoft Store dengan mengunjungi dasbor Pusat Mitra dan menambahkan biner ARM64 yang baru dibuat ke pengiriman.

Jika Anda belum menerbitkan aplikasi di Microsoft Store, Anda dapat mengikuti instruksi untuk membuat pengiriman aplikasi berdasarkan apakah Anda ingin mengirimkan MSI atau EXE, paket MSIX, PWA, atau Add-on Aplikasi.

Jika Anda membangun alat penginstal Anda sendiri, Anda harus memastikannya dapat menginstal versi Arm64 baru Anda dengan sukses. Sebagian besar kerangka kerja alat penginstal, seperti WiX, Squirrel, InnoSetup, InstallAware, dan lainnya mendukung Windows di Arm tanpa masalah.

Jika Anda menawarkan alat penginstal aplikasi dari halaman web, Anda dapat menggunakan User-Agent Petunjuk Klien untuk mendeteksi kapan pelanggan Anda mengunjungi menggunakan perangkat Windows di Arm, dan menawarkan versi aplikasi Anda yang telah diperbarui menjadi native-Arm. Tidak seperti string agen pengguna, petunjuk klien User-Agent memungkinkan Anda membedakan pelanggan di Arm dari pelanggan di perangkat x86.

Langkah 5 - Merencanakan pembaruan yang sedang berlangsung

Setelah memublikasikan versi Arm64 aplikasi, Anda ingin memastikan bahwa aplikasi tetap diperbarui dengan cara yang sama seperti versi aplikasi Anda lainnya. Jaga agar versi dan fitur tetap selaras di seluruh arsitektur untuk menghindari kebingungan pelanggan di masa mendatang.

Penyelesaian Masalah

Masalah umum yang mengganggu atau memblokir Anda menambahkan versi Arm64 dari aplikasi Windows x64 atau x86 yang ada meliputi:

Dependensi yang tidak dikompilasi untuk ARM64 memblokir Anda dari build yang berhasil

Jika Anda tidak dapat membuat aplikasi karena dependensi, baik internal, dari pihak ketiga, atau dari pustaka sumber terbuka, Anda perlu memperbarui dependensi tersebut untuk mendukung arsitektur ARM64 atau menghapusnya.

  • Untuk dependensi internal, bangun kembali dependensi untuk dukungan ARM64.

  • Untuk dependensi pihak ketiga, minta pengurus untuk membangun kembali dependensi dengan dukungan ARM64.

  • Untuk dependensi sumber terbuka, periksa vcpkg untuk melihat apakah versi dependensi yang lebih baru menyertakan dukungan ARM64 yang dapat Anda perbarui. Jika tidak ada pembaruan, pertimbangkan untuk berkontribusi pada penambahan dukungan ARM64 ke paket sendiri. Banyak pengelola sumber terbuka menghargai kontribusi tersebut.

  • Organisasi Linaro bekerja sama dengan bisnis dan komunitas sumber terbuka untuk mengembangkan perangkat lunak tentang teknologi berbasis Arm. Anda dapat mengirimkan permintaan di Linaro Service Desk untuk membantu memperbarui dukungan paket untuk setiap dependensi yang hilang yang terkait dengan Windows pada Arm.

  • Gunakan Arm64EC. Versi dependensi Arm64EC dapat digunakan untuk membangun kembali aplikasi sambil tetap menggunakan dependensi versi x64. Kode x64 apa pun, termasuk kode dari ketergantungan, dalam proses Arm64EC dijalankan dalam mode emulasi di aplikasi Anda. (Dependensi versi Arm64 tidak dapat digunakan dalam kasus ini.)

  • Hapus dan ganti dependensi pada proyek aplikasi Anda.

Kode ditulis untuk arsitektur tertentu selain Arm64

Aplikasi Anda bergantung pada driver kernel

Driver kernel harus dibangun sebagai Arm64 asli. Kernel tidak memberikan emulasi apa pun. Batasan ini terutama memengaruhi skenario virtualisasi. Untuk aplikasi yang menggunakan driver perangkat yang memerlukan akses langsung ke internal OS atau perangkat keras yang berjalan dalam mode kernel (bukan mode pengguna), dan yang belum diperbarui untuk mendukung prosesor Arm64, lihat Membangun Driver Arm64 dengan WDK.

Selain itu, driver pada Windows harus dibangun sebagai Arm64 dan tidak dapat ditimulasi. Untuk aplikasi yang mengandalkan driver perangkat lunak yang belum diperbarui untuk mendukung prosesor Arm64, lihat Membangun Driver Arm64 dengan WDK.

Toolchain untuk Windows pada Arm

Selain dukungan untuk Visual Studio dan LLVM (CLANG) seperti yang dibagikan di bagian Prasyarat panduan ini, alat dan kerangka kerja berikut juga didukung untuk Arm64:

  • .NET 7
  • .NET 6 (LTS)
  • .NET 5.0.8+
  • .NET Framework 4.8.1
  • clang-cl mengkompilasi kode C++ untuk Windows dan dapat berfungsi sebagai pengganti kompilator dan linker MSVC. Ini masih menggunakan header dan pustaka dari MSVC dan kompatibel dengan ABI milik MSVC.

Serta kerangka kerja pihak ketiga, termasuk:

Butuh bantuan? Manfaatkan layanan App Assure kami

App Assure Arm Advisory Service tersedia untuk membantu pengembang membangun aplikasi yang dioptimalkan untuk Arm. Layanan ini selain janji kami yang ada: aplikasi Anda berjalan di Windows di Arm, dan jika Anda mengalami masalah, Microsoft membantu Anda memulihkannya. Pelajari selengkapnya.

Daftar untuk Windows Arm Advisory Services.