Je code actuellement dans Swift et j'ai une erreur:
Aucun tel module social
Mais je ne comprends pas, car le module est dans mon projet, déclaré dans "Framework et bibliothèques liés" et dans "Binaires intégrés".
Les frameworks sont en Objective-C, j'ai donc écrit un en-tête de pont pour cela.
S'il vous plaît, comment puis-je faire en sorte que Xcode reconnaisse le framework?
Je ne sais pas pourquoi cela se produit, mais une façon de résoudre votre problème consiste à définir vos build settings et à définir le Framework Search Paths dans un dossier contenant les cadres en question. Si les frameworks sont placés dans votre répertoire de projet, définissez simplement le chemin de recherche du framework sur $(SRCROOT)
et réglez-le sur récursif.
Si c'est vendredi après-midi ou après 1h du matin:
Ouvrir xcodeproj
au lieu de xcworkspace
provoquera une erreur comme celle-ci ...
Je ne suis pas tout à fait sûr de savoir pourquoi Martin R la réponse dans les commentaires de la question est tellement ignorée:
Assurez-vous que vous avez simplement essayé de sauter l'importation du framework, car il est déjà ajouté avec l'en-tête de pontage.
J'espère que cela t'aides
J'ai eu le même problème en utilisant Cocoapods et Swift . Je n'ai pas remarqué les lignes suivantes dans le fichier podfile:
# Uncomment this line if you're using Swift
# use_frameworks!
Donc, tout ce que je devais faire était de le changer pour:
# Uncomment this line if you're using Swift
use_frameworks!
... aa et ça a marché :)
Assurez-vous que la dénomination de vos configurations dans les sous-projets correspond à celle du projet "parent". Si le nom de la configuration ne correspond pas exactement (en respectant la casse), Xcode abandonnera le processus d'archivage et affichera l'erreur "Aucun module de ce type ...".
Autrement dit, si vous avez un projet "parent" avec une configuration nommée "AppStore", vous devez vous assurer que tous les sous-projets ont également ce nom de configuration.
Voir mes captures d'écran ci-joint.
J'éprouvais ce problème aussi. La solution pour moi était que les schémas d'archivage entre les deux projets ne correspondaient pas. J'ai un xcworkspace avec un projet cadre et un projet d'application. Le problème était que, dans le schéma Archive de mon application, j'utilisais une configuration de construction différente de celle utilisée par la structure pour son schéma Archive. J'ai défini les deux configurations de construction sur Release, ce qui a résolu le problème.
Dans mon cas, après de nombreuses tentatives pour comprendre ce que je faisais mal en important un framework, j'ai finalement découvert que le framework lui-même était le problème. Si vous n'obtenez pas votre infrastructure à partir d'une source approuvée, vous devez l'inspecter et vous assurer qu'elle contient un dossier Modules contenant un fichier module.modulemap. Si module.modulemap n'est pas présent, vous obtiendrez l'erreur "Aucun de ces modules 'MyFramework'".
Si le dossier "Modules" ne contient pas le dossier "MyFramework.swiftmodule", la structure sera trouvée mais Xcode ne sera pas informé de son contenu et vous obtiendrez ainsi des erreurs différentes.
En supposant que le cadre existe vraiment et dans le chemin, etc ... supprimez le répertoire ~/Bibliothèque/Developer/Xcode/DerivedData/ModuleCache (et nettoyez le projet et supprimez les données dérivées spécifiques au projet pour une bonne mesure).
Lorsque vous effectuez le nettoyage standard, le répertoire ModuleCache n'est pas reconstruit.
Les étapes suivantes ont fonctionné pour moi.
"pod update"
dans le terminal.xcworkspace
et compilez à nouveau.Assurez-vous que Find implicit Dependencies
dans les options de construction dans Scheme est activé!
J'ai aussi rencontré la même erreur quelques jours en arrière. Voici comment j'ai résolu le problème:
L'erreur est "module introuvable"
Aller aux paramètres de construction du projet:
Créez un nouveau fichier d'en-tête de pontage, par exemple TestProject-Bridging-Header.h et placez-le dans Compilateur rapide → Nom d'en-tête d'interface généré par Objective-C (ref, voir l'image ci-dessus).
C'est tout.
Ok, le même problème a été résolu pour moi: définir l’emplacement des données dérivées par rapport au répertoire de l’espace de travail plutôt que de le conserver par défaut . Aller aux préférences dans xcode. Accédez à l'onglet Emplacements dans les préférences et définissez Données dérivées sur Relatif . J'espère que cela vous aidera.
Si vous construisez pour une plate-forme comme tvOS, assurez-vous d’avoir sélectionné un simulateur Apple TV.
Construire une application tvOS avec un simulateur iOS sélectionné m'a donné exactement cette erreur. J'ai passé presque une heure à chercher toutes sortes de problèmes de construction ... doh.
Dans mon cas, l'application IPHONEOS_DEPLOYMENT_TARGET a été définie sur 9.3 alors que dans mon cadre nouvellement créé, elle était définie sur 10.2
Le résolveur de dépendances implicites a ignoré mon new framework car les exigences de la plate-forme cible sont supérieures aux exigences de l'application.
Après ajustement de la structure Cible de déploiement iOS pour correspondre à ma cible de déploiement d’application, la structure compilée et liée avec succès.
J'obtenais la même erreur lorsque j'ai ajouté deux frameworks en utilisant Cocoapods
. Si nous utilisons des pods dans notre projet, nous devrions utiliser xcodeworkspace
au lieu de xcodeproject
. Pour exécuter le projet via xcodebuild, j’ai ajouté le paramètre -workspace <workspacename>
dans la commande xcodebuild
et cela fonctionnait parfaitement.
J'ai eu la même erreur pour
import Firebase
Mais ensuite, j'ai remarqué que je n'ajoutais pas de pod à la section cible principale, mais seulement des cibles Test et TestUI dans Podfile.
À la commande
pod init
pour un projet xcode Swift, le fichier podfile suivant est généré
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'MyApp' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for MyApp
target 'MyAppTests' do
inherit! :search_paths
# Pods for testing
end
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
Il faut donc s’assurer que l’on ajoute des modules à tout espace réservé approprié.
Je viens de supprimer mon cocoapod. Ensuite, j'ai installé un pod pour le supprimer. Ensuite, je viens de le rajouter dans mon podfile et de le réinstaller. Cela a fonctionné. Pas certain de pourquoi.
J'ai corrigé ça avec
Cibles -> Général -> Cadres et bibliothèques liés
Ajoutez le cadre qui devrait être au sommet du dossier Workspace
. Douleur dans le cul.
En général => Cadres et bibliothèques liés, j'ai ajouté mon ./Pods/Pods.xcodeproj
et le tour est joué
J'avais déjà installé des pods. Build fonctionnait sans problème lorsque je construisais une application sur mon appareil, mais les archives ne fonctionnaient pas. Je viens de courir:
pod install
aucun nouveau module n'a été installé, seul le fichier .xcodeproj a été régénéré et l'archive a commencé à fonctionner
Pour moi Construire une architecture active uniquement était défini sur Oui pour la configuration sélectionnée. Cela a fait le tour:
Sélectionnez "Pods" dans le navigateur de projet de gauche> Sélectionnez "Paramètres de construction"> Construire une architecture active uniquement vers Non
J'ai eu ce problème lors du développement d'un pod personnalisé. Constaté que je devais juste spécifier la dépendance dans mon fichier Procfile:
Pod::Spec.new do |s|
# ... other declarations
s.dependency 'Alamofire', '~> 4.3'
end
Mon problème était avec plusieurs cibles . Je l'ai résolu avec les liens ci-dessous: configurer le fichier pod correctement et corriger les paramètres de construction
J'espère que quelqu'un le trouvera utile.
J'ai trouvé que le Import Paths
dans le Build Settings
était incorrect pour un module personnalisé (MySQL). Après avoir indiqué cela dans la bonne direction, le message avait disparu.
Ce qui a fonctionné pour moi est la solution { this } _ à une autre question. Fermer Xcode et rouvrir le projet en tant qu'espace de travail.
Accédez au dossier de votre projet et ouvrez le fichier .xcodeworkspace
.
Une fois que vous avez ouvert l'espace de travail (au lieu de projet), les pods doivent apparaître en tant que projet de niveau supérieur dans le navigateur de projet.
C'est ce qui a finalement fonctionné pour moi. C'est assez dommage que je doive faire tout cela, mais c'était la seule chose que je pouvais trouver qui fonctionnait.
Après avoir vérifié que la bibliothèque était répertoriée sous linked framework and libraries
. Si ce n'est pas là, vous pouvez cliquer sur le +
et, espérons, voir votre framework/pod répertorié.
Cliquez sur votre projet dans l'icône de schéma (voir image ci-dessous)
Ensuite, vous devriez voir votre cadre de travail répertorié:
Cliquez sur Manage Schemes.
Ensuite, vous devriez voir quelque chose comme ça:
Cochez la box
pour votre framework, cliquez sur AutoCreate Schemes now
, puis sur close
.
Essayez ensuite d’importer à nouveau votre framework/pod.
Cela a fonctionné pour moi.
Dans mon cas, toutes les suggestions ci-dessus ne fonctionnent toujours pas . Je copie simplement le contenu du fichier qui montre l'erreur sans les éléments d'importation, puis le colle dans un autre fichier avec les mêmes importations et commente le fichier d'erreur en sortie . le projet a de nouveau fonctionné, puis j'ai supprimé le fichier d'erreur d'origine, créé un fichier portant le même nom et redéfini son contenu avec les mêmes importations . Je pense que dans mon cas, je viens de trouver un moyen de le laisser fonctionner reliez ces importations une fois et tout devrait bien se passer.
J'avais ce problème parce que je définissais la mauvaise cible dans le fichier podfile (le projet lui-même plutôt que la section UITests).
Pour moi, cela s'est produit sur RxSwift et le problème était que je l'avais fixé à 3.0.0 dans le fichier podfile. La suppression de la restriction de version et la mise à jour des pods l’ont mise à niveau vers la version 3.1.0, qui l’a corrigé.
Je gagne le prix pour la cause la plus stupide de l'erreur "Aucun module de ce type". Dans mon cas, je construis à la main le framework inclus et le copie dans le répertoire de mon projet. Mes chemins de recherche d'infrastructure ont été définis correctement et l'infrastructure a été ajoutée correctement au projet.
Lorsque j'ai archivé le framework que je construisais, j'ai utilisé "Show in Finder" pour me rendre au dossier de publication dans les données dérivées. Mais je n'ai pas remarqué que le dossier ne contient qu'un alias pour le framework, pas le framework lui-même. La structure d'origine est restée dans mon répertoire de données dérivées. Ainsi, plus tard, lorsque j'ai effacé les données dérivées, la structure a été supprimée, mais mon projet ne savait pas que .
Ré-archiver le framework, suivre l'alias pour le framework actuel et le copier dans le répertoire de mon projet a fonctionné.
S'il ne s'agit que d'un simple projet, sans cocoapodes, comme je l'avais déjà fait, vous pouvez essayer de déplacer votre framework dans votre répertoire de projet et de le lier à nouveau. Je l'avais sur un bureau, mais lié et "importer MyFramework" a fait une erreur. Après l'avoir déplacé à l'intérieur du répertoire du projet et l'avoir lié à nouveau, cela a fonctionné.
Une autre suggestion pour Xcode 10+ et les projets 1. créés avec Xcode version <10, 2. Contenez un sous-projet avec un framework dont dépend le projet principal. Le problème est que Xcode placera la structure compilée dans le répertoire spécifié dans le sous-projet, qui est probablement différent du répertoire de construction du projet principal.
Vérifier le fichier> Paramètres du projet. Maintenant, cliquez sur "Avancé ..." et sélectionnez un autre chemin que "Legacy", par exemple "Unique". Dans ce cas, Xcode mettra tous les composants construits dans un seul dossier et il devrait pouvoir trouver le module "manquant".
C'est une erreur de compilation
module.modulemap
Objective-C, Bibliothèque/Cadre cible.
Si vous hébergez votre propre bibliothèque ou structure, veuillez vous assurer que le fichier _module.modulemap
_ et les en-têtes de celui-ci se trouvent dans _Build Phases -> Headers section
_
Framework Search Paths
Consommateur rapide -> Swift framework statique
Swift Consumer -> Cadre statique Objective-C
Consommateur Objective-C -> Swift framework statique
Consommateur Objective-C -> Bibliothèque d'infrastructure Objective-C
Si vous essayez de créer une application sans définir le _Framework Search Paths
_, vous verrez la même erreur qu'avant: _No such module...
_. Après avoir configuré le _Framework Search Path
_ pour qu'il pointe vers les ressources de la structure, Xcode construira le projet avec succès. Toutefois, lorsque vous exécutez l’application dans le simulateur, il se produit un blocage pour la raison suivante: _Image not found
_ sur
Import Paths
Swift consommateur -> Swift bibliothèque statique
Le _Import Paths
_ doit pointer sur _.swiftmodule
_
Si toutes les méthodes ci-dessus ne vous convenaient pas, comme dans mon cas. Il n'y a pas eu de problème la veille, mais le lendemain matin, j'ai fait face à la même erreur. Je viens de supprimer les cadres en supprimant les références et de les ajouter à nouveau. Je sais que cela peut paraître idiot, mais le tour est joué.
1 - Dans votre podfile, supprimez le pod qui crée un problème et enregistrez le fichier 2 - Exécutez l’installation du pod 3 - Ré-ajoutez le pod, enregistrez le fichier 4 - Relancez l’installation du pod.
Le problème devrait être résolu.
HIH
Mon problème (cette fois-ci) était que j'ai utilisé une version obsolète de la bibliothèque dans mon fichier Podfile.
J'ai utilisé:
pod 'LBTAComponents', '~> 0.1.9'
qui n'a pas fonctionné, mais quand je l'ai changé pour:
pod 'LBTAComponents', '~> 1.0.2'
ça a marché.
Dans mon cas, le problème était simplement que certains des projets qui utilisaient la structure avaient une version iOS cible du déploiement antérieure à la version iOS de la cible du déploiement. Une fois que j'ai changé la version iOS de la cible de déploiement de l'infrastructure, l'erreur a disparu .
Si vous hébergez votre propre bibliothèque ou infrastructure, veuillez vous assurer qu'il contient le fichier module.modulemap
et que les en-têtes de celui-ci se trouvent dans la section Build Phases -> Headers
.
J'ai eu un problème similaire avec le chargement de FacebookSDK, j'ai ajouté ~/Documents/FacebookSDK (recherche où sont vos cadres) à Chemins de recherche de cadre dans Paramètres de construction Module FBSDKShareKit
Dans mon cas, il me suffisait de recharger le projet. J'avais utilisé la ligne de commande pour cloner mon projet, mais le sous-module n'a pas été installé correctement. Pour remédier à cela, j'ai cloné le projet via XCode, et tout fonctionne. Assurez-vous simplement de sauvegarder les modifications en premier.
Si vous avez plusieurs projets dans l'espace de travail, vous devez:
1) ajouter une nouvelle configuration à tous les projets
2) produit -> propre
3) supprimer derived data
4) pod install
dans le terminal
5) construisez votre projet.
J'espère que ça aide à quelqu'un.
J'ai résolu ce problème beaucoup plus facilement en ajoutant à la fin de build-debug.xconfig
#include "../Pods/Target Support Files/Pods-IAP/Pods-IAP.debug.xcconfig"
Et jusqu'à la fin de build-release.xconfig
#include "../Pods/Target Support Files/Pods-IAP/Pods-IAP.release.xcconfig"
puisque ces fichiers définissent déjà PODS_ROOT
et les variables de construction associées.
SI vous avez fait tout ce qui est décrit ci-dessus et que rien ne fonctionnait pour vous, essayez d’ajouter $(inherited)
dans le chemin de recherche Framework du paramètre de construction de votre cible.
Cette erreur peut également être causée par l'absence de mappe de module dans le cadre. Si le framework que vous essayez d'importer est le vôtre, recherchez les avertissements du compilateur sur le framework lui-même. Dans mon cas, mon cadre était en construction et en place, mais il y avait un avertissement de construction:
avertissement: aucun en-tête de parapluie trouvé pour la cible 'MyFramework', la carte du module ne sera pas générée
En résolvant cet avertissement (qui lié à l'en-tête du cadre ne correspondant pas au nom du module ), j'ai pu importer le cadre.
Pour moi, j'ai corrigé le remplacement de tous les caractères tilde (~) dans mes chemins personnalisés par $(HOME)
. Les chemins personnalisés sont situés dans les préférences Xcode sous l'onglet Emplacements.
Parfois, vous devez installer les pods.
Une autre cause possible dans XCode 10 peut être le Supported Platforms
est parfois remplacé par macOS
et le Valid Architectures
est remplacé par i386 x86_64
pour les projets Pods. En supposant que le projet concerne iOS, sélectionnez ensuite le projet Pods et modifiez le Supported Platforms
en iOS
et le Valid Architectures
en arm64 arm64e armv7 armv7s
. Vous pouvez définir chacune des cibles, mais cela prend plus de temps si vous avez plus d'un pod. De plus, le Swift version
des frameworks écrits en Swift est parfois configuré avec la mauvaise version.
J'ai installé le pod Fakery, le pod a été ajouté sous mon fichier Pods, mais lorsque j'ai essayé de l'utiliser, j'ai eu la même erreur. Le problème était, je ne l'ai pas construit, après l'avoir construit, le compilateur Swift a jeté quelques erreurs dans les fichiers Fakery Swift que certaines fonctions ont été renommées, il leur a également fourni des correctifs. Après avoir résolu tous ces problèmes de compilateur, la construction a réussi et j'ai pu utiliser le module. Donc, la compatibilité linguistique Swift était le problème dans mon cas.
La solution pour moi était. À l'intérieur des cibles -> Paramètres de construction -> Chemins de recherche dans la structure et ajout de $ (hérité). Cependant si c'est un cocoapods votre réponse probablement à l'intérieur de la sortie dans le terminal.
Pour ce que ça vaut (je connais déjà Xcode 7.2/Swift 2), mais j’ai remarqué que le fait d’avoir le fichier .Swift de la bibliothèque dans le répertoire du projet vous donne automatiquement accès à celui-ci et n’a pas besoin de la déclaration using.
Exemple: J'utilise SwiftyJSON et tout ce dont j'avais besoin était le fichier SwiftyJSON.Swift dans le projet. La déclaration using
me donnait en fait l'erreur «pas de module de ce type» et sa suppression résolvait le problème, et tout fonctionnait bien.