Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Genel bakış
Bazen bir API'yi istediğimiz gibi çalıştıramama veya bir hataya çözüm bulmaya çalışma konusunda bir proje üzerinde çalışırken hepimiz takılırız. Xamarin'deki hedefimiz, mobil ve masaüstü uygulamalarınızı yazmada başarılı olmanızdır ve size yardımcı olacak bazı kaynaklar sağladık.
Bu kaynaklardan herhangi biriyle, sorununuzu hızla çözmelerine yardımcı olmak için uygulayabileceğiniz bazı hazırlık adımları vardır:
Kilitlenmeleri bildirmek için sorunun kök nedenini en iyi şekilde belirleyin:
"Uygulamam kilitleniyor" tanılaması zor. "Bu çağrıya boş bir dizi döndürdiğimde uygulamam kilitleniyor" düzeltme üzerinde çalışmak çok daha kolay.
"NSTable'ı çalıştıramıyorum", "NSTableDelegate'imdeki yöntemlerin hiçbiri bu durumda çağrılmıyor gibi görünüyor" değerinden daha az yararlı.
Mümkünse sorunu gösteren küçük bir örnek program sağlayın. Sorunu bulmak için kaynak kodu sayfalarını araştırmak daha fazla zaman ve çaba gerektirir.
Bir sorunun görünmesine neden olmak için uygulamanızda yaptığınız değişiklikleri bilmek, sorunun kaynağını hızla daraltabilir. Yakın zamanda Xamarin.Mac sürümlerini yükseltip yükseltmediğinize dikkat edin, soruna neden olan bölümü bulmak için uygulamanızın bölümlerini kırpın veya soruna hangi değişikliğin yol açtığını bulmak için önceki derlemeleri test edin.
Uygulamanız çıkış olmadan kilitlendiğinde yapılması gerekenler
Çoğu durumda, Mac için Visual Studio hata ayıklayıcısı uygulamanızdaki özel durumları ve kilitlenmeleri yakalar ve kök nedeni izlemenize yardımcı olur. Ancak, uygulamanızın dock'ta geri dönüp çok az çıkışla veya hiç çıkışla çıkmadığı bazı durumlar vardır. Bu tür işlemler şunları içerebilir:
- Kod imzalama sorunları.
- Bazı mono çalışma zamanı kilitleniyor.
- Bazı Objective-C özel durumları ve kilitlenmeleri.
- Bazıları işlem ömrünün çok erken bir aşamasında kilitleniyor.
- Bazı yığın taşması.
- Info.plist dosyanızda listelenen macOS sürümü şu anda yüklü olan macOS sürümünüzden daha yeni veya geçersiz.
Gerekli bilgileri bulmak zor olabileceğinden, bu programlarda hata ayıklamak sinir bozucu olabilir. İşte size yardımcı olabilecek birkaç yaklaşım:
Info.plist dosyasında listelenen macOS sürümünün bilgisayarda yüklü olan macOS sürümüyle aynı olduğundan emin olun.
Cocoa'dan gelen ve çıktıyı açıkleyebilecek yığın izlemeleri veya kırmızı çıktı için Mac için Visual Studio Uygulama Çıktısını (View ->Pads ->Application Output) denetleyin.
Uygulamanızı komut satırından çalıştırın ve şu komutu kullanarak çıkışa ( Terminal uygulamasında) bakın:
MyApp.app/Contents/MacOS/MyApp(buradaMyAppuygulamanızın adıdır)Komut satırındaki komutunuza "MONO_LOG_LEVEL" ekleyerek çıktıyı artırabilirsiniz, örneğin:
MONO_LOG_LEVEL=debug MyApp.app/Contents/MacOS/MyAppDaha fazla bilgi sağlandığını (ücretli lisans gerektirir) görmek için işleminize yerel bir hata ayıklayıcı (
lldb) ekleyebilirsiniz. Örneğin, aşağıdakileri yapın:- Terminale girin
lldb MyApp.app/Contents/MacOS/MyApp. - Terminale girin
run. - Terminale girin
c. - Hata ayıklamayı bitirdiğinizde çıkın.
- Terminale girin
Son çare olarak, yönteminizde
NSApplication.Init(veya gerektiğinde başka yerlerde) çağırmadanMainönce, hangi başlatma adımında sorunla karşılaşabileceğinizi izlemek için bilinen bir konumdaki bir dosyaya metin yazabilirsiniz.
Bilinen sorunlar
Aşağıdaki bölümlerde bilinen sorunlar ve bunların çözümleri ele alınıyor.
Korumalı uygulamalarda hata ayıklayıcıya bağlanılamıyor
Hata ayıklayıcısı TCP üzerinden Xamarin.Mac uygulamalarına bağlanır; bu da korumalı alanı etkinleştirdiğinizde varsayılan olarak uygulamaya bağlanamadığı anlamına gelir, bu nedenle uygun izinler etkinleştirilmeden uygulamayı çalıştırmayı denerseniz "Hata ayıklayıcıya bağlanılamıyor" hatasını alırsınız.
Giden Ağ Bağlantılarına İzin Ver (İstemci) izni, hata ayıklayıcı için gereken izindir ve bunu etkinleştirmek hata ayıklamaya normal şekilde izin verir. Bu olmadan hata ayıklayamazsınız çünkü hedefini CompileEntitlementsmsbuild , yalnızca hata ayıklama derlemeleri için korumalı alan olan tüm uygulamalar için yetkilendirmelere otomatik olarak bu izni ekleyecek şekilde güncelleştirdik. Sürüm derlemeleri, yetkilendirmeler dosyasında belirtilen yetkilendirmeleri değiştirilmemiş olarak kullanmalıdır.
System.NotSupportedException: 437 kodlaması için kullanılabilir veri yok
Xamarin.Mac uygulamanıza 3. taraf kitaplıkları eklerken, uygulamayı derlemeye ve çalıştırmaya çalışırken "System.NotSupportedException: 437 kodlaması için kullanılabilir veri yok" biçiminde bir hata alabilirsiniz. Örneğin, gibi Ionic.Zip.ZipFilekitaplıklar işlem sırasında bu özel durumu oluşturabilir.
Bu sorun, Xamarin.Mac projesinin seçeneklerini açarak, Mac Derleme> gidip Batı uluslararasılaştırmasını denetleyerek çözülebilir:
Derleme başarısız oldu (mm5103)
Bu hata genellikle yeni bir Xcode sürümü yayınlandığında ve yeni sürümü yüklediyseniz ancak henüz çalıştırmadığınızda oluşur. Xcode'un yeni bir sürümüyle derlemeye çalışmadan önce bu sürümü en az bir kez çalıştırmanız gerekir.
Xcode'un yeni bir sürümünü ilk kez çalıştırdığınızda, Xamarin.Mac için gereken birkaç komut satırı aracı yüklenir. Ayrıca, Xcode veya Xamarin.Mac sürümünüzü güncelleştirdikten sonra temiz bir derleme yapmanız gerekir.
Bu sorunu çözemiyorsanız lütfen bir hata oluşturun.
Eksik entitlements.plist
Mac için Visual Studio'in en son sürümü, Yetkilendirmeler bölümünü Info.plist düzenleyicisinden kaldırmıştır ve ayrı Entitlements.plist düzenleyicisine yerleştirmiştir (Xamarin.iOS ile daha iyi platformlar arası destek için).
Yeni Mac için Visual Studio yüklendiğinde, yeni bir Xamarin.Mac uygulama projesi oluşturduğunuzda, proje ağacına otomatik olarak bir Entitlements.plist dosyası eklenir:
Entitlements.plist dosyasına çift tıklarsanız, Yetkilendirmeler Düzenleyicisi görüntülenir:
Mevcut Xamarin.Mac projeleri için, Çözüm Bölmesi'nde projeye sağ tıklayıp Yeni Dosya Ekle...'yi seçerek Entitlements.plist>gerekir. Ardından Xamarin.Mac Boş Özellik Listesi'ne tıklayın:>
Ad için girin Entitlements ve Yeni düğmesine tıklayın. Projeniz daha önce bir Entitlements dosyası eklemişse, yeni bir dosya oluşturmak yerine projeye eklemeniz istenir:
Forumlarda topluluk desteği
Xamarin ürünlerini kullanan geliştiriciler topluluğu şaşırtıcıdır ve çoğu deneyim ve uzmanlıklarını paylaşmak için Xamarin.Mac forumlarımızı ziyaret eder. Ayrıca, Xamarin mühendisleri düzenli aralıklarla forumu ziyaret eder.
Hata bildirme
Görüşleriniz bizim için önemlidir. Xamarin.Mac ile ilgili herhangi bir sorun bulursanız:
- Sorun deposunda arama
- Eşleşen bir sorun bulamazsanız lütfen GitHub sorun deposunda yeni bir sorun oluşturun.
GitHub sorunlarının tümü geneldir. Açıklamaları veya ekleri gizlemek mümkün değildir.
Lütfen aşağıdakilerden mümkün olduğunca fazlasını ekleyin:
- Sorunu yeniden üretmeye yönelik basit bir örnek. Bu mümkün olduğunda çok değerlidir.
- Kilitlenmenin tam yığın izlemesi.
- Kilitlenmeyi çevreleyen C# kodu.