J'essaie de soumettre une application avec Xcode6 GM et j'obtiens cette erreur lors de la validation. L'application dispose d'une extension d'action et d'un cadre dynamique partagé entre l'extension et l'application elle-même.
Je n'ai pas de fichier appelé «Frameworks» dans le projet, donc je ne suis vraiment pas sûr de ce que cela signifie. Quelqu'un at-il eu ce problème ou eu des idées?
Il s'avère que l'erreur est liée à l'utilisation de Swift (l'application et l'extension utilisent Swift).
Pour l'application, je devais définir:
Embedded Content Contains Swift Code: YES
et pour l'extension:
Embedded Content Contains Swift Code: NO
Xcode 8 et 9
On dirait que cela a été renommé en Always Embed Swift Standard Libraries
dans Xcode 8 et 9. Donc, pour l'application:
Always Embed Swift Standard Libraries: YES
et pour l'extension:
Always Embed Swift Standard Libraries: NO
La seule solution qui a fonctionné pour moi a été d'ajouter ce script d'exécution à la cible de l'extension d'application:
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
Donc, 3 étapes pour résoudre ce problème à partir des paramètres de construction
Embedded Content Contains Swift Code: YES
Embedded Content Contains Swift Code: NO
@executable_path/../../Frameworks
Dans mon cas, je viens de passer à CocoaPods 1.0.1 et cela semble être un nouveau bogue.
La mise à jour Pod ajoute un script d'exécution à la cible de mon extension, qui crée le dossier Frameworks. Je l'ai trouvé alors que j'allais ajouter le script d'exécution de Roman pour le supprimer.
La solution consistait à supprimer ce script de la phase de construction de mon extension. Voici celui qui devait aller ...
Remove Every Build Phase pour votre extension dont le titre est embed
Word.
Aditionellement:
Yes
pour la cible de l'extension.Aucune des réponses ci-dessus n'a fonctionné pour moi. En effet, l'erreur n'a pas été causée par l'application parent ni par son extension. Une des bibliothèques liées était plutôt en faute.
Pour confirmer, archivez d'abord avec Xcode, puis avec Organizer, sélectionnez l'entrée et localisez-la en utilisant Afficher dans le Finder. Cela montrera le fichier .xcarchive
.
Sélectionnez ce fichier et choisissez "Afficher le contenu du paquet".
Sélectionnez le fichier .app dans le dossier Produits/Applications et choisissez à nouveau "Afficher le contenu du paquet".
Localisez le module incriminé dans le dossier Frameworks. Par exemple si l'erreur est:
ERROR ITMS-90206: "Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyLib.framework' contains disallowed file 'Frameworks'."
Ensuite, dans le Frameworks/MyLib.framework
, ce qui suit sera probablement visible:
../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
Ceux-ci sont présents parce que la bibliothèque liée - ou le module - inclus dans l'application parente possède le EMBEDDED_CONTENT_CONTAINS_Swift = YES;
Localisez le module dépendant dans Xcode et mettez à jour l'indicateur:
Notez qu'après avoir résolu ce problème, l'application peut toujours être rejetée avec un courrier électronique explicatif de l'iTunes Store:
Invalid Swift Support - The Watch OS application has Swift libraries at both...
Encore une fois, cela revient au drapeau EMBEDDED_CONTENT_CONTAINS_Swift
. Assurez-vous que seule l'application parent a la valeur YES
. L’application WatchKit et son extension doivent avoir cet indicateur défini sur NO
. Ceci est détaillé dans la réponse de @ Mike ci-dessus.
Si les scripts Embed Pods et le script de Roman existent dans la même cible.
Veuillez vérifier si les cadres d'intégration de pods localisent avant l'autre. Sinon, déplacez le script de Roman au dernier.
Dans mon cas, la solution consistait à supprimer mon framework des binaires incorporés de mon extension et à l'ajouter aux frameworks et bibliothèques liés de mon extension. (Les deux se trouvent dans l'onglet Général de l'extension.)
Je n'ai pas pu trouver de paramètre pour Embedded Content Contains Swift Code
, mais j'ai pu trouver un paramètre Always Embed Swift Standard Libraries
et le régler sur NO pour mon framework a résolu ce problème.
cd "$ {CONFIGURATION_BUILD_DIR}/$ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" if [[-d "Frameworks"]]; alors rm -fr Frameworksfi
Si vous utilisez CocoaPods, je souhaiterais supprimer la phase de construction des cadres incorporés sur la cible problématique (l'extension), cela a résolu le problème pour moi.
Aucun des paramètres de construction répertoriés ici n'a résolu ce problème pour moi. Cependant, cela a fonctionné après le déplacement de certains cadres de "binaires incorporés" vers "cadres et bibliothèques liés".
Il semble que mon application principale et l'un de mes cadres personnalisés aient la même dépendance dans les deux cas, ce qui semble être un non, mais le déplacer dans mon application principale de la zone Embedded vers la zone Liée m'a permis de télécharger l'application avec succès. pas d'erreurs.
J'avais la même erreur, et c'est parce que je copiais le framework dans le bundle d'extensions. Il s'avère que les frameworks utilisés par l'extension doivent être copiés dans le bundle principal de l'application et liés uniquement dans les paramètres de construction de l'extension (non copiés). Assurez-vous d'avoir le chemin de recherche '@ chemin_executable /../../ Frameworks' dans la construction de l'extension. Je pense que ce chemin a été ajouté automatiquement par XCode 10.
Je recevais cette même erreur, avec un
Erreur d'ensembles imbriqués non autorisés
Mon problème était avec le SquareReaderSDK.framework
spécifiquement mais je devais ajouter un nouveau script d'exécution selon leurs instructions:
FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
"${FRAMEWORKS}/SquareReaderSDK.framework/setup"
J'ai eu ce problème la première fois avec XCode 7.1.1 pour mon application qui a une extension Today (il n'y a pas de Swift dans mon projet) . Le script ( https://github.com/CocoaPods/CocoaPods/ issues/4203 ) n'a pas fonctionné pour moi.
Le déclassement des cocoapodes vers la version 0.39.0.beta.3, l'exécution de pod install
, puis le ré-archivage ont résolu le problème.