Dukungan Swift Tidak Valid - File tidak cocok

116

Saya baru saja menulis ulang aplikasi di Swift 2. Saya mencoba mengunggah aplikasi ke iTunesConnect (melalui Xcode 7 GM) untuk pengujian internal.

Saya bergumul dengan kesalahan "Dukungan Swift Tidak Valid" untuk sementara waktu ( yang memiliki pertanyaan lain, terkait ) ... tetapi sekarang berubah menjadi sesuatu yang sedikit berbeda.

Kesalahan dari Apple sekarang mengatakan:

Dukungan Swift Tidak Valid

File libswiftCoreLocation.dylib, libswiftCoreMedia.dylib, libswiftCoreData.dylib, libswiftAVFoundation.dylib tidak cocok

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylib, /Payload/AV.app/FrameworkFoundation/libswift. dylib.dll

Pastikan file sudah benar (?), Buat kembali aplikasi Anda, dan kirimkan kembali.

Jangan terapkan pasca-pemrosesan ke

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylib, /Payload/AV.app/FrameworkFoundation/libswift. dylib.dll

Saya tidak dapat menemukan kesalahan serupa dengan menelusuri "Jangan terapkan pasca-pemrosesan", "Pastikan file sudah benar, buat ulang aplikasi Anda, dan kirimkan kembali", dll.

Adakah yang tahu bagaimana saya bisa "Pastikan file sudah benar" --atau-- punya rekomendasi lain? Terima kasih.

Dan
sumber
Saya memiliki masalah yang persis sama. Ada solusi?
Beny Boariu
Apakah Anda mengundurkan diri dari aplikasi ini? Apakah ini unggahan langsung dari Xcode?
Andy
@Andy langsung mengunggah dari Xcode segera setelah mengarsipkannya.
Dan

Jawaban:

82

Masalah yang sama disini. Saya pikir ini kemungkinan besar adalah bug dari Alat Pengembang, terkait dengan Bitcode.

