Aracılığıyla paylaş


Xamarin.iOS'ta katıştırılmış çerçeveler

Bu belgede uygulama geliştiricilerinin uygulamalarına kullanıcı çerçevelerini nasıl ekleyebileceği açıklanmaktadır.

iOS 8.0 ile Apple, uygulama uzantılarıyla Xcode'daki ana uygulama arasında kod paylaşmak için eklenmiş bir çerçeve oluşturmayı mümkün hale getirdi.

Xamarin.iOS 9.0, Xamarin.iOS uygulamalarında bu eklenmiş çerçeveleri (Xcode ile oluşturulan) kullanma desteği ekler. Herhangi bir Xamarin.iOS projesi türünden katıştırılmış çerçeveler oluşturmak mümkün olmayacaktır, yalnızca mevcut yerel (Objective-C) çerçeveleri kullanmak mümkün olmayacaktır.

Xamarin.iOS'ta çerçeveleri kullanmanın iki yolu vardır:

  • Projenin iOS Derleme seçeneklerindeki ek mtouch bağımsız değişkenlerine aşağıdakileri ekleyerek çerçeveyi mtouch aracına geçirin:

    --framework:/Path/To/My.Framework
    

    Bunun her proje yapılandırması için ayarlanması gerekir.

  • Bağlam menüsünden Yerel Başvurular Ekleme

Project'e sağ tıklayın ve Yerel Başvuru Eklemek için Gözat

Select Add native references in Visual Studio for Mac

Bu, tüm yapılandırmalar için çalışır.

Mac için Visual Studio ve Visual Studio için Xamarin Araçları'nın gelecek sürümlerinde, çerçeveleri IDE'nin içinden (proje dosyalarını el ile düzenlemeden) kullanmak mümkün olacaktır.

Github'da birkaç örnek proje bulunabilir

Sınırlamalar

  • Katıştırılmış çerçeveler yalnızca Birleşik projelerde desteklenir.
  • Katıştırılmış çerçeveler yalnızca en az iOS 8.0 dağıtım hedefi olan projelerde desteklenir.
  • Uzantı eklenmiş bir çerçeve gerektiriyorsa, kapsayıcı uygulamasının çerçeveye de bir başvurusu olmalıdır, aksi takdirde çerçeve uygulama paketine dahil edilmeyecektir.

Mono çalışma zamanı

Dahili olarak Xamarin.iOS, Mono çalışma zamanını her uzantıya ve kapsayıcı uygulamasına statik olarak bağlamak yerine mono çalışma zamanıyla çerçeve olarak bağlantı oluşturmak için bu özelliğin avantajlarından yararlanır.

Kapsayıcı uygulaması birleşik bir uygulamaysa, uzantılar içeriyorsa ve hedef dağıtım iOS 8.0 veya üzeriyse bu otomatik olarak yapılır.

Uzantı içermeyen uygulamalar mono çalışma zamanına statik olarak bağlanmaya devam eder, çünkü çerçeveye başvuran tek bir uygulama varsa çerçeve kullanmak için bir boyut cezası vardır.

Bu davranış, aşağıdakiler projenin iOS Derleme seçeneklerine ek bir mtouch bağımsız değişkeni olarak eklenerek uygulama geliştiricisi tarafından geçersiz kılınabilir:

  • --mono:static: Mono çalışma zamanına statik olarak bağlanır.
  • --mono:framework: Mono çalışma zamanını çerçeve olarak içeren bağlantılar.

Mono çalışma zamanını, uzantısı olmayan uygulamalar için bile çerçeve olarak bağlama senaryolarından biri, Apple'ın yürütülebilir dosya üzerinde uyguladığı boyut kısıtlamalarının üstesinden gelmek için yürütülebilir boyutu küçültmektir. Başvuru için Mono çalışma zamanı mimari başına yaklaşık 1,7 MB ekler (Xamarin.iOS 8.12 itibarıyla, ancak sürümleri arasında ve hatta uygulamalar arasında değişir). Mono çerçevesi mimari başına yaklaşık 2,3 MB ekler; başka bir deyişle, herhangi bir uzantısı olmayan tek mimarili bir uygulama için uygulama bağlantısının Çerçeve olarak Mono çalışma zamanıyla bağlantısının yürütülebilir dosyayı ~1,7 MB küçülteceği, ancak ~2,3 MB'lık bir çerçeve eklediği ve ~0,6 MB daha büyük bir uygulama alltogether ile sonuçlanacağı anlamına gelir.