Uygulamamı XCode ile başlattığımda kilitleniyor ama hata yok
Uygulama sadece bu ileti dizisinde duruyor
Konu hakkında daha fazla bilgi sahibi olmak için ne yapabilirim?
Yanıtlar:
Özel çerçeveler kullanıyorsanız, bunu Hedef / Genel sekmesinin altındaki Xcode projesinde bulunan "Gömülü İkili Dosyalar" bölümüne koymanız gerekir.
Benim için basit Clean
ve Rebuild
çözüldü. Umarım yardımcı olur.
Çerçeveyi gömülü ikili varlık listesine eklemek bu sorunu çözdü. Gömülü Çerçeve olarak Xcode GUI'de yabancı bir çerçevenin kurulumu son haliyle şöyle görünüyor (Xcode 9.2, kişisel olarak görsel bir ekmek kırıntısı izini daha çok seviyorum ;-)):
Apple, geliştiriciye, iOS geliştirmede basitçe bağlantılı çerçeveler olarak Apple dışı çerçeveleri kullanamayacağınızı anlatmak için çalışma zamanını kasıtlı olarak mı çökertdi? Bunun bir yapı hatası olarak ortaya çıkması daha iyi olurdu sanırım ... "Taşı!" Diyen bir düğmeyle.
Gömülü İkili Dosyaların kullanımı, son kullanıcının Framework'ü uygulamanızdan bağımsız olarak eklemek zorunda kalmasını engeller (veya bir yükleyiciyle yaptığınız gibi). İPhone (iOS) söz konusu olduğunda, bu imkansızdır, ancak macOS'ta bu mümkündür, ancak hızla dağılabilir.
Son kullanıcı için, bir uygulamayı macOS'a yüklemek için sürükleyip bırakmak çok daha hoş, bu da gömülü bir avantaj haline geliyor. Gömme ayrıca, çerçevenizin harici sürümlerinin yönetilmesi için klasik "DLL çakışmalarını" da önler. (disk alanı ucuz, müşterimin zamanı değerlidir).
Sonunda çözüldü!
Benim için işe yarayan, çerçeveyi "gerekli" yerine "isteğe bağlı" yapmaktı.
Umarım yardımcı olur!
1) Hata ayıklayıcıda "MyFramework.framework" gibi herhangi bir mesaj bulunup bulunmadığını görmek için yürütmeye devam edin. Durum buysa, şu tartışmayı izleyin: OS X Çerçeve Kitaplığı yüklenmedi: 'Görüntü bulunamadı' Benim için bu yanıt işe yaradı: https://stackoverflow.com/a/44796734/4060763
2) İkili dosyalarınızı "Embed Binaries" bölümü aracılığıyla eklediğinizden emin olun.
3) Derleme aşamasında çerçevelerin imzalanmasını etkinleştirdiğinizden emin olun.
4) Gömülü çerçevelerin sembolik bağlar olmadığından emin olun.
5) "Link binary with libraries" aşamasında gerekli olmak yerine bağlantılı çerçeveleri isteğe bağlı yapabilirsiniz. Bu, iOS'a başlatma sırasında bu çerçeveleri aramamasını söyleyecektir. Ancak yine de bu çerçeveleri kullanmak için hataları düzeltmeniz gerekiyor!
6) Tüm info.plist girişlerinin iyi olup olmadığını kontrol edin. Benim durumumda, iOS için bir Mac info.plist dosyası kullanıyordum. İOS projesinde bulunmayan bazı xib dosyası arıyordu.
7) Böyle bir değişiklikten sonra temizleyin ve inşa edin. Bu gereklidir çünkü xcode bu dosyaları zaten mevcutsa kopyalamaz / değiştirmez.
8) Uygulamayı iPad'den kaldırın ve ardından yükleyin. 7 ile aynı sebep.
Guard Malloc
doğru olmak gerekirse. Kazayı neden düzelttiğini bilen var mı?
"Sorun hakkında daha fazla bilgi sahibi olmak için ne yapabilirim?" Sorusunu yanıtlamak için, bu Apple forum başlığı çok basit bir ipucu sağlıyor: çökmekte olan uygulamanızı XCode dışında çalıştırın (yani XCode'dan durdurun, ardından cihazınızda manuel olarak çalıştırın. cihaz). Bu, ne olduğu hakkında daha fazla ayrıntı içeren bir kilitlenme günlüğü oluşturacaktır. Daha sonra bu günlüğü XCode Penceresi menüsünden / Aygıtlar ve Simülatörler -> Aygıt Günlüklerini Görüntüle'den inceleyebilirsiniz.
Xcode 11.3 ve macOS Catalina 10.15.2 ile aynı sorunu yaşadım. Uygulama cihazda iyi çalışıyordu ancak Simulator'da çalışmıyordu. Görünüşe göre Simulator ile ilgili bir sorun var ve geçici çözüm Thread Sanitizer'ı devre dışı bırakmak.
Bakın: https://forums.developer.apple.com/message/397978#397978
Bu yardımcı olur umarım.
Aynı imzaya sahip bir hatayla karşılaştım (projem Obj-C'deydi) ve uygun çerçeve ile bağlantı kurmayı unuttuğumu keşfettim. Hata ayıklama günlüğündeki hatanın bulunmasına neden olan hata mesajı şuydu:
dyld: Sembol bulunamadı: _OBJC_CLASS _ $ _ SFSafariViewController
Özel hatam için, Hedefler -> Derleme Aşamaları -> "Kitaplıklarla İkili Bağlantı Kur" içine SafariServices.framework eklemek sorunu çözdü. Muhtemelen aynı hataya ve çözüme sahip olmasanız da, ipuçları için hata ayıklama günlüğünü kontrol etmek yararlıdır.
Ben güncelleme sonra bu durumu yaşadım v10.2.1 Xcode ve v5.0 için swift Eğer carthage + RxSwift yeni RxSwift kullanımlarını kullanıyorsanız RxRelay.framework
. / Carthage / Build dizininize gidip bu çerçeveyi bulun ve projenize çizin. carthage copy-frameworks
Senaryonuza da eklemeyi unutmayın :
$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
Şunun sayesinde çözüldü: https://stackoverflow.com/a/52550148/2493555
Bir Objective-C uygulamasında Swift ile yazılmış bir çerçeve kullanıyorsanız, çerçeveyi tüketen uygulamaya Swift araç zincirini eklemeniz gerekir.
Bunu yapmanın yolu, uygulamada sahte bir hızlı dosya oluşturmaktır, böylece XCode hızlı bir şekilde tanır ve projeye uygun şekilde ekler. Daha sonra kukla dosyayı silebilirsiniz.
Birisi, hızlı bir dosya eklemeden bir hedef-c projesine açıkça hızlı eklemenin daha iyi bir yolunu bilseydi çok isterim.
Carthage derleme çerçevesini kullanıyorsanız, çerçeveyi projenize sürükledikten sonra, bunu General / Embeded Binaries'e eklemelisiniz.
Çözmenin doğru yolunu buluyorum.
AppleWWDRCA.cer
Sistem varsayılan modunu ayarladığınızdan emin olun , ardından çalışacaktır:
Ben de aynı sorunla karşı karşıyaydım. Hedefimin Derleme Ayarlarında 'Her Zaman Swift Standart Kitaplıklarını Yerleştir' seçeneğini Evet olarak ayarlamak benim için çalıştı.
Plist'teki izin belirtiminin eksik olması nedeniyle çözülen benzer bir sorunla karşılaştım (ne kadar tuhaf da ..)
AVCaptureDevice'i kullanmayı denedim ve başlangıçta çöktü (uygulamam çok azdı)
Ekleme -
benim Privacy - Camera Usage Description
için info.plist
çözmek için.
Ayrıca, özel çerçeveler kullanıyorsanız, Mach-O türünü statik kitaplığa ayarladığınızdan emin olun. IOS'un dylib'e izin vermediği bir yerde okudum. Neyse bu benim için çalıştı.
Bu hatayla uzun karşılaşmalar listesine eklemek için, dağıtım hedefi MacOS 11.0 olarak ayarlı olarak MacOS 10.15.5 çalıştıran Mac'ime dağıtım XCode12.2 Beta 2 üzerindeyken ortaya çıkıyor. Bu durum, bir SideBar eklerken Mac Catalyst Tutorial uygulamasını denediğim için oldu. Hedefi MacOS 10.15.5 olarak değiştirmek hatayı ortadan kaldırdı ve uygulamayı düzgün bir şekilde başlattı.
Projemdeki hatamı düzelttim.
1. Hata oluştuğunda diğer konuları kontrol edin. Hatamın kamera ile ilgili olduğunu buldum.
Yeni bir macOS Mojave güncellemesinden sonra Geliştirici Sertifikalarımı iptal edip Xcode 10 ile yenilerini oluşturduğum gerçeğinden dolayı aynı sorunu yaşadım ve bunun nedeni (bazıları için tüm oturum açma kimlik bilgilerini sildi ve bazılarını eski anahtarlık sertifikaları).
Bu yüzden, tek yapmam gereken, cihazıma doğru yeni Temel Hazırlık Profilini kurması için yüklü uygulamaları cihazımdan kaldırıp Xcode üzerinden tekrar çalıştırmaktı :)
Bazen, yalnızca hedef sürümünüzün daha sonraki iOS sürümünden erişilebilen sistem çerçevelerini kullandığınızda olur. Bu bağlantılı çerçeveyi isteğe bağlı olarak işaretleyerek düzeltilebilir.
Örneğin, iOS 11'i hedefleyen ve iOS 12 için AuthenticationServices'i kullanan bir proje , iOS 11'de açıklanan şekilde çökecektir.
Aslında, 11.3.1 ile ilgili sorun yaşadım ve Thread Sanitizer yukarıda belirtildiği gibi zaten kapatılmıştı. Benim durumumda sorun, Uygulama klasörümde bunun gibi farklı xCode sürümlerine sahiptim
/Applications/xcode11.3.1/Xcode.app
/Applications/xcode11.3/Xcode.app
/Applications/xcode10.1/Xcode.app
ve
/Applications/Xcode.app - was 11.2
Derleme sisteminin varsayılan olarak /Applications/Xcode.app üzerinde göründüğünü anlamam 2 günümü alıyor. Dolayısıyla, 11.3.1'i /Applications/Xcode.app'a getirmek sorunu nihayet çözer
Bu sorunu yalnızca gerçek cihazda (iPhone SE) çalışırken yaşadım. Simülatör projesinde beklendiği gibi çalıştı.
Bu iş parçacığından ve buradan tüm düzeltmeleri denedim: OS X Çerçeve Kitaplığı yüklenmedi: 'Görüntü bulunamadı' Bunların hiçbiri benim için çalışmadı.
Benim için sorun iPhone'u yeniden başlattıktan sonra çözüldü (sic!).
Yaptım:
Ve nihayet işe yarıyor. :)
Diğer tüm çözümler başarısız olursa, denemeyi unutmayın.
Bunu "pod install" komutuna göre sıraladım.