Saya baru saja menemukan solusi untuk ini.

  1. Arsipkan aplikasi Anda dengan nomor build baru :(
  2. Temukan arsip (file .xcarchive) di Finder dari Organizer "Show in Finder"
  3. Buka paketnya dan temukan direktori seperti Products/Applications/YourApp.ipa/Frameworks/danSwiftSupport/iphoneos/
  4. Salin semua libswiftXxx.dylibfile dari SwiftSupport/iphoneos/ke Products/Applications/YourApp.ipa/Frameworks/dan timpa
  5. Sekarang, Unggah ke App Store dari Penyelenggara

Dengan proses ini, saya berhasil mengunggah bangunan saya. Sekarang saya menunggu review.

CATATAN:

Saya menggunakan CocoaPods, dan ENABLE_BITCODEopsinya adalah TIDAK.

jengger
sumber
SDK iOS apa yang Anda targetkan? Saya pikir Anda tidak dapat mengirimkan ke toko dengan bitcode dinonaktifkan.
JAL
3
Dalam kasus saya, SwiftSupport / iphoneos / kosong.
Lim Thye Chean
2
Validasi berhasil untuk saya tetapi build masih Processingsetelah ~ 12 jam di bagian Prarilis di iTunes Connect.
ldiqual
2
hei terima kasih untuk ini! Saya masih mendapatkan peringatan tentang file analisis API cl.ly/image/0s0N0s441s0X yang terlalu besar - tetapi yang terpenting adalah file tersebut masih lolos dan bisa masuk ke TestFlight.
ded
1
Apa yang harus saya lakukan jika tidak ada folder SwiftSupport / iphoneos / di dalam .ipa saya?
Alexander Yakovlev
51

Sunting: CocoaPods 0.39.0 telah dirilis yang memperbaiki masalah ini!

Seperti yang disebutkan @orkenstein , ada solusi yang lebih sederhana dengan mengomentari beberapa kode Pod-frameworks.sh. Saya memasukkan sedikit lebih banyak detail di sini.

Di direktori proyek Xcode Anda, buka Pods/Target Support Files/Pods/Pods-frameworks.sh

Komentari baris berikut:

# 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

Simpan Pods-frameworks.shdan Anda harus pergi!

DJ Tarazona
sumber
4
Ini berhasil untuk saya. Perlu diketahui, jika Anda menjalankan pod-install atau pod-update, Anda mungkin harus berkomentar lagi!
Max Alexander
Masalah Cocoapods di sini: github.com/CocoaPods/CocoaPods/issues/4188 , Anda dapat mencoba PR ini: github.com/CocoaPods/CocoaPods/pull/4221 dengan petunjuk tersebut: panduan.cocoapods.org/using/unreleased-features
ldiqual
memperbarui cocoaPods 0.39.0 dan tidak menyelesaikan masalah ini untuk saya
nwales
@DJ Tarazona Terima kasih atas resep Anda !! itu benar-benar berhasil untuk saya, bahkan ketika saya memperbarui permata cocopod ke versi terbaru
Jorge Vicente Mendoza
16

Perbaikan untuk masalah ini telah digabungkan dan tersedia pada versi CocoaPods terbaru 0.39.0.beta.5

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

Untuk mendapatkan CocoaPods versi terbaru, jalankan gem install cocoapods --pre

Atau, ikuti petunjuk untuk menjalankan fitur yang belum dirilis: http://guides.cocoapods.org/using/unreleased-features

Setelah Anda memiliki CocoaPods versi terbaru, jalankan pod installkembali.

Akankah Y
sumber
Ini adalah pembuat uang
tommybananas
Air mata mengalir. Terima kasih!
MQLN
Kesalahan tidak harus dilakukan secara khusus dengan CocoaPods; kami mengalami masalah yang sama dan tidak menggunakan CocoaPods.
devios1
8

Saya menggunakan fastlane gym 1.9.0 untuk membangun aplikasi saya dan terus ditolak oleh apple karena file tidak cocok, sedangkan jika saya mengupload melalui XCode 8 diterima. Saya memeriksa swift libs di folder dukungan cepat ipa dan di folder Frameworks, saya menemukan bahwa libs di folder dukungan swift adalah untuk swift 2.3 sedangkan di folder Frameworks itu cepat 3. Jadi di file gym saya, saya menambahkan toolchain pilihan:

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

* Perhatikan bahwa saya harus mengubah use_legacy_build_api menjadi false untuk menggunakan opsi toolchain

Untuk menggunakan opsi toolchain, perlu menyetel use_legacy_build_api: false https://github.com/fastlane/fastlane/issues/6003#issuecomment-244792185

Zhong Huiwen
sumber
Terima kasih! Saya juga menggunakan Fastlane dan Gym dan ini memperbaiki masalah.
Eystein Bye
Terima kasih, itu membantu memperbaiki masalah saat menggunakan Gym juga. Harap dicatat bahwa saya masih dapat menggunakan solusi ini dengan use_legacy_build_api: true
Viktor Malyi
6

Ada solusi yang kurang rumit, ditemukan di GitHub :

Saya telah melihat-lihat di Pods-frameworks.sh dan menemukan bagian yang dikomentari sebagai:

Sematkan pustaka runtime Swift yang tertaut
Mengomentari blok kode yang menyalin pustaka ini (dan menandatanganinya) tampaknya telah memperbaiki kesengsaraan pengiriman saya. Saya belum menyelam lebih dalam untuk melihat apakah itu hanya menyalinnya yang menyebabkan masalah atau apakah itu penandatanganan kode. Saya mendapatkan sedikit dari kedalaman saya di sana.

orkenstein
sumber
4
  1. Perbarui cocoapods Anda ke versi terbaru, ketik sudo gem install cocoapodsterminal.
  2. Jalankan di pod updatebawah direktori proyek Anda.
  3. Ingatlah untuk mengatur Enable Bitcode ke NO untuk Debugopsi untuk semua pod Anda.
  4. Tetap

Masalah sudah diperbaiki karena kode berikut ini di 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

diubah menjadi:

# 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
Bartłomiej Semańczyk
sumber
2

Solusi Saya untuk ini:

Saya menggunakan Reveal melalui Cocoapods dan Reveal perlu menonaktifkan Bitcode. Jadi saya menyertakan Reveal (harus berfungsi untuk Framwork lain) hanya untuk Debug:

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

Karena Reveal saya sekarang hanya dikonfigurasi untuk Debug, saya menonaktifkan Bitcode hanya untuk Debug.

masukkan deskripsi gambar di sini

Dengan pengaturan ini semuanya berfungsi dengan baik, tanpa peretasan ...

Urkman
sumber
0

Saya telah melihat kesalahan ini terjadi saat mengintegrasikan pustaka yang tidak mendukung bitcode (seperti versi stabil New Relic). Solusinya adalah menghapus pustaka, menonaktifkan bitcode (dan berpotensi tidak dapat mengirimkan ke toko), atau menunggu biner diperbarui yang mendukung bitcode dari penjual perpustakaan Anda.

JAL
sumber
0

Kesalahan bagi saya adalah saya membuat dengan profil Adhoc alih-alih profil App Store untuk mengunggah spa ke toko aplikasi.

jarora
sumber