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, selain dukungan Windows on Arm untuk Neural Processing Units (NPU) yang disetel untuk AI yang semakin populer dan beban kerja Pembelajaran Mesin.
Panduan ini akan membahas langkah-langkah untuk menambahkan dukungan ke aplikasi Windows Anda untuk perangkat yang didukung oleh prosesor Arm64. Panduan juga akan mencakup cara untuk mengatasi potensi masalah atau pemblokir (seperti dependensi atau plug-in pihak ke-3) yang dapat mengganggu pembuatan versi aplikasi Anda berbasis Arm64.
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 yang bagus ke depannya, panduan ini akan 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, driver Kernel harus dibangun sebagai Arm64 asli. Tidak ada emulasi yang ada di kernel. Ini terutama berdampak pada 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.
Catatan
Progresif Web Apps (PWAs) sudah akan dijalankan dengan performa Arm64 asli.
Jika Anda memperbarui aplikasi menggunakan perangkat berbasis Arm (kompilasi asli - menghasilkan kode untuk platform yang sama tempat Anda menjalankan), Anda dapat menggunakan:
Visual Studio 2022 v17.4 atau yang lebih baru. Ini adalah rilis GA pertama Visual Studio yang secara asli mendukung pembuatan dan debugging aplikasi Arm64 pada prosesor berbasis Arm. Versi Arm64 asli Visual Studio 2022 17.4 dan Microsoft Visual C++ (MSVC) memberikan performa yang jauh lebih baik dibandingkan dengan versi yang ditiru sebelumnya.
(Opsional) LLVM (Clang) v12+ atau yang lebih baru . LLVM 12 menambahkan rilis biner resmi yang dihosting di Windows di Arm64, termasuk compiler Clang, LLD Linker, dan pustaka runtime compiler-rt.
Jika Anda memperbarui aplikasi Windows untuk mendukung Arm menggunakan perangkat berbasis Intel x64 atau x86 (kompilasi silang), Anda dapat menggunakan:
- Visual Studio 2022 v17.10 (Disarankan)
- Visual Studio 2019 v16.x
- Visual Studio 2017 v15.9 dan seterusnya (UWP, Jembatan desktop, win32 C++)
- LLVM (Clang) v12+
Ada beberapa faktor yang perlu dipertimbangkan saat memilih antara kompilasi silang atau kompilasi asli seperti perangkat keras yang tersedia dan kesederhanaan eksekusi pengujian.
Catatan
GCC, dukungan GNU Compiler Collection ditargetkan untuk waktu dekat.
Untuk memperbarui aplikasi Anda agar berjalan secara asli di Arm64:
- Menambahkan konfigurasi Arm64 ke proyek Anda di Visual Studio
- Menguji dan men-debug aplikasi Arm64 yang baru dibuat
- Membuat dan menguji aplikasi Anda di perangkat Arm
Setelah mengonfirmasi bahwa aplikasi Anda telah berhasil dioptimalkan untuk perangkat Arm:
- Memperbarui alat penginstal dan menerbitkan aplikasi yang diperbarui
- Merencanakan pembaruan yang sedang berlangsung
Untuk menambahkan platform solusi ARM64 baru dengan target debug dan rilis ke proyek aplikasi x64 atau x86 yang ada:
- Buka solusi Anda (kode proyek) di Visual Studio (lihat prasyarat untuk versi yang didukung).
- Di menu drop-down "Platform Solusi" pada toolbar Standar (atau di menu "Build"), pilih Configuration Manager...
- Buka menu drop-down "Platform solusi aktif" dan pilih Baru...>.<
- Di menu drop-down "Ketik atau pilih platform baru", pilih ARM64 dan pastikan bahwa nilai "Salin pengaturan dari" diatur ke x64 dengan 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 tercakup dalam Pemecahan Masalah di bawah ini.
(Opsional): Jika Anda ingin memverifikasi secara langsung bahwa biner aplikasi Anda sekarang dibuat untuk Arm64, Anda dapat membuka direktori proyek di PowerShell (klik kanan proyek aplikasi Anda di Visual Studio Penjelajah Solusi dan pilih Buka di Terminal). Ubah direktori sehingga direktori baru bin\ARM64\Debug
atau Rilis proyek Anda dipilih. 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)
.
Untuk memeriksa apakah Solusi Arm64 Anda berhasil dibangun setelah menambahkan platform solusi Arm64 ke proyek Anda di Visual Studio:
- Tutup jendela "Platform solusi aktif".
- Ubah pengaturan build dari Debug ke Rilis.
- Di menu drop-down "Build", pilih Bangun Ulang Solusi dan tunggu proyek dibangun kembali.
- Anda akan menerima output "Bangun Ulang Semua berhasil". Jika tidak, lihat bagian Pemecahan Masalah di bawah ini.
Setelah biner dibuat untuk aplikasi Anda untuk mendukung Arm64, Anda harus mengujinya. Itu akan mengharuskan memiliki perangkat atau komputer virtual yang menjalankan Windows di Arm.
Jika Anda melakukan pengembangan pada perangkat Windows di Arm, maka Anda memiliki penyiapan yang mudah dengan penelusuran kesalahan lokal Visual Studio. Jika mengkompilasi silang (menggunakan perangkat yang tidak berjalan pada prosesor Arm), maka Anda akan 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.
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 Azure.
Baca pengumuman blog Azure tentang ketersediaan umum untuk Azure Virtual Machines dengan prosesor berbasis Ampere Altra Arm dengan kemampuan untuk menjalankan versi Windows 11 Pro dan Enterprise berbasis Arm64.
Pelajari selengkapnya tentang Windows 11 di Arm Insider Preview (VHDX) untuk membuat Windows lokal di Arm VM menggunakan Hyper-V dan Windows Insider VHDX. *VM Arm64 hanya didukung pada perangkat yang memenuhi prasyarat. Membuat VM Arm64 tidak didukung pada perangkat keras x64 - Anda harus menghosting VM di cloud, lihat tautan mulai cepat di atas.
Lihat video "Tanya pakar: Buat Aplikasi dengan Azure VM berbasis Ampere".
Menambahkan lulus 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 -- ini bisa menjadi perangkat keras Windows on Arm yang sebenarnya, menggunakan salah satu perangkat Arm yang tercantum di atas, atau Komputer Virtual, dari VM yang tercantum di atas.
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 yang dikompilasi silang untuk Arm64.
Jika Anda menerbitkan ke Microsoft Store, setelah membuat versi Arm64 dari aplikasi Anda dengan mengikuti langkah-langkah di atas, Anda dapat memperbarui paket aplikasi yang ada di Microsoft Store dengan mengunjungi dasbor Pusat Mitra Anda dan menambahkan biner ARM64 yang baru dibuat ke pengiriman.
Jika aplikasi Anda belum diterbitkan 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 Petunjuk Klien Agen Pengguna untuk mendeteksi kapan pelanggan Anda mengunjungi dari perangkat Windows di Arm dan menawarkan versi arm-native yang diperbarui dari aplikasi Anda. Tidak seperti string agen pengguna, Petunjuk Klien Agen Pengguna memungkinkan Anda membedakan pelanggan di Arm dari pelanggan di perangkat x86.
Sekarang setelah aplikasi Anda diterbitkan versi Arm64, Anda harus memastikan bahwa aplikasi tetap diperbarui dengan cara yang sama seperti versi aplikasi Anda lainnya. Yang terbaik adalah menjaga versi dan fitur tetap selaras di seluruh arsitektur untuk menghindari kebingungan pelanggan di masa depan.
Masalah umum yang dapat 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.
- Kode ditulis untuk arsitektur tertentu selain Arm64.
- Aplikasi Anda bergantung pada driver kernel.
- Kau terjebak dan butuh bantuan.
Jika Anda tidak dapat membangun karena dependensi, baik internal, dari pihak ke-3, atau dari pustaka sumber terbuka, Anda harus menemukan cara untuk memperbarui dependensi tersebut untuk mendukung arsitektur ARM64 atau menghapusnya.
Untuk dependensi internal, sebaiknya bangun kembali dependensi untuk dukungan ARM64.
Untuk dependensi pihak ke-3, sebaiknya ajukan permintaan agar pemeliharaan dibangun kembali dengan dukungan ARM64.
Untuk dependensi sumber terbuka, pertimbangkan untuk memeriksa vcpkg untuk melihat apakah versi dependensi yang lebih baru yang menyertakan dukungan ARM64 ada yang dapat Anda perbarui. Jika tidak ada pembaruan, pertimbangkan untuk berkontribusi pada penambahan dukungan ARM64 ke paket sendiri. Banyak sumber terbuka pengusaha akan berterima kasih atas kontribusi tersebut.
Organisasi Linaro juga bekerja sama dengan bisnis dan komunitas sumber terbuka untuk mengembangkan perangkat lunak pada teknologi berbasis Arm. Anda dapat mengajukan permintaan dengan Linaro Service Desk untuk membantu memperbarui dukungan paket untuk dependensi yang hilang yang terkait dengan Windows di Arm.
Pertimbangkan untuk menggunakan Arm64EC. Versi dependensi Arm64EC dapat digunakan untuk membangun kembali aplikasi sambil tetap menggunakan dependensi versi x64. Kode x64 apa pun, termasuk kode dari dependensi, dalam proses Arm64EC akan berjalan di bawah emulasi di aplikasi Anda. (Dependensi versi Arm64 tidak akan dapat digunakan dalam kasus ini.)
Pilihan terakhir adalah menghapus dan/atau mengganti dependensi pada proyek aplikasi Anda.
- Rakitan khusus CPU atau panggilan fungsi intrinsik sebaris perlu dimodifikasi agar sesuai dengan instruksi dan fungsi yang tersedia pada Arm CPU. Untuk panduan, lihat: Menggunakan Assembly dan Intrinsics dalam Kode C atau C++.
Driver kernel diperlukan untuk dibangun sebagai Arm64 asli. Tidak ada emulasi yang ada di kernel. Ini terutama berdampak pada 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 diperlukan untuk 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.
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 drop-in untuk pengkompilasi dan linker MSVC. Ini masih menggunakan header dan pustaka dari MSVC dan kompatibel dengan ABI dengan MSVC.
Serta kerangka kerja pihak ketiga, termasuk:
- Qt untuk Windows, Boost C++ Library, Bazel, alat build dan pengujian sumber terbuka.
- Dukungan untuk GCC dan Mingw / GNU Toolchain untuk Windows on Arm sedang berlangsung di Linaro.
- Untuk daftar yang lebih lengkap, lihat Windows On Arm (WOA) - Confluence (atlassian.net).
App Assure Arm Advisory Service tersedia untuk membantu pengembang membangun aplikasi yang dioptimalkan arm. Layanan ini selain janji kami yang ada: aplikasi Anda akan berjalan di Windows di Arm, dan jika Anda mengalami masalah, Microsoft akan membantu Anda memulihkannya. Pelajari selengkapnya.
Umpan balik Windows on Arm
Windows on Arm adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: