Saya mencoba mengirimkan aplikasi dengan Xcode6 GM, dan saya mendapatkan kesalahan ini saat validasi. Aplikasi ini memiliki ekstensi tindakan dan kerangka kerja dinamis yang dibagikan antara ekstensi dan aplikasi itu sendiri.
Saya tidak memiliki file yang disebut 'Kerangka Kerja' di mana saja dalam proyek ini, jadi saya benar-benar tidak yakin apa artinya ini. Adakah yang mendapatkan masalah ini atau punya ide?
ios
xcode
app-store-connect
Mike
sumber
sumber
Jawaban:
Ternyata kesalahan itu terkait dengan menggunakan Swift (baik aplikasi dan ekstensi memanfaatkan Swift).
Untuk aplikasi, saya harus mengatur:
dan untuk ekstensi:
Xcode 8 dan 9
Sepertinya ini telah diubah namanya menjadi
Always Embed Swift Standard Libraries
di Xcode 8 dan 9. Jadi, untuk aplikasi:dan untuk ekstensi:
sumber
@executable_path/../../Frameworks
Satu-satunya solusi yang berhasil bagi saya adalah menambahkan Run Script ini ke target Ekstensi Aplikasi:
Sumber: https://github.com/CocoaPods/CocoaPods/issues/4203
sumber
dyld: Library not loaded: ... Image not found
Adakah yang bisa membantu saya?Jadi 3 langkah untuk memperbaikinya dari pengaturan build
Embedded Content Contains Swift Code: YES
Embedded Content Contains Swift Code: NO
@executable_path/../../Frameworks
sumber
Dalam kasus saya, saya baru saja memutakhirkan ke CocoaPods 1.0.1 dan ini tampaknya merupakan bug baru.
Pembaruan Pod menambahkan skrip run ke target Extension saya yang membuat folder Frameworks. Saya menemukannya ketika saya hendak menambahkan skrip run @ Roman untuk menghapusnya.
Solusi adalah menghapus skrip ini dari fase build ekstensi saya. Inilah yang harus pergi ...
sumber
1.1.0.rc.2
menyelesaikan masalah bagi saya.Hapus Setiap Fase Pembuatan untuk ekstensi Anda yang memiliki
embed
kata dalam judulnya.Selain itu:
Yes
untuk target ekstensi.sumber
Tidak ada jawaban di atas yang berfungsi untuk saya. Ini karena kesalahan itu bukan disebabkan oleh aplikasi induk atau ekstensi itu. Sebaliknya salah satu perpustakaan yang terhubung salah.
Untuk mengonfirmasi, arsipkan dulu menggunakan Xcode kemudian gunakan Agenda pilih entri dan cari menggunakan Show in Finder. Ini akan menampilkan
.xcarchive
file.Pilih file itu dan pilih "Tampilkan Isi Paket".
Pilih .app di folder Produk / Aplikasi dan pilih lagi "Tampilkan Isi Paket".
Temukan modul yang melanggar di folder Frameworks. Misalnya jika kesalahannya adalah:
Maka di
Frameworks/MyLib.framework
bawah ini mungkin akan terlihat:Ini hadir karena pustaka tertaut - atau modul - yang menyertakan aplikasi induk memiliki
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
Temukan modul dependen dalam Xcode dan perbarui benderanya:
Perhatikan bahwa setelah mengatasi masalah ini aplikasi masih dapat ditolak dengan email penjelasan dari iTunes Store:
Sekali lagi ini kembali ke
EMBEDDED_CONTENT_CONTAINS_SWIFT
bendera. Pastikan hanya aplikasi induk yang diatur untuk iniYES
. Aplikasi dan ekstensi WatchKit harus memiliki flag iniNO
. Ini sebagaimana dirinci dalam jawaban @ Mike di atas.sumber
Dalam kasus saya, ada satu pustaka CocoaPod "Blockly" yang menentukan Ya untuk "Pustaka Standar Selalu Tanam Swift". Setelah membuat TIDAK untuk opsi, itu berhasil.
sumber
Dalam kasus saya, solusinya adalah menghapus kerangka kerja saya dari Binari Tertanam ekstensi saya dan menambahkannya ke Kerangka dan Pranala Tertaut ekstensi saya. (Keduanya dapat ditemukan di tab Umum ekstensi.)
sumber
Jika Embed Pods Frameworks script dan Roman's script keduanya ada di target yang sama.
Silakan periksa apakah Kerangka Pod Embed menempatkan sebelum yang lain. Jika tidak, cukup pindahkan skrip Roman ke yang terakhir.
sumber
Saya tidak dapat menemukan pengaturan apa pun untuk
Embedded Content Contains Swift Code
tetapi saya dapat menemukan pengaturanAlways Embed Swift Standard Libraries
dan pengaturan ini untuk TIDAK untuk kerangka kerja saya memang memperbaiki masalah ini.sumber
cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" jika [[-d "Frameworks"]]; kemudian rm -fr Frameworks fi
sumber
Jika Anda menggunakan CocoaPods, saya akan mempertimbangkan menghapus fase membangun kerangka kerja Embed pada target yang bermasalah (ekstensi), ini memperbaiki masalah bagi saya.
sumber
Saya mendapatkan kesalahan yang sama, dan itu karena saya menyalin kerangka kerja ke dalam bundel ekstensi. Ternyata, kerangka kerja yang digunakan oleh ekstensi harus disalin ke bundel Aplikasi Utama dan hanya ditautkan dalam pengaturan build ekstensi (tidak disalin). Pastikan untuk memiliki jalur pencarian '@executable_path /../../ Kerangka Kerja' dalam pembuatan ekstensi. Saya pikir jalur itu ditambahkan secara otomatis oleh XCode 10.
sumber
Saya menemukan banyak pertanyaan seperti ini dan tidak ada yang membantu saya memperbaiki masalah saya, jadi semoga ini dapat membantu seseorang.
Saya membuat aplikasi yang memiliki ekstensi Intent (untuk pintasan Siri) dan saya menggunakan kerangka kerja untuk kode yang dibagikan antara ekstensi dan aplikasi saya, seperti yang direkomendasikan oleh Apple.
Saya telah menambahkan kerangka kerja saya ke ekstensi saya di bagian "Kerangka Kerja dan Perpustakaan" pada pengaturan "Umum" untuk target. Saat Anda menambahkan kerangka kerja di sini, ada dua kolom. Satu mengatakan nama kerangka kerja dan yang lainnya berjudul "Sematkan". Saya tidak menemukan apa pun di kolom "Sematkan" jadi saya pikir itu baik-baik saja, tetapi saya harus secara eksplisit memilih opsi "Jangan Sematkan" untuk kolom itu untuk kerangka kerja saya. Ketika saya melakukan itu dan mengarsipkan dalam Xcode, saya bisa melihat selama validasi bahwa framework tidak terdaftar dalam konten ipa saya di bawah setiap target lagi, tetapi hanya sekali, dan validasi akhirnya berhasil.
sumber
Saya mengalami masalah ini pertama kali dengan XCode 7.1.1 untuk aplikasi saya yang memiliki Ekstensi Hari Ini (tidak ada Swift dalam proyek saya). Skrip ( https://github.com/CocoaPods/CocoaPods/issues/4203 ) tidak berfungsi untuk saya.
Menurunkan versi cocoapods ke versi 0.39.0.beta.3, menjalankan
pod install
, dan kemudian mengarsipkan kembali menyelesaikan masalah.sumber
Saya mendapatkan kesalahan yang sama, bersama dengan
Masalah saya adalah dengan
SquareReaderSDK.framework
spesifik tetapi saya harus menambahkan skrip run baru sesuai instruksi mereka:sumber
Tidak ada Pengaturan Bangun yang tercantum di sini yang menyelesaikan masalah ini untuk saya. Namun, saya berhasil menjalankannya setelah memindahkan beberapa kerangka kerja dari "Biner Tertanam" ke "Kerangka Kerja Tertaut dan Pustaka".
Tampaknya aplikasi utama saya dan salah satu kerangka kerja kustom saya memiliki ketergantungan kerangka kerja yang sama di keduanya dan yang tampaknya menjadi Tidak, tetapi memindahkannya di aplikasi utama saya dari area Tertanam ke area Tertaut memungkinkan saya untuk mengunggah aplikasi dengan sukses dengan tidak ada kesalahan.
sumber