Geçersiz Swift Desteği - Dosyalar eşleşmiyor


116

Swift 2'de bir uygulamayı yeniden yazdım. Dahili test için uygulamayı iTunesConnect'e (Xcode 7 GM aracılığıyla) yüklemeye çalışıyorum.

Bir süre "Geçersiz Swift Desteği" hatasıyla boğuştum ( başka, ilgili soruları var ) ... ama şimdi biraz farklı bir şeye dönüştü.

Apple'dan gelen hata şimdi şunu söylüyor:

Geçersiz Swift Desteği

LibswiftCoreLocation.dylib, libswiftCoreMedia.dylib, libswiftCoreData.dylib, libswiftAVFoundation.dylib dosyaları eşleşmiyor

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylib, /Payload/App.app/Frameworks/libswiftAVFoundation. dylib

Dosyaların doğru olduğundan (?) Emin olun, uygulamanızı yeniden oluşturun ve yeniden gönderin.

Sonradan işleme uygulamayın

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylib, /Payload/App.app/Frameworks/libswiftAVFoundation. dylib.

"Son işlemeyi uygulama", "Dosyaların doğru olduğundan emin olun, uygulamanızı yeniden oluşturun ve yeniden gönderin" vb. Arama yaparak benzer hataları bulamadım.

"Dosyaların doğru olduğundan emin ol" veya başka tavsiyeleri nasıl alabileceğimi bilen var mı? Teşekkür ederim.


Ben de tamamen aynı problemim var. Herhangi bir çözüm var mı?
Beny Boariu

Bu uygulamadan istifa ediyor musunuz? Bu, Xcode'dan doğrudan bir yükleme mi?
Andy

@Andy, arşivledikten hemen sonra Xcode'dan doğrudan yükleme.
Dan

Yanıtlar:


82

Burada da aynı problem. Bunun büyük olasılıkla Bitcode ile ilgili Geliştirici Araçlarının bir hatası olduğunu düşünüyorum.

