Aracılığıyla paylaş


Xamarin.Mac Birleşik uygulamalarını 64 bit olarak güncelleştirme

Ocak 2018 itibarıyla Apple, yeni Mac App Store gönderimlerinin 64 bit'i hedeflemesini gerektirir. Mac App Store'da zaten kullanılabilir olan uygulamaların Haziran 2018'e kadar hedef 64 bit olarak güncelleştirilmiş olması gerekir.

Dosya>Yeni Xamarin.Mac proje şablonu varsayılan olarak 64 bit uygulamalar oluşturur, bu nedenle yakın zamanda oluşturulan uygulamalar zaten 64 bit uyumlu olur ve herhangi bir değişiklik gerektirmez.

64 bit hedefleme

  1. Xamarin.Mac uygulamanız için Proje Seçenekleri penceresini açın:

    The contextual menu for the project

  2. Mac Derleme'yi seçin ve Desteklenen mimarileri x86_64 olarak ayarlayın:

    Setting the supported architectures to x86_64

  3. Uygulamanızın yerel başvurular veya bağlama projeleri gibi dış bağımlılıkları varsa, bunları hedef 64 bit olarak güncelleştirin.

Hatalar

Uygulamanızı ilk kez 64 bit destekle derlediğinizde veya çalıştırdığınızda, clang veya çalışma zamanı sorunlarından bağlantı hatalarıyla karşılaşabilirsiniz. Üçüncü taraf bağımlılıkları (örneğin, Xamarin.Mac'inizdeki yerel başvurular veya bağlama projeleri veya el ile yüklenen sistem genelindeki çerçeveler) 64 bit'e güncelleştirilmemişse bu hatalar oluşabilir.

İpucu

Projenizi 64 bit'e dönüştürmek önemli bir değişikliktir ve dolaylı olarak çeşitli programlama hatalarını ortaya çıkartabilir. Özellikle veri yapılarının boyutunu ve hizalamasını değiştirebilir ve bu da projenizde bağlantılı p/invoke imzalarını ve yerel kodu etkileyebilir. Verilen derleme uyarılarını gözden geçirmeyi ve olası sorunları yakalamak için uygulamanızı daha sonra kapsamlı bir şekilde test etmeyi göz önünde bulundurun.

64 bit'i hedeflemeyen dinamik olarak bağlı bir üçüncü taraf bağımlılığından kaynaklanan örnek hata:

ld : warning : ignoring file PATH/ThirdPartyLibrary.framework/ThirdPartyLibrary, 
file was built for i386 which is not the architecture being linked (x86_64): 
PATH/ThirdPartyLibrary.framework/ThirdPartyLibrary 

Bu hata, beklenen tanıtıcı yerine döndürülerek dlopenIntPtr.Zero çalışma zamanında izlenebilir.

64 bit'i hedeflemeyen statik bağlantılı üçüncü taraf bağımlılığından kaynaklanan örnek hata:

Undefined symbols for architecture x86_64:
  "_LibraryFunction", referenced from:
     -u command line option
ld: symbol(s) not found for architecture x86_64 

Başarıyla derlemek ve çalıştırmak için bu bağımlılıkları 64 bit olarak güncelleştirin ve uygulamanızı yeniden derleyin.