Aracılığıyla paylaş


Windows uygulamanıza Arm desteği ekleme

ARM tabanlı cihazlar, düşük enerji tüketimi, daha uzun pil ömrü ve etkileyici işlem gücü nedeniyle giderek daha popüler hale geliyor. Arm üzerinde Windows, giderek popüler hale gelen yapay zeka ve Makine Öğrenmesi iş yükleri için ayarlanmış Sinir İşlem Birimlerini (NPU) destekler.

Bu kılavuz, Arm64 işlemcilerle desteklenen cihazlar için Windows uygulamalarınıza destek ekleme adımlarını kapsar. Ayrıca, uygulamanızın Arm64 tabanlı bir sürümünün oluşturulmasını engelleyebilecek üçüncü taraf bağımlılıklar veya eklentiler gibi olası sorunları veya engelleyicileri giderme yolları hakkında rehberlik sağlar.

Arm tabanlı cihazlarda x86 veya x64 Windows uygulamaları için öykünme

Windows 10'un arm sürümleri, mevcut değiştirilmemiş x86 uygulamalarının Arm cihazlarında çalışmasını sağlayan öykünme teknolojisi içerir. Windows 11, arm destekli cihazlarda değiştirilmemiş x64 Windows uygulamalarını çalıştırmak için bu öykünme kapsamını genişletir.

Arm cihazlarında x64 ve x86'ya öykünebilme özelliği ileriye doğru harika bir adım olsa da, bu kılavuz uygulamanızın yerel performans kazanımlarından ve Arm64 destekli cihazların benzersiz özelliklerinden yararlanabilmesi için Arm yerel desteği eklemenize yardımcı olur:

  • Cihazınızın pil ömrünü uzatmak için uygulamanızın güç tüketimini iyileştirme.
  • Özellikle yapay zeka ile çalışırken iş akışlarını hızlandırmak için CPU, GPU ve NPU performansını iyileştirme.

Ayrıca Çekirdek sürücülerinin yerel Arm64 olarak derlenmiş olması gerekir. Çekirdek öykünme içermez. Bu sınırlama öncelikle sanallaştırma senaryolarını etkiler. kullanıcı modu yerine işletim sisteminin iç birimlerine veya çekirdek modunda çalışan donanımlara doğrudan erişim gerektiren ve henüz Arm64 işlemcilerini destekleyecek şekilde güncelleştirilmeyen cihaz sürücülerini kullanan uygulamalar için bkz. WDK ile Arm64 Sürücüleri Oluşturma.

Uyarı