Bunun için geçici çözümü buldum.

  1. Uygulamanızı yeni yapı numarasıyla arşivleyin :(
  2. Arşivi (.xcarchive dosyası) Düzenleyici'deki Finder'da bulun "Finder'da Göster"
  3. Paketi açın ve benzeri dizinleri bulmak Products/Applications/YourApp.ipa/Frameworks/veSwiftSupport/iphoneos/
  4. Tüm libswiftXxx.dylibdosyaları SwiftSupport/iphoneos/içine kopyalayınProducts/Applications/YourApp.ipa/Frameworks/ ve üzerine yazın
  5. Şimdi, Organizer'dan App Store'a Yükleyin

Bu işlemle yapımı yüklemeyi başardım. Şimdi inceleme bekliyorum.

NOT:

CocoaPods kullanıyorum ve ENABLE_BITCODEseçenek HAYIR idi.


Hangi iOS SDK'yı hedefliyorsunuz? Bit kodu devre dışı bırakıldığında mağazaya gönderemeyeceğinizi sanıyordum.
JAL

3
Benim durumumda SwiftSupport / iphoneos / boş.
Lim Thye Chean

2
Doğrulama benim için başarılı oldu, ancak yapı hala ProcessingiTunes Connect'in Ön Sürüm bölümünde ~ 12 saat sonra.
ldiqual

2
hey bunun için teşekkürler! API analiz dosyası hakkında hala çok büyük cl.ly/image/0s0N0s441s0X hakkında bir uyarı alıyorum - ancak önemli olan, hala geçmesi ve TestFlight'a girebilmesi.
ded

1
.İpa'mın içinde SwiftSupport / iphoneos / klasörü yoksa ne yapmalıyım?
Alexander Yakovlev

51

Düzenle: Bu sorunu gideren CocoaPods 0.39.0 yayınlandı!

@Orkenstein'ın da bahsettiği gibi , daha basit bir çözüm bazı kodunu yorum yaparak Pod-frameworks.sh. Buraya biraz daha ayrıntı ekliyorum.

Xcode proje dizininizde Pods/Target Support Files/Pods/Pods-frameworks.sh

Aşağıdaki satırları yorumlayın:

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

=>

# Embed linked Swift runtime libraries
# local basename
# basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
# local swift_runtime_libs
# swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
# for lib in $swift_runtime_libs; do
#   echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
#   rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
#   code_sign_if_enabled "${destination}/${lib}"
# done

Kurtar Pods-frameworks.shve gitmen iyi olacak!


4
Bu benim için çalıştı. Sadece bir uyarı, pod yükleme veya pod güncelleme çalıştırırsanız tekrar yorum yapmanız gerekebilir!
Maksimum Alexander


güncellenmiş cocoaPods 0.39.0 ve bu sorunu benim için
çözmüyor

@DJ Tarazona Tarifiniz için teşekkürler !! cocopods mücevherini en son sürüme güncellediğimde bile benim için hile yaptı
Jorge Vicente Mendoza

16

Bu sorun için düzeltme birleştirildi ve en son CocoaPods sürümünde mevcut 0.39.0.beta.5

https://github.com/CocoaPods/CocoaPods/pull/4268

CocoaPods'un en son sürümünü çalıştırmak için gem install cocoapods --pre

Alternatif olarak, yayınlanmamış özellikleri çalıştırmak için talimatları izleyin: http://guides.cocoapods.org/using/unreleased-features

CocoaPods'un en son sürümüne sahip olduğunuzda pod installtekrar çalıştırın .


Bu para kazandıran
tommybananas

Gözyaşları geliyor. Teşekkür ederim!
MQLN

Hatanın özellikle CocoaPods ile ilgisi yoktur; aynı sorunu yaşıyoruz ve CocoaPods kullanmıyoruz.
devios1

8

Uygulamamı oluşturmak için fastlane gym 1.9.0 kullanıyordum ve dosyalar eşleşmediği için Apple tarafından reddedilmeye devam ediyordu, oysa XCode 8 üzerinden yüklediysem kabul edildi. İpa'nın hızlı destek klasöründeki ve Frameworks klasöründeki hızlı lib'leri kontrol ettim, swift destek klasöründeki lib'lerin hızlı 2.3 için olduğunu, Frameworks klasöründe ise hızlı 3 olduğunu buldum. Spor salonu dosyamda araç zincirini ekledim seçeneği:

gym(
  scheme: "CoCadre", 
  configuration: "Production Release",
  clean: true,
  use_legacy_build_api: false,
  toolchain: "com.apple.dt.toolchain.Swift_2_3"
)

* Toolchain seçeneğini kullanmak için use_legacy_build_api'yi false olarak değiştirmem gerektiğini unutmayın

Araç zinciri seçeneğini kullanmak için use_legacy_build_api ayarlamanız gerekir: false https://github.com/fastlane/fastlane/issues/6003#issuecomment-244792185


Teşekkür ederim! Ayrıca Fastlane ve Gym kullanıyorum ve bu sorunu çözdü.
Eystein Bye

Teşekkürler, bu Gym'i kullanırken de sorunu çözmemize yardımcı oldu. Lütfen bu çözümü use_legacy_build_api ile hala kullanabildiğimi unutmayın: true
Viktor Malyi

6

GitHub'da bulunan biraz daha az karmaşık bir çözüm var :

Pods-frameworks.sh'a bir göz attım ve şu şekilde yorumlanan bir bölüm buldum:

Bağlantılı Swift çalışma zamanı kitaplıklarını gömün
Bu kitaplıkları kopyalayan (ve kod onları imzalayan) kod bloğunu yorumlamak, gönderim sorunlarımı düzeltti. Sorunlara neden olan şeyin yalnızca kopyalanması mı yoksa kod imzalama mı olduğunu görmek için henüz daha derine dalmadım. Orada biraz derinliğimden çıkıyorum.


4
  1. Cocoapod'larınızı en son sürüme güncelleyin, sudo gem install cocoapodsterminali yazın.
  2. pod updateProjenizin dizini altında çalıştırın .
  3. Sete hatırla Bitcode etkinleştirme için NO içinDebug tüm kapsüller için seçenek.
  4. Sabit

Sorun aşağıdaki koddan dolayı düzeltildi Pods-frameworks.sh:

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

şu şekilde değiştirildi:

# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
    local swift_runtime_libs
    swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
  for lib in $swift_runtime_libs; do
    echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
    rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
    code_sign_if_enabled "${destination}/${lib}"
  done
fi

2

Bunun için Çözümüm:

Cocoapods aracılığıyla Açığa Çıkar kullanıyorum ve Gösterimin Bitcode'u devre dışı bırakması gerekiyor. Bu yüzden Reveal'ı (başka herhangi bir Framwork için çalışmalıdır) yalnızca Hata Ayıklama için ekledim:

pod 'Reveal-iOS-SDK', :configurations => ['Debug']

Göstermem artık yalnızca Hata Ayıklama için yapılandırıldığından, Bitcode'u yalnızca Hata Ayıklama için devre dışı bıraktım.

görüntü açıklamasını buraya girin

Bu ayarlarla, herhangi bir hack olmadan her şey yolunda gidiyor ...


0

Bit kodunu desteklemeyen kitaplıkları (New Relic'in şu anki kararlı sürümü gibi) entegre ederken bu hatanın oluştuğunu gördüm. Çözüm, kitaplıkları kaldırmak, bit kodunu devre dışı bırakmak (ve potansiyel olarak mağazaya gönderememek) veya kitaplık satıcınızdan bit kodunu destekleyen güncellenmiş ikili dosyaları beklemektir.


0

Benim için hata, spa'yı uygulama mağazasına yüklemek için App Store profili yerine Adhoc profiliyle oluşturmamdı.

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.