Bagikan melalui


Kerangka kerja yang disematkan di Xamarin.iOS

Dokumen ini menjelaskan bagaimana pengembang aplikasi dapat menyematkan kerangka kerja pengguna di aplikasi mereka.

Dengan iOS 8.0 Apple memungkinkan untuk membuat kerangka kerja yang disematkan untuk berbagi kode antara ekstensi aplikasi dan aplikasi utama di Xcode.

Xamarin.iOS 9.0 menambahkan dukungan untuk menggunakan kerangka kerja yang disematkan ini (dibuat dengan Xcode) di aplikasi Xamarin.iOS. Tidak dimungkinkan untuk membuat kerangka kerja yang disematkan dari semua jenis proyek Xamarin.iOS, hanya mengonsumsi kerangka kerja asli (Objective-C) yang ada.

Ada dua cara untuk menggunakan kerangka kerja di Xamarin.iOS:

  • Teruskan kerangka kerja ke alat mtouch, dengan menambahkan yang berikut ke argumen mtouch tambahan dalam opsi Build iOS proyek:

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

    Ini harus diatur untuk setiap konfigurasi proyek.

  • Menambahkan Referensi Asli dari menu konteks

Klik kanan pada Proyek dan Telusuri untuk Menambahkan Referensi Asli

Select Add native references in Visual Studio for Mac

Ini akan berfungsi untuk semua konfigurasi.

Dalam versi Visual Studio untuk Mac dan Xamarin Tools for Visual Studio dimungkinkan untuk menggunakan kerangka kerja dari dalam IDE (tanpa mengedit file proyek secara manual).

Beberapa proyek sampel dapat ditemukan di github

Batasan

  • Kerangka kerja yang disematkan hanya didukung dalam proyek Terpadu .
  • Kerangka kerja yang disematkan hanya didukung dalam proyek dengan target penyebaran setidaknya iOS 8.0.
  • Jika ekstensi memerlukan kerangka kerja yang disematkan, aplikasi kontainer juga harus memiliki referensi ke kerangka kerja, jika tidak, kerangka kerja tidak akan disertakan dalam bundel aplikasi.

Runtime bahasa umum Mono

Secara internal Xamarin.iOS memanfaatkan fitur ini untuk menautkan dengan runtime Mono sebagai kerangka kerja, alih-alih menautkan runtime Mono secara statis ke setiap ekstensi dan aplikasi kontainer.

Ini secara otomatis dilakukan jika aplikasi kontainer adalah aplikasi Terpadu, aplikasi tersebut berisi ekstensi dan penyebaran target adalah iOS 8.0 atau lebih tinggi.

Aplikasi tanpa ekstensi masih akan ditautkan dengan runtime Mono secara statis, karena ada penalti ukuran untuk menggunakan kerangka kerja jika hanya ada satu aplikasi yang mereferensikannya.

Perilaku ini dapat ditimpa oleh pengembang aplikasi, dengan menambahkan yang berikut ini sebagai argumen mtouch tambahan dalam opsi Build iOS proyek:

  • --mono:static: Menautkan dengan runtime Mono secara statis.
  • --mono:framework: Menautkan dengan runtime Mono sebagai kerangka kerja.

Salah satu skenario untuk menautkan dengan runtime Mono sebagai kerangka kerja bahkan untuk aplikasi tanpa ekstensi adalah mengurangi ukuran yang dapat dieksekusi, untuk mengatasi batasan ukuran apa pun yang diterapkan Apple pada yang dapat dieksekusi. Sebagai referensi, runtime Mono menambahkan sekitar 1,7MB per arsitektur (per Xamarin.iOS 8.12, namun bervariasi antara rilis, dan bahkan antar aplikasi). Kerangka kerja Mono menambahkan sekitar 2,3MB per arsitektur, yang berarti bahwa untuk aplikasi arsitektur tunggal tanpa ekstensi apa pun, membuat tautan aplikasi dengan runtime Mono sebagai kerangka kerja akan menyusutkan yang dapat dieksekusi oleh ~1,7MB, tetapi menambahkan kerangka kerja ~2,3MB, yang menghasilkan semua aplikasi ~0,6MB yang lebih besar.