Aşamalı Web Uygulamaları (PWA'lar) zaten yerel Arm64 performansıyla yürütülmektedir.

Önkoşullar

Arm tabanlı bir cihaz kullanarak uygulamanızı güncelleştiriyorsanız (yerel derleme - üzerinde çalıştığınız platformun kodunu oluşturuyorsanız) şunları kullanabilirsiniz:

  • Visual Studio 17.10 – Önizleme 1'e Giriş (Şubat 2024)

  • Visual Studio 2022 v17.4 veya üzeri. Bu, Arm tabanlı işlemcilerde Arm64 uygulamalarının oluşturulmasını ve hatalarını ayıklamayı yerel olarak destekleyen Visual Studio'nun ilk GA sürümüdür. Hem Visual Studio 2022 17.4 hem de Microsoft Visual C++ (MSVC) yerel Arm64 sürümleri, önceki öykünmüş sürümlerle karşılaştırıldığında önemli ölçüde daha iyi performans sağlar.

  • (İsteğe bağlı) LLVM (Clang) v12+ veya daha sonraki bir sürümü. LLVM 12, Clang derleyicisi, LLD Bağlayıcısı ve derleyici-rt çalışma zamanı kitaplıkları dahil olmak üzere Windows Arm64 platformunda barındırılan resmi ikili sürümü eklemektedir.

Windows uygulamanızı x64 veya x86 Intel tabanlı bir cihaz (çapraz derleme) kullanarak Arm'yi destekleyecek şekilde güncelleştiriyorsanız şunları kullanabilirsiniz:

Çapraz derleme veya yerel derleme arasında seçim yaparken, kullanılabilir donanım ve test yürütmenin basitliği gibi çeşitli faktörleri göz önünde bulundurun.

Uyarı

GCC , GNU Derleyici Koleksiyonu desteği yakın gelecekte hedeflenmektedir.

Arm64 yerel desteği ekleme adımları

Uygulamanızı Arm64 cihazlarında yerel olarak çalışacak şekilde güncelleştirmek için:

  1. Visual Studio'da projenize Arm64 yapılandırması ekleme
  2. yeni oluşturulan Arm64 uygulamasını test ve hatalarını ayıklama
  3. Arm cihazlarında uygulamanızı derleme ve test

Uygulamanızın Arm cihazları için iyileştirildiğini onayladıktan sonra:

  1. Yükleyicinizi güncelleştirme ve güncelleştirilmiş uygulamanızı yayımlama
  2. Devam eden güncelleştirmeler için plan

1. Adım - Visual Studio'da projenize Arm64 yapılandırması ekleme

Mevcut x64 veya x86 uygulama projenize hata ayıklama ve sürüm hedefleri içeren yeni bir ARM64 çözüm platformu eklemek için:

  1. Çözümünüzü (proje kodu) Visual Studio'da açın (desteklenen sürümler için önkoşullar bakın).
  2. Standart araç çubuğundaki "Çözüm Platformları" açılan menüsünde (veya "Derleme" menüsünde), Configuration Manager... öğesini seçin
  3. "Etkin çözüm platformu" açılan menüsünü açın ve <Yeni...>öğesini seçin.
  4. "Yeni platformu yazın veya seçin" açılan menüsünde ARM64 seçin ve "Ayarları kopyala" değerinin "Yeni proje platformları oluştur" onay kutusu etkin x64 olarak ayarlandığından emin olun ve ardındanTamam'ı seçin.

Tebrikler! Uygulamanıza Arm desteği eklemeye başladınız. Ardından Arm64 Çözümünüzün başarıyla derlenip derlenmediğini denetleyin.

Çözümünüz başarıyla derlenmezse, derlemenin başarısız olmasına neden olan sorunları çözmeniz gerekir. Bunun en olası nedeni ARM64 için bir bağımlılığın kullanılamaması ve bu durum aşağıdaki Sorun Giderme kapsamındadır.

(İsteğe bağlı): Uygulama ikili dosyanızın Arm64 için oluşturulduğunu doğrulamak için proje dizininizi PowerShell'de açın (Visual Studio Çözüm Gezgini'nde uygulama projenize sağ tıklayın ve Terminalde Aç'ı seçin). Projenizin yeni bin\ARM64\Debug veya Yayın dizininin seçilmesi için dizinleri değiştirin. şu komutu girin: dumpbin /headers .\<appname>.exe (<appname> uygulamanızın adıyla değiştirerek). terminalinizin çıktısında yukarı kaydırarak FILE HEADER VALUES bölümünü bulun ve ilk satırın AA64 machine (ARM64)olduğunu onaylayın.

2. Adım - Yeni oluşturulan Arm64 uygulamasını test edip hatalarını ayıklama

Arm64 çözüm platformunu Visual Studio'da projenize ekledikten sonra Arm64 çözümünüzün başarıyla derlenip derlenmeyeceğini denetlemek için:

  1. Etkin çözüm platformu penceresini kapatın.
  2. Derleme ayarını Hata Ayıklama'den Sürümolarak değiştirin.
  3. Derleme açılan menüsünde Çözümü Yeniden Derle'yi seçin ve projenin yeniden derlenmesi için bekleyin.
  4. Tümünü Yeniden Oluşturma başarılı oldu çıktısı alırsınız. Aksi takdirde Sorun Giderme bölümüne bakın.

İkili dosyalar, uygulamanız için Arm64'i destekleyecek şekilde oluşturulduktan sonra bunları test etmek istersiniz. Bu test için Arm üzerinde Windows çalıştıran bir cihaz veya sanal makine olması gerekir.

Arm cihazında bir Windows üzerinde geliştirme yapıyorsanız Visual Studio yerel hata ayıklama ile kolay bir kuruluma sahip olursunuz. Çapraz derleme yapıyorsanız (Arm işlemcisinde çalışmayan bir cihaz kullanıyorsanız), Arm uygulamasını başka bir cihazda çalıştırırken Visual Studio'da geliştirme deneyiminizi etkinleştirmek için Arm cihazındaki bir Windows'ta veya sanal makinede uzaktan hata ayıklama kullanmak istersiniz.

Test için kullanılabilen Arm donanımlarında veya sanal makinelerinde Windows

Sürekli tümleştirme (CI) ve test için kullanılacak donanım arıyorsanız Arm64 tabanlı işlemciye sahip Windows cihazlarından bazıları şunlardır:

CI ve testi desteklemek üzere Arm üzerinde Windows çalıştıran bir sanal makineyi (VM) ayarlama konusunda yardım için bkz . Hızlı Başlangıç: Azure portalında Arm sanal makinesinde Windows oluşturma.

3. Adım - Arm cihazlarında uygulamanızı derleme ve test etme

Test otomasyonu aşaması eklemek, Sürekli Entegrasyon ve Sürekli Teslimat (CI/CD) stratejiniz için önemli bir husustur. Windows üzerinde çalışan Arm64 çözümleri için test paketinizi Arm64 mimarisinde çalıştırmak önemlidir. Bu mimari, daha önce listelenen Arm cihazlarından birini veya daha önce listelenen VM'lerden bir Sanal Makineyi kullanarak Arm donanımında gerçek Windows olabilir.

Uygulamayı derlemek, testlerle aynı makinede yapıldığında daha kullanışlıdır, ancak çoğu durumda gerekli değildir. Bunun yerine, Arm64 için çapraz derlenmiş bir çıkış oluşturmak üzere mevcut derleme altyapısını genişletmeyi düşünebilirsiniz.

4. Adım - Yükleyicinizi güncelleştirme ve güncelleştirilmiş uygulamanızı yayımlama

Microsoft Store'da yayımlarsanız, önceki adımları izleyerek uygulamanızın Arm64 sürümünü derledikten sonra İş Ortağı Merkezi panonuzu ziyaret edip yeni oluşturulan ARM64 ikili dosyalarını gönderiye ekleyerek Microsoft Store'daki mevcut uygulama paketinizi güncelleştirebilirsiniz.

Uygulamanızı Microsoft Store'da yayımlamadıysanız, MSI veya EXE, MSIX paketi, PWA veya Uygulama eklentisi göndermek isteyip istemediğinize bağlı olarak uygulama gönderimi oluşturmak için yönergeleri izleyebilirsiniz.

Kendi yükleyicinizi derlediyseniz, yeni Arm64 sürümünüzü başarıyla yükleyebildiğine emin olmanız gerekir. WiX, Sincap, InnoSetup, InstallAwaregibi çoğu yükleyici çerçevesi Arm üzerinde Windows'u sorunsuz bir şekilde destekler.

Uygulamanızın yükleyicisini bir web sayfasından sunuyorsanız User-Agent İstemci İpuçları kullanarak müşterinizin Arm'daki bir Windows cihazından ne zaman ziyaret ettiğinizi algılayabilir ve uygulamanızın güncelleştirilmiş Arm yerel sürümünü sunabilirsiniz. Kullanıcı aracısı dizesinden farklı olarak User-Agent İstemci İpuçları, Arm'de bulunan müşterileri x86 cihazlardaki müşterilerden ayırt etmenizi sağlar.

5. Adım - Devam eden güncelleştirmeleri planlama

Artık uygulamanızın Arm64 sürümünü yayımladığınıza göre, uygulamanızın diğer sürümleriyle aynı şekilde güncelleştirildiğinden emin olmak istiyorsunuz. Gelecekte müşteri karışıklığını önlemek için sürümleri ve özellikleri mimariler arasında uyumlu tutun.

Sorun giderme

Mevcut x64 veya x86 Windows uygulamanızın Arm64 sürümünü eklemenizi engelleyen veya engelleyen yaygın sorunlar şunlardır:

ARM64 için derlenmemiş bir bağımlılık, başarılı bir derlemeden sizi engelliyor

İç, üçüncü taraf veya açık kaynak kitaplık gibi bir bağımlılık nedeniyle uygulamanızı oluşturamıyorsanız ARM64 mimarisini destekleyecek şekilde bu bağımlılığı güncelleştirmeniz veya kaldırmanız gerekir.

  • İç bağımlılıklar için ARM64 desteği için bağımlılığı yeniden oluşturun.

  • Üçüncü taraf bağımlılıkları için bakımcıdan ARM64 desteğiyle bağımlılığı yeniden oluşturmasını isteyin.

  • Açık kaynak bağımlılıkları için, bağımlılığın daha yeni bir sürümünün güncelleştirebileceğiniz ARM64 desteği içerip içermediğini görmek için vcpkg'yi denetleyin. Güncelleştirme yoksa pakete ARM64 desteği eklemeyi kendiniz de göz önünde bulundurun. Birçok açık kaynak bakımcısı bu katkıyı takdir etti.

  • Linaro kuruluşu, Arm tabanlı teknoloji üzerine yazılım geliştirmek için işletmelerle ve açık kaynak topluluklarla birlikte çalışır. Windows on Arm ile ilgili eksik bağımlılıkların paket desteğini güncellemek için Linaro Hizmet Masası'na bir istek başvurusu yapabilirsiniz.

  • Arm64EC kullanın. Bağımlılıkların Arm64EC sürümleri, bağımlılıkların x64 sürümlerini kullanmaya devam ederken bir uygulamayı yeniden derlemek için kullanılabilir. Arm64EC işlemindeki bağımlılıklardan gelen kod da dahil olmak üzere tüm x64 kodları uygulamanızda öykünme altında çalışır. (Bağımlılıkların Arm64 sürümleri bu durumda kullanılamaz.)

  • Uygulama projenizdeki bağımlılığı kaldırın ve değiştirin.

Kod Arm64 dışında belirli bir mimari için yazılır

Uygulamanız bir çekirdek sürücüsüne dayanır

Çekirdek sürücüleri yerel Arm64 olarak derlenmelidir. Çekirdek herhangi bir öykünme sağlamaz. Bu sınırlama temel olarak sanallaştırma senaryolarını etkiler. İşletim sisteminin iç öğelerine veya çekirdek modunda çalışan donanımlara (kullanıcı modu yerine) doğrudan erişim gerektiren ve henüz Arm64 işlemcilerini destekleyecek şekilde güncelleştirilmeyen cihaz sürücülerini kullanan uygulamalar için bkz. WDK ile Arm64 Sürücüleri Oluşturma.

Ayrıca, Windows'ta sürücülerin Arm64 olarak oluşturulmuş olması gerekir ve öykünülmüş olamaz. Henüz Arm64 işlemcilerini destekleyecek şekilde güncelleştirilmeyen yazılım sürücülerini kullanan uygulamalar için bkz. WDK ile Arm64 Sürücüleri Oluşturma.

Arm'de Windows için Araç Zinciri

Bu kılavuzun Önkoşullar bölümünde paylaşılan Visual Studio ve LLVM (CLANG) desteğine ek olarak, Arm64 için aşağıdaki araçlar ve çerçeveler de desteklenir:

  • .NET 7
  • .NET 6 (LTS)
  • .NET 5.0.8+
  • .NET Framework 4.8.1
  • clang-cl , Windows için C++ kodunu derler ve MSVC derleyicisi ve bağlayıcısının yerine kullanılabilir. MsVC'den üst bilgileri ve kitaplıkları kullanmaya devam eder ve MSVC ile ABI uyumludur.

Üçüncü taraf çerçevelerin yanı sıra şunlar da dahil:

Yardıma mı ihtiyacınız var? App Assure hizmetimizden yararlanın

App Assure Arm Danışmanlık Hizmeti, geliştiricilerin Arm için iyileştirilmiş uygulamalar oluşturmasına yardımcı olmak için kullanılabilir. Bu hizmet, mevcut sözümüzün yanı sıra: uygulamalarınız Arm üzerinde Windows üzerinde çalışır ve herhangi bir sorunla karşılaşırsanız Microsoft bunları düzeltmenize yardımcı olur. Daha fazla bilgi edinin.

Windows Arm Danışmanlık Hizmetleri'ne kaydolun.