Swift 5.1 ile derlenen modül Swift 5.1.2 derleyicisi tarafından içe aktarılamaz


91

Geleneksel RxSwift.frameworkstil paketine Xcode 11.0 kullanarak derlediğim bir çerçeve var (bu örnekte RxSwift)

Bu, Xcode 11.0'a ve ayrıca 11.1'e hiçbir zaman sorun yaşamadı

Bugün, Apple'ın Xcode 11.2 sürümünden sonra, yeni sürüme geçtim ve şu hatayla karşılaştım:

Swift 5.1 ile derlenen modül Swift 5.1.2 derleyicisi tarafından içe aktarılamaz

Derleyici uyumsuzluklarını hızlı bir şekilde alıyorum ve Xcode 11.2 kullanarak RxSwift'i yeniden derleyebileceğimi ve devam edebileceğimin farkındayım, ancak Swift 5.1'in ana özelliği modül kararlılığıydı .

Modül kararlılığına sahip olduğumuza göre, çerçevelerin her yeni Xcode sürümüyle yeniden derlenmeye devam etmesine gerek olmayacağı izlenimindeydim, ancak bu kesinlikle böyle değil.

Herkes burada neler olduğunu açıklayabilir, ben çok takdir ediyorum. Xcode 11.2 bir hata mı gösteriyor? ya da bir şekilde Xcode 11.0 ile derlendiğimde modül kararlılığı istediğimi söylememe ihtiyacım oldu mu?



Benim için eski hızlı sürümü ile Toolchain çalıştı: stackoverflow.com/a/43142147/5846135
Zeero0

Yanıtlar:


107

Tamam, WWDC videosunu izlerseniz, bunu açıklarlar: https://developer.apple.com/videos/play/wwdc2019/416/

Çerçevenizin derleme ayarlarında Dağıtım için Kitaplıklar Oluştur seçeneğini Evet olarak ayarlamanız gerekir , aksi takdirde hızlı derleyici .swiftinterfaceeski kitaplığınızı yükleyebilecek gelecekteki derleyicilerin anahtarı olan gerekli dosyaları oluşturmaz .

Bu, project.pbxproj dosyanızda şu şekilde sonuçlanır:

BUILD_LIBRARY_FOR_DISTRIBUTION = YES;

Bu bayrağı ayarladıktan sonra, Xcode 11.0 (swift 5.1) kullanarak derlediğim bir çerçeve Xcode 11.2 (swift 5.1.2) tarafından kullanılabildi ve her şey düzgün çalışıyor gibi görünüyor.

Umarım bu soru / cevap, tüm WWDC videolarını izlememiş herkes için yararlı bir referans olacaktır.

Hata hala devam ederse giderseniz Ürün > Temiz Yapı Klasör ve Build'a tekrar.


1
Müthiş! Şimdi tüm 3. parti çerçeve geliştiricilerinin bunu keşfetmesini umalım - ha ha :)
Mihai Fratu

25
Bu benim durumumda yardımcı olmuyor. Ben "EVET" olarak ayarladım ama yine de hata alıyorum. Herhangi bir fikir?
davidOhara

3
Carthage ve 10 çerçeve ile çalışıyorum ... ish. Mı carthagebu almaya akıllı yeterince benim .pbxproj dosyası veya @MihaiFratu yukarıda söylediği gibi, tüm üçüncü taraf çerçeve geliştiricilerin çerçeve projelerinde bu kendileri ayarlamak gerekiyor?
nteissler

9
@davidOhara benim durumumda Xcode 11.2'deki bu bilinen sorunla ilgisi vardı: Bir modül BUILD_LIBRARIES_FOR_DISTRIBUTION ile oluşturulmuşsa ve modülün kendisi ile aynı ada sahip bir genel tip içeriyorsa, istemciler modülü içe aktaramaz. (19481048) (FB5863238) Xcode 11.2 sürüm notlarında: developer.apple.com/documentation/xcode_release_notes/…
Richard Chirino

2
@davidOhara Ne yazık ki bir çözüm bulamadım. Bizim için sınıfın yeniden adlandırılması bizim çerçevemizin ana sınıfı olduğu ve müşterilerimizin kodunu kıracağı için de mümkün değildir. Çerçeveyi Xcode 11.2 kullanarak oluşturursam, Xcode 11.2 üzerinde derlenir, ancak 11.1 veya önceki sürümlerde derlenmez. Bugünkü Xcode 11.2.1 GM sürümü sorunu çözmedi. İşte hızlı bir şekilde takip etmek istediğinizde hızlı sorun izleyicideki bilet: bugs.swift.org/browse/SR-11704 Ayrıca ona bağlı bir radar var.
Richard Chirino

2

Üçüncü taraf kitaplıklarını içe aktarırken aynı hatayla karşılaştım. Xcode'daki takım zincirlerini kullanarak ve buradan https://swift.org/download/#releases adresinden 19 Eylül 2019 tarihinde yayınlandım . Bundan sonra kütüphanelerimi tekrar içe aktarmak zorunda kaldım ve işe yaradı.


Bu bir demet sayesinde en basit çözüm oldu
Krishan Patel

Swift 5.1.2 ile derlenen modül modülüyle ilgili sorunum Swift 5.2.2 tarafından içe aktarılamıyor Bu sorunu nasıl çözebiliriz?
Kishan Suthar

0

RxSwift çerçevesini eklemek için Kartaca'yı kullanabilirsiniz.

Temel olarak, Carthage size benzer bir geleneksel RxSwift.framework tarzı paketi verir .

Sonra deneyin carthage update --no-use-binaries.


İndir, çünkü carthage ile yeni derleyicide kitaplığınızı yeniden oluşturuyorsunuz. Soru açıkça önceki derleyici tarafından oluşturulan ikili kütüphanelerin yüklenmesi ile ilgilidir
Orion Edwards

0

Bu benim derleyici hata giderdi.

  1. carthage bootstrap --platform ios
  2. brew bundle
  3. pod repo update

brew bundle? bu ne işe yarıyor?
skywinder

İndir, çünkü carthage ile kütüphanenizi yeni derleyiciye yeniden inşa ediyorsunuz. Soru, önceki derleyici tarafından oluşturulan ikili kütüphanelerin yüklenmesi ile ilgilidir
Orion Edwards
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.