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
Xamarin.Mac uygulamanız için Proje Seçenekleri penceresini açın:
Mac Derleme'yi seçin ve Desteklenen mimarileri x86_64 olarak ayarlayın:
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 dlopen
IntPtr.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.