Aracılığıyla paylaş


Mevcut iOS Uygulamalarını Güncelleştirme

Var olan bir Xamarin.iOS uygulamasını Birleşik API'yi kullanacak şekilde güncelleştirmek için bu adımları izleyin.

Mevcut bir uygulamanın Birleşik API'yi kullanacak şekilde güncelleştirilmesi, proje dosyasının kendisinde ve uygulama kodunda kullanılan ad alanları ve API'lerde değişiklik yapılmasını gerektirir.

64 Bit'e Giden Yol

Yeni Birleşik API'ler, Xamarin.iOS mobil uygulamasından 64 bit cihaz mimarilerini desteklemek için gereklidir. 1 Şubat 2015 itibarıyla Apple, iTunes App Store'a yapılan tüm yeni uygulama gönderimlerinin 64 bit mimarileri desteklemesini gerektirir.

Xamarin, Klasik API'den Birleşik API'ye geçiş işlemini otomatikleştirmek için hem Mac için Visual Studio hem de Visual Studio için araçlar sağlar veya proje dosyalarını el ile dönüştürebilirsiniz. Otomatik araçların kullanılması yüksek oranda önerilir ancak bu makalede her iki yöntem de ele alınacaktır.

Başlamadan Önce...

Mevcut kodunuzu Birleşik API'ye güncelleştirmeden önce, tüm derleme uyarılarını ortadan kaldırmanız kesinlikle önerilir. Birleşik'e geçiş yaptıktan sonra Klasik API'deki birçok uyarı hataya dönüşür. Klasik API'den gelen derleyici iletileri genellikle nelerin güncelleştirildiği hakkında ipuçları sağladığından, bunları başlamadan önce düzeltmek daha kolaydır.

Otomatik Güncelleştirme

Uyarılar düzeltildikten sonra, Mac için Visual Studio veya Visual Studio'da mevcut bir iOS projesini seçin ve Proje menüsünden Xamarin.iOS Birleşik API'ye Geçir'i seçin. Örneğin:

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

Otomatik geçiş çalışmadan önce bu uyarıyı kabul etmeniz gerekir (açıkçası bu maceraya başlamadan önce yedeklemelere/kaynak denetimine sahip olduğunuzdan emin olmalısınız):

Agree to this warning before the automated migration will run

Araç temelde aşağıda sunulan El ile Güncelleştir bölümünde açıklanan tüm adımları otomatikleştirir ve mevcut bir Xamarin.iOS projesini Birleşik API'ye dönüştürmenin önerilen yöntemidir.

El ile Güncelleştirme Adımları

Uyarılar düzeltildikten sonra Xamarin.iOS uygulamalarını yeni Birleştirilmiş API'yi kullanacak şekilde el ile güncelleştirmek için aşağıdaki adımları izleyin:

1. Proje Türünü ve Derleme Hedeflerini Güncelleştir

csproj dosyalarınızdaki proje aromasını olarak 6BC8ED88-2882-458C-8E55-DFD12B67127B FEACFBD2-3405-455C-9665-78FE426C6842değiştirin. Csproj dosyasını bir metin düzenleyicisinde düzenleyerek öğesindeki <ProjectTypeGuids> ilk öğeyi gösterildiği gibi değiştirin:

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

İçeri Xamarin.MonoTouch.CSharp.targets Xamarin.iOS.CSharp.targets aktar öğesini gösterildiği gibi olarak değiştirin:

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

2. Proje Başvurularını Güncelleştirme

iOS uygulama projesinin Başvurular düğümünü genişletin. Başlangıçta bu ekran görüntüsüne benzer bir *bozuk- monotouch başvurusu gösterecektir (çünkü proje türünü yeni değiştirdik):

It will initially show a broken- monotouch reference similar to this screenshot because the project type changed

Başvuruları Düzenle'ye iOS uygulama projesine sağ tıklayın, ardından monotouch başvurusuna tıklayın ve kırmızı "X" düğmesini kullanarak silin.

Right-click on the iOS application project to Edit References, then click on the monotouch reference and delete it using the red X button

Şimdi başvuru listesinin sonuna kaydırın ve Xamarin.iOS derlemesini işaretleyin.

Now scroll to the end of the references list and tick the Xamarin.iOS assembly

Proje başvurularını kaydetmek için Tamam'a basın.

3. MonoTouch'ı Ad Alanından Kaldırma

Deyimlerdeki veya bir sınıf adının tam olarak nitelendiği using her yerde ad alanından MonoTouch ön ekini kaldırın (örneğin, MonoTouch.UIKit yalnızca UIKitolur).

4. Türleri Yeniden Eşleme

Daha önce kullanılan bazı Türlerin (örneğin, ile örnekleri) System.Drawing.RectangleF CoreGraphics.CGRect yerini alan yerel türler kullanıma sunulmuştur. Türlerin tam listesi yerel türler sayfasında bulunabilir.

5. Yöntem Geçersiz Kılmalarını Düzeltme

Bazı UIKit yöntemlerin imzaları yeni yerel türleri kullanacak şekilde değiştirilmiştir (örneğin nint). Özel alt sınıflar bu yöntemleri geçersiz kılarsa, imzalar artık eşleşmez ve hatalara neden olur. Yerel türleri kullanarak alt sınıfı yeni imzayla eşleşecek şekilde değiştirerek bu yöntem geçersiz kılmalarını düzeltin.

Döndürülecek şekilde nint değiştirme public override int NumberOfSections (UITableView tableView) ve hem dönüş türünü hem de içindeki parametre türlerini public override int RowsInSection (UITableView tableView, int section) olarak nintdeğiştirme örnekleri verilebilir.

Dikkat edilmesi gereken noktalar

Mevcut bir Xamarin.iOS projesi Klasik API'den yeni Birleşik API'ye dönüştürülürken uygulama bir veya daha fazla Bileşen veya NuGet Paketi kullanıyorsa aşağıdaki noktalar dikkate alınmalıdır.

Bileşenler

Uygulamanıza dahil ettiğiniz tüm bileşenlerin de Birleşik API'ye güncelleştirilmiş olması gerekir, aksi takdirde derlemeye çalıştığınızda bir çakışmayla karşılaşırsınız. Dahil edilen bileşenler için geçerli sürümü, Birleşik API'yi destekleyen Xamarin Bileşen Deposu'ndan yeni bir sürümle değiştirin ve temiz bir derleme yapın. Henüz yazar tarafından dönüştürülmemiş tüm bileşenler, bileşen deposunda yalnızca 32 bit uyarı görüntüler.

NuGet Desteği

Birleştirilmiş API desteğiyle çalışmak için NuGet'de değişikliklere katkıda bulunmamıza rağmen, NuGet'in yeni bir sürümü olmadığından NuGet'in yeni API'leri tanımasını sağlamayı değerlendiriyoruz.

Bu zamana kadar, bileşenlerde olduğu gibi, projenize eklediğiniz tüm NuGet Paketini Birleşik API'leri destekleyen bir sürüme geçirmeniz ve daha sonra temiz bir derleme yapmanız gerekir.

Önemli

"Hata 3 Aynı Xamarin.iOS projesine hem 'monotouch.dll' hem de 'Xamarin.iOS.dll' eklenemiyor şeklinde bir hatanız varsa , 'Xamarin.iOS.dll' açıkça başvurulur, 'monotouch.dll', uygulamanızı Birleştirilmiş API'lere dönüştürdükten sonra 'xxx, Version=0.0.000, Culture=neutral, PublicKeyToken=null' tarafından başvurulsa da, bunun nedeni genellikle projede Birleştirilmiş API'ye güncelleştirilmemiş bir bileşenin veya NuGet Paketinin bulunmasıdır. Mevcut bileşeni/NuGet'i kaldırmanız, Birleşik API'leri destekleyen bir sürüme güncelleştirmeniz ve temiz bir derleme yapmanız gerekir.

Xamarin.iOS Uygulamalarının 64 Bit Derlemelerini Etkinleştirme

Birleşik API'ye dönüştürülmüş bir Xamarin.iOS mobil uygulaması için geliştiricinin uygulamanın Seçenekler bölümünden 64 bit makineler için uygulamanın oluşturulmasını etkinleştirmesi gerekir. 64 bit derlemeleri etkinleştirme hakkında ayrıntılı yönergeler için lütfen 32/64 bit PlatformDa Dikkat Edilmesi Gerekenler belgesinin Xamarin.iOS Uygulamalarının 64 Bit Derlemelerini Etkinleştirme belgesine bakın.

Bitiriyor

Xamarin.iOS uygulamanızı Klasik'ten Birleşik API'lere dönüştürmek için otomatik veya el ile yöntemini kullanmayı seçseniz de seçmeseniz de, daha fazla el ile müdahale gerektiren birkaç örnek vardır. Bilinen sorunlar ve geçici çözüm için lütfen Kodu Birleşik API'ye Güncelleştirme İpuçları belgemize bakın.