Doğrulama Hatası: Geçersiz Paket. ... konumundaki paket izin verilmeyen 'Frameworks' dosyasını içeriyor


165

Xcode6 GM ile bir uygulama göndermeye çalışıyorum ve doğrulamada bu hatayı alıyorum. Uygulama, bir eylem uzantısına ve uzantı ile uygulamanın kendisi arasında paylaşılan dinamik bir çerçeveye sahiptir.

Projenin hiçbir yerinde 'Frameworks' adlı bir dosyam yok, bu yüzden bunun ne anlama geleceğinden emin değilim. Herkes bu sorunu veya herhangi bir fikir var mı?hatanın görünüşü


Frameworks adlı bir klasöre ne dersiniz?
borrrden

Projede Frameworks adında bir 'grup' var, ancak klasör yok. Kaldırdım, yeniden arşivledim ve hala aynı hatayı alıyorum.
Mike

Yanıtlar:


308

Hatanın Swift'i kullanmakla ilgili olduğu ortaya çıkıyor (hem uygulama hem de uzantı Swift'i kullanıyor).

Uygulama için, ayarlamak zorunda kaldım:

Embedded Content Contains Swift Code: YES

ve uzantı için:

Embedded Content Contains Swift Code: NO

Xcode 8 ve 9

Görünüşe göre bunun adı Always Embed Swift Standard LibrariesXcode 8 ve 9 olarak değiştirildi . Yani, uygulama için:

Always Embed Swift Standard Libraries: YES

ve uzantı için:

Always Embed Swift Standard Libraries: NO

7
Sen benim kurtarıcımsın. "Yerleşik", paketteki uzantı anlamına gelir ve bir uzantı daha fazla uzantı içermediğinden, hızlı kod içermez.
Chris Truman

2
Bu benim için sorunu çözmedi. Ayrıca CocoaPods kullanıyorum. Bununla ilgili sorunlar gören var mı? Başka fikir var mı?
timschmitz

8
Runpath Arama Yolunda olduğundan emin olmak için WatchKit uzantılarını unutmayın@executable_path/../../Frameworks
Mr Rogers

1
@MrRogers Cevabı takip ettikten sonra sorunumu çözen bu oldu. Ben hızlı izlemek ile bir objC uygulaması var. Gömülü içeriği ayarlamadan iyi çalışır, ancak elmadan bir ret var. Katıştırılmış içeriği doğru şekilde ayarlayarak uygulamayı bozdu. Bu arama yolu onu düzeltti.
Beau Nouvelle

1
Bu benim için işe yaramadı, başka bir şey yapmam gerekiyordu ve sorunu olan Hedef uzantı üzerinde oldu, bundan sonra "[CP * Embed Pods Frameworks" komut dosyasını sildim Doğru çalışıyor !!
A. Trejo

122

Benim için çalışan tek çözüm, bu Çalışma Komut Dosyasını Uygulama Uzantısı hedefine eklemekti:

cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then 
    rm -fr Frameworks
fi

resim açıklamasını buraya girin Kaynak: https://github.com/CocoaPods/CocoaPods/issues/4203


7
Uygulamam Swift kullanmıyor, bu yüzden benim için çalışan tek düzeltme buydu.
Dan Loughney

6
Bunun ana hedefe değil, yalnızca uzantıya eklenmesi gerektiğini belirtmek gerekir.
theDuncs

3
Bu gerçekten sorunu çözüyor, ancak başka bir sorun veriyor, bu da benim cihazımı simülatörde uygulayamıyorum. Bir hata veriyor: dyld: Library not loaded: ... Image not foundHerkes bana yardım edebilir mi?
Subkhan Sarif

4
Sadece ben miyim yoksa bu tür bir deli mi?
bkbeachlabs

1
.İpa doğrulaması düzeltildi, ancak hata mesajı ile kurulurken çöktü: dyld: Kütüphane yüklenmedi: @ rpath / AFNetworking.framework / AFNetworking Başvuru kaynağı: / var / container / Bundle / Application / .... Sebep: görüntü bulunamadı
Aleem

45

Yani bunu yapı ayarlarından düzeltmek için 3 adım

  1. Konteyner Uygulaması: Embedded Content Contains Swift Code: YES
  2. Uzantı: Embedded Content Contains Swift Code: NO
  3. Uzantı: Runpath Arama Yolu = @executable_path/../../Frameworks

2
Konteyner vs Uzantı, Xcode için yeniyim. nerede, uzantısı kakao bakla mı? ya da bu iki şey nerede?
Serge Pedroza

16

Benim durumumda, sadece CocoaPods 1.0.1'e geçtim ve bu yeni bir hata gibi görünüyor.

Kapsül güncellemesi, Uzantı'nın hedefine Frameworks klasörünü oluşturan bir çalıştırma komut dosyası ekler. Kaldırmak için @ Roman'ın çalışma komut dosyasını eklemek üzereyken buldum.

Çözüm, bu komut dosyasını uzantımın oluşturma aşamasından silmekti. İşte gitmek için gereken ...

resim açıklamasını buraya girin


7
Benim için çözdüm! Bir kez daha CocoaPods, neyin yanlış olduğunu anlamaya çalışmak için bir saatten fazla bana mal oluyor. Bu ürünle ciddi bir aşk ve nefret ilişkim var.
fguchelaar

2
1.1.0.rc.2Benim için problemi çözmek için Cocoapod'ları yükseltiyorum .
Otávio

1
Klavye uzantısının Oluşturma Aşamaları altındaki Gömme Pod Çerçevelerini silmek benim için çalıştı! Xcode 8 ve CocoaPods v1.0.1 kullanıyorum. Teşekkürler!
Fırtına Fabrikası

13

Başlığında kelime bulunan uzantınız için Her Derleme Aşamasını kaldırın embed.

Bunlara ek olarak:

  • Gömülü içerik Swift kodu içeriyorsaYes , uzantı hedefi için ayarlanmalıdır .

11

Yukarıdaki cevapların hiçbiri benim için işe yaramadı. Bunun nedeni, hatanın üst uygulamadan veya uzantısından kaynaklanmamasıydı. Bağlantılı kütüphanelerden biri hatalıydı.

Onaylamak için önce Xcode kullanarak arşivleyin, ardından Organizer'ı kullanarak girişi seçin ve Finder'da Göster'i kullanarak bulun. Bu .xcarchivedosyayı gösterecektir .

Bu dosyayı seçin ve "Paket İçeriğini Göster" i seçin.

Products / Applications klasöründeki .app dosyasını ve tekrar "Paket İçeriğini Göster" i seçin.

Sorunlu modülü Frameworks klasöründe bulun. Örneğin, hata:

ERROR ITMS-90206: "Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyLib.framework' contains disallowed file 'Frameworks'."

Sonra Frameworks/MyLib.frameworkaşağıdakiler muhtemelen görünür olacaktır:

../Frameworks/libswiftContacts.dylib
../Frameworks/libswiftCore.dylib
../Frameworks/libswiftCoreData.dylib
../Frameworks/libswiftCoreGraphics.dylib
../Frameworks/libswiftCoreImage.dylib
../Frameworks/libswiftCoreLocation.dylib
../Frameworks/libswiftDarwin.dylib
../Frameworks/libswiftDispatch.dylib
../Frameworks/libswiftFoundation.dylib
../Frameworks/libswiftLocalAuthentication.dylib
../Frameworks/libswiftObjectiveC.dylib
../Frameworks/libswiftPassKit.dylib
../Frameworks/libswiftUIKit.dylib
../Frameworks/libswiftWebKit.dylib

Bunlar, üst uygulamanın içerdiği bağlantılı kitaplığın veya modülün EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;

Xcode'da bağımlı modülü bulun ve bayrağı güncelleyin:

resim açıklamasını buraya girin

Bu sorunun üstesinden geldikten sonra uygulamanın iTunes Store'dan açıklayıcı bir e-posta ile reddedilebileceğini unutmayın:

Invalid Swift Support - The Watch OS application has Swift libraries at both...

Bu da EMBEDDED_CONTENT_CONTAINS_SWIFTbayrağa geri dönüyor . Yalnızca üst uygulamanın bu değere ayarlandığından emin olun YES. Hem WatchKit uygulamasında hem de uzantısında bu işaretin ayarlanmış olması gerekir NO. Bu, @ Mike'ın yukarıdaki cevabında ayrıntılı olarak açıklanmıştır.


10

Benim durumumda, "Her Zaman Gömme Swift Standart Kütüphaneleri" için Evet'i belirten bir CocoaPod kütüphanesi "Blockly" vardı. Seçenek için HAYIR yaptıktan sonra işe yaradı.resim açıklamasını buraya girin


9

Benim durumumda çözüm, çerçevemi uzantımın Gömülü İkili Dosyalarından kaldırmak ve uzantımın Bağlı Çerçeveleri ve Kütüphanelerine eklemekti. (Her ikisi de uzantının Genel sekmesinde bulunabilir.)


7

Eğer Göm Bakla Çerçeveleri komut ve Roma senaryosu aynı hedefe hem mevcut.

Lütfen Gömme Pod Çerçevelerinin diğerinden önce bulunup bulunmadığını kontrol edin. Değilse, sadece Roma'nın senaryosunu sonuncuya taşıyın.


@ Reeonce Zeng, günümü kurtar!
16'da mgyky

Her iki komut dosyasını orada mı yoksa yalnızca son kısmı mı tutmalıyım? "$ {SRCROOT} / Pods / Hedef Destek Dosyaları / Pods-Orsys WatchKit Uzantısı / Pods-Orsys WatchKit Extension-frameworks.sh" cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" [[-d "Çerçeveler" ]; sonra rm -fr Çerçeveler fi

@stack, yeni bir çalıştırma komut dosyası aşaması eklemeli ve şunu doldurmalısınız: [cd-$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} / "[[-d" Frameworks "]]; sonra rm -fr Çerçeveler fi
Reeonce Zeng

yeni senaryoyu çalıştırmakla ne demek istiyorsun? zaten bir senaryomuz var. tamam ? Eski betiğin değiştirilmesi, proje metninizi değiştirerek bir kez çalıştırmalı mıyım. Orada "programı yüklerken komut dosyasını çalıştır" seçeneğini seçmem gerekiyor mu?

lütfen, bana biraz daha yardım et. Wathckit uzantısı hatası aldım. Watchkit uzantısı projemde, projelerimde "appex izin verilmeyen içeriyor ..." seçeneğini / menüsünü / sekmesini düzelt. nerede bulabilirim? Yalnızca "Pod çerçevesini yerleştir" ve "Pod çerçevesini kopyala" yı kullanıyorum. Lütfen yardım et.

6

İçin herhangi Embedded Content Contains Swift Codebir ayar bulamadım ama bir ayar bulabildim Always Embed Swift Standard Librariesve bunu çerçevem ​​için HAYIR olarak ayarlayarak bu sorunu çözdüm.


4
  1. Container App: Yapı Ayarı -> Katıştırılmış İçerik Swift Kodu İçeriyor: EVET
  2. Uzantı: Yapı Ayarı -> Katıştırılmış İçerik Swift Kodu İçeriyor: HAYIR
  3. Uzatma: Yapı Faz -> Aşağıdaki eklendi Run Script içinde

cd [$-CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} / "[[-d" Çerçeveler "]]; sonra rm -fr Frameworks fi

  1. (önemli) Uzantısı: Yapı Faz -> hareket Çalıştır Komut için Son (Göm Bakla Çerçeveleri komut sonra)

"Sonuncu" benim için önemli bir parçaydı, teşekkürler.
Andy Obusek

3

CocoaPods kullanıyorsanız, sorunlu hedefte (uzantı) Gömme çerçeveler oluşturma aşamasını silmeyi düşünürüm, bu benim için sorunu düzeltti.


2

Aynı hatayı alıyordum ve bunun nedeni çerçeveyi uzantı paketine kopyalıyordum. Anlaşıldığı üzere, uzantı tarafından kullanılan çerçeveler Ana Uygulama paketine kopyalanmalı ve yalnızca uzantı oluşturma ayarlarına bağlanmalıdır (kopyalanmadı). Uzantı yolunda '@executable_path /../../ Frameworks' arama yolunun bulunduğundan emin olun. Bu yolun XCode 10 tarafından otomatik olarak eklendiğini düşünüyorum.


1

Bunun gibi birçok soru buldum ve hiçbiri sorunumu çözmeme yardımcı olmadı, bu yüzden umarım bu birine yardımcı olabilir.

(Siri kısayolları için) bir Intent uzantısına sahip bir uygulama oluşturuyorum ve Apple tarafından önerilen şekilde uzantı ve uygulamam arasında paylaşılan kod için bir çerçeve kullanıyorum.

Çerçevemi, hedefin "Genel" ayarlarının "Çerçeveler ve Kütüphaneler" bölümünde uzantıma ekledim. Buraya bir çerçeve eklediğinizde, iki sütun vardır. Biri çerçevenin adını, diğeri ise "Embed" adını verdiğini söylüyor. Ben "Embed" sütununda gösteren hiçbir şey yoktu, bu yüzden iyi olduğunu düşündüm, ama açıkça benim çerçeve için bu sütun için "Gömme" seçeneği seçmek zorunda kaldı. Bunu yaptığımda ve Xcode'da arşivlediğimde, doğrulama sırasında çerçevenin artık her hedefin altında ipa içeriğimde listelenmediğini, ancak sadece bir kez olduğunu görebiliyordum ve doğrulama sonunda başarılı oldu.


0

Bugün Uzantısı olan uygulamam için XCode 7.1.1 ile ilk kez bu sorunu yaşadım (projemde Swift yok). Komut dosyası ( https://github.com/CocoaPods/CocoaPods/issues/4203 ) benim için çalışmadı.

Cocoapod'ları 0.39.0. beta.3 sürümüne düşürme, çalışıyor pod install ve daha sonra yeniden arşivlemek sorunu çözdü.


0

Ben de aynı hatayı alıyordum

İzin verilmeyen iç içe paketler hatası

Benim sorun SquareReaderSDK.frameworközellikle ile oldu ama talimatları doğrultusunda yeni bir çalışma komut dosyası eklemek zorunda kaldı:

FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
"${FRAMEWORKS}/SquareReaderSDK.framework/setup"

0

Burada listelenen Oluşturma Ayarlarının hiçbiri bu sorunu benim için çözmedi. Ancak, bunu "Gömülü İkili Dosyalar" dan "Bağlantılı Çerçeveler ve Kütüphaneler" e taşıdıktan sonra çalıştım.

Ana uygulamamın ve özel çerçevelerimden birinin her ikisinde de aynı çerçeve bağımlılığına sahip olduğu görünüyor ve bu bir Hayır Hayır gibi görünüyor, ancak ana uygulamamda Gömülü alandan Bağlantılı alana taşınması, uygulamayı başarıyla yüklememe izin verdi hata yok.

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.