Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Perangkat berbasis ARM menjadi semakin populer karena karakteristik hemat daya mereka, masa pakai baterai yang lebih lama, dan daya pemrosesan yang mengesankan, selain dukungan Windows pada ARM untuk Unit Pemrosesan Neural (UPN) yang disetel untuk beban kerja AI dan Pembelajaran Mesin yang semakin populer.
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.
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 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 native Arm64. 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.
Nota
Progresif Web Apps (PWAs) sudah akan 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:
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 pada 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, Desktop Bridge, 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.
Nota
GCC, dukungan untuk GNU Compiler Collection ditargetkan pada waktu dekat.
Langkah-langkah untuk menambahkan dukungan asli Arm64
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 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:
- 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...>.
- 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): Jika Anda ingin memverifikasi secara langsung bahwa biner aplikasi Anda sekarang dibangun untuk Arm64, Anda dapat membuka direktori proyek di PowerShell (klik kanan proyek aplikasi Anda di Visual Studio Solution Explorer 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:
- Tutup jendela "Platform solusi aktif".
- Ubah pengaturan build dari Debug ke Rilis.
- Di menu drop-down "Build", pilih Membangun Kembali 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 perangkat ARM, maka Anda memiliki penyiapan yang mudah dengan debugging 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.
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.
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".
Langkah 3 - Membuat dan menguji aplikasi Anda di perangkat Arm
Menambahkan tingkatan otomatisasi pengujian merupakan pertimbangan penting dalam strategi Continuous Integration dan Continuous Delivery (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 hasil kompilasi silang untuk Arm64.
Langkah 4 - Perbarui penginstal Anda dan terbitkan aplikasi yang diperbarui
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 panduan untuk membuat pengajuan aplikasi berdasarkan apakah Anda ingin mengirimkan MSI atau EXE, paket MSIX, PWA, atau Aplikasi add-on.
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
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.
Penyelesaian Masalah
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.
Dependensi yang tidak dikompilasi untuk ARM64 memblokir Anda dari build yang berhasil
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, kami sarankan mengajukan permintaan kepada pemelihara agar dibuat ulang 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 pengelola sumber terbuka akan berterima kasih atas kontribusi tersebut.
Organisasi Linaro juga 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.
Pertimbangkan 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 dijalankan melalui emulasi dalam aplikasi Anda. (Dependensi versi Arm64 tidak akan dapat digunakan dalam kasus ini.)
Pilihan terakhir adalah menghapus dan/atau mengganti dependensi pada proyek aplikasi Anda.
Kode ditulis untuk arsitektur tertentu selain Arm64
- Perakitan khusus CPU atau panggilan fungsi intrinsik yang digunakan secara sebaris perlu dimodifikasi agar sesuai dengan instruksi dan fungsi yang tersedia pada CPU Arm. Untuk panduan, lihat: Menggunakan Assembly dan Intrinsics dalam Kode C atau C++.
Aplikasi Anda bergantung pada driver kernel
Driver kernel harus dibangun sebagai Arm64 yang 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 Windows harus dibangun sebagai Arm64 dan tidak dapat diemulasikan. 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 drop-in untuk pengkompilasi dan linker MSVC. Ini masih menggunakan header dan pustaka dari MSVC dan kompatibel dengan ABI milik 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 dikembangkan di Linaro.
- Untuk daftar yang lebih lengkap, lihat Windows On Arm (WOA) - Confluence (atlassian.net).
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 akan berjalan di Windows di Arm, dan jika Anda mengalami masalah, Microsoft akan membantu Anda memulihkannya. Pelajari selengkapnya.
Windows on Arm