Bagikan melalui


Memperbarui App Mac yang Ada

Memperbarui aplikasi yang ada untuk menggunakan API Terpadu memerlukan perubahan pada file proyek itu sendiri serta ke namespace layanan dan API yang digunakan dalam kode aplikasi.

Jalan menuju 64 Bit

API Terpadu baru diperlukan untuk mendukung arsitektur perangkat 64 bit dari aplikasi Xamarin.Mac. Pada 1 Februari 2015, Apple mengharuskan semua pengiriman aplikasi baru ke Mac App Store mendukung arsitektur 64 bit.

Xamarin menyediakan alat untuk Visual Studio untuk Mac dan Visual Studio untuk mengotomatiskan proses migrasi dari API Klasik ke API Terpadu atau Anda dapat mengonversi file proyek secara manual. Meskipun penggunaan alat otomatis sangat disarankan, artikel ini akan membahas kedua metode.

Sebelum Anda Mulai...

Sebelum Anda memperbarui kode yang ada ke API Terpadu, sangat disarankan agar Anda menghilangkan semua peringatan kompilasi. Banyak peringatan di API Klasik akan menjadi kesalahan setelah Anda bermigrasi ke Terpadu. Memperbaikinya sebelum Memulai lebih mudah karena pesan pengkompilasi dari API Klasik sering memberikan petunjuk tentang apa yang harus diperbarui.

Pembaruan Otomatis

Setelah peringatan diperbaiki, pilih proyek Mac yang ada di Visual Studio untuk Mac atau Visual Studio dan pilih Migrasi ke Xamarin.Mac Unified API dari menu Proyek . Contohnya:

Choose Migrate to Xamarin.Mac Unified API from the Project menu

Anda harus menyetujui peringatan ini sebelum migrasi otomatis akan berjalan (jelas Anda harus memastikan Anda memiliki kontrol cadangan/sumber sebelum memulai petualangan ini):

Agree to this warning before the automated migration will run

Ada dua jenis Kerangka Kerja Target yang didukung yang dapat dipilih saat menggunakan API Terpadu dalam aplikasi Xamarin.Mac:

  • Xamarin.Mac Mobile Framework - Ini adalah kerangka kerja .NET yang disetel yang sama yang digunakan oleh Xamarin.iOS dan Xamarin.Android yang mendukung subset kerangka kerja Desktop lengkap. Ini adalah kerangka kerja yang direkomendasikan karena menyediakan biner rata-rata yang lebih kecil karena perilaku penautan yang unggul.
  • Xamarin.Mac .NET 4.5 Framework - Kerangka kerja ini lagi, subset kerangka kerja Desktop . Namun, ini memangkas jauh lebih sedikit dari kerangka kerja Desktop lengkap daripada kerangka kerja Seluler dan harus "hanya berfungsi" dengan sebagian besar Paket NuGet atau pustaka pihak ke-3. Ini memungkinkan pengembang untuk menggunakan rakitan Desktop standar saat masih menggunakan kerangka kerja yang didukung, tetapi opsi ini menghasilkan bundel aplikasi yang lebih besar. Ini adalah kerangka kerja yang direkomendasikan di mana rakitan .NET pihak ke-3 digunakan yang tidak kompatibel dengan Xamarin.Mac Mobile Framework. Untuk daftar rakitan yang didukung, silakan lihat dokumentasi Assembly kami.

Untuk informasi terperinci tentang Kerangka Kerja Target dan implikasi memilih target tertentu untuk aplikasi Xamarin.Mac Anda, silakan lihat dokumentasi Kerangka Kerja Target kami.

Alat ini pada dasarnya mengotomatiskan semua langkah yang diuraikan di bagian Perbarui Secara Manual yang disajikan di bawah ini dan merupakan metode yang disarankan untuk mengonversi proyek Xamarin.Mac yang ada ke API Terpadu.

Langkah-langkah untuk Memperbarui Secara Manual

Sekali lagi, setelah peringatan diperbaiki, ikuti langkah-langkah ini untuk memperbarui aplikasi Xamarin.Mac secara manual untuk menggunakan API Terpadu baru:

1. Perbarui Jenis Proyek & Target Build

Ubah rasa proyek dalam file csproj Anda dari 42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23 ke A3F8F2AB-B479-4A4A-A458-A89E7DC349F1. Edit file csproj di editor teks, menggantikan item pertama dalam elemen seperti yang <ProjectTypeGuids> ditunjukkan:

Edit the csproj file in a text editor, replacing the first item in the ProjectTypeGuids element as shown

Ubah elemen Impor yang berisi Xamarin.Mac.targets ke Xamarin.Mac.CSharp.targets seperti yang ditunjukkan:

Change the Import element that contains Xamarin.Mac.targets to Xamarin.Mac.CSharp.targets as shown

Tambahkan baris kode berikut setelah <AssemblyName> elemen :

<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<TargetFrameworkIdentifier>Xamarin.Mac</TargetFrameworkIdentifier>

Contoh:

Add these lines of code after the <AssemblyName> element

2. Perbarui Referensi Proyek

Perluas node Referensi proyek aplikasi Mac. Ini awalnya akan menunjukkan referensi *rusak- XamMac yang mirip dengan cuplikan layar ini (karena kami baru saja mengubah jenis proyek):

It will initially show a broken- XamMac reference similar to this screenshot

Klik Ikon Roda Gigi di samping entri XamMac dan pilih Hapus untuk menghapus referensi yang rusak.

Selanjutnya, klik kanan pada folder Referensi di Penjelajah Solusi dan pilih Edit Referensi. Gulir ke bagian bawah daftar referensi dan lakukan pemeriksaan selain Xamarin.Mac.

Scroll to the bottom of the list of references and place a check besides Xamarin.Mac

Tekan OK untuk menyimpan perubahan referensi proyek.

3. Hapus MonoMac dari Namespace

Hapus awalan MonoMac dari namespace dalam using pernyataan atau di mana pun nama kelas telah sepenuhnya memenuhi syarat (misalnya. MonoMac.AppKit menjadi hanya AppKit).

4. Jenis Remap

Jenis asli telah diperkenalkan yang menggantikan beberapa Jenis yang sebelumnya digunakan, seperti instans System.Drawing.RectangleF dengan CoreGraphics.CGRect (misalnya). Daftar lengkap jenis dapat ditemukan di halaman jenis asli.

5. Perbaiki Penimpaan Metode

Beberapa AppKit metode telah mengubah tanda tangan mereka untuk menggunakan jenis asli baru (seperti nint). Jika subkelas kustom mengambil alih metode ini, tanda tangan tidak akan lagi cocok dan akan mengakibatkan kesalahan. Perbaiki metode ini mengambil alih dengan mengubah subkelas agar sesuai dengan tanda tangan baru menggunakan jenis asli.

Pertimbangan

Pertimbangan berikut harus diperhitungkan saat mengonversi proyek Xamarin.Mac yang ada dari API Klasik ke API Terpadu baru jika aplikasi tersebut bergantung pada satu atau beberapa Paket Komponen atau NuGet.

Komponen

Komponen apa pun yang telah Anda sertakan dalam aplikasi Anda juga perlu diperbarui ke API Terpadu atau Anda akan mendapatkan konflik saat mencoba mengkompilasi. Untuk komponen apa pun yang disertakan, ganti versi saat ini dengan versi baru dari Xamarin Component Store yang mendukung API Terpadu dan lakukan build bersih. Komponen apa pun yang belum dikonversi oleh penulis, akan menampilkan peringatan 32 bit saja di penyimpanan komponen.

Dukungan NuGet

Meskipun kami berkontribusi pada perubahan pada NuGet untuk bekerja dengan dukungan API Terpadu, belum ada rilis baru NuGet, jadi kami mengevaluasi cara mendapatkan NuGet untuk mengenali API baru.

Sampai saat itu, sama seperti komponen, Anda harus mengalihkan Paket NuGet apa pun yang telah Anda sertakan dalam proyek Anda ke versi yang mendukung API Terpadu dan melakukan build bersih setelahnya.

Penting

Jika Anda memiliki kesalahan dalam formulir "Kesalahan 3 Tidak dapat menyertakan 'monomac.dll' dan 'Xamarin.Mac.dll' dalam proyek Xamarin.Mac yang sama - 'Xamarin.Mac.dll' dirujuk secara eksplisit, sementara 'monomac.dll' dirujuk oleh 'xxx, Version=0.0.000, Culture=netral, PublicKeyToken=null'" setelah mengonversi aplikasi Anda ke API Terpadu, biasanya karena memiliki komponen atau Paket NuGet dalam proyek yang belum diperbarui ke API Terpadu. Anda harus menghapus komponen/NuGet yang ada, memperbarui ke versi yang mendukung API Terpadu dan melakukan build bersih.

Mengaktifkan Build 64 Bit dari Aplikasi Xamarin.Mac

Untuk aplikasi seluler Xamarin.Mac yang telah dikonversi ke API Terpadu, pengembang masih perlu mengaktifkan pembuatan aplikasi untuk komputer 64 bit dari Opsi aplikasi. Silakan lihat dokumen Mengaktifkan Build Xamarin.Mac 64 Bit dari dokumen Pertimbangan Platform 32/64 bit untuk instruksi terperinci tentang mengaktifkan build 64 bit.

Selesai

Apakah Anda memilih untuk menggunakan metode otomatis atau manual untuk mengonversi aplikasi Xamarin.Mac Anda dari Api Klasik ke Terpadu, ada beberapa instans yang akan memerlukan intervensi manual lebih lanjut. Silakan lihat Tips kami untuk Memperbarui Kode ke dokumen API Terpadu untuk masalah yang diketahui dan mengatasinya.