web-dev-qa-db-fra.com

Obtenir l'erreur "Aucun de ces modules" en utilisant Xcode, mais le cadre est là

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?

Error module

Project

Linkes Frameworks, Libraries

Header bridge

245

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.

254
terhechte

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 ...

390
capikaw

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

32
Mike K

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é :)

29
nburk

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.

 Configuration setup in "parent" project

 Configuration setup in 1st sub project

 Configuration setup in 2nd sub project

23
Groot

Veuillez comparer cette capture d'écran avec votre paramètre de construction

 Enter image description here

19
Krutarth Patel

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.

16
mikepj

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'".

 Example showing directory structure of SwiftyJSON.framework

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.

8
mcsheffrey

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.

8
Brad Brighton

Les étapes suivantes ont fonctionné pour moi. 

  1. Quitter xcode
  2. Exécuter "pod update" dans le terminal
  3. Ouvrez .xcworkspace et compilez à nouveau.
7
john raja

Assurez-vous que Find implicit Dependencies dans les options de construction dans Scheme est activé!

7
Nik Kov

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"

  • Créez Podfile dans votre répertoire de projet racine
  • Installer des cocoapods (un gestionnaire de dépendances pour les projets Swift et iOS)
  • Lancer l'installation du pod
  • Aller aux paramètres de construction du projet:

    • Recherchez l'en-tête de pontage Objective-c sous le compilateur Swift - Génération de code (si vous ne trouvez pas le compilateur Swift ici, ajoutez probablement un nouveau fichier Swift au projet)
    • Faites glisser et déposez le fichier d'en-tête de la bibliothèque du côté gauche vers l'en-tête de pontage (voir l'image ci-jointe)  enter image description here
  • 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).

  • Dans le fichier TestProject-Bridging-Header.h, écrivez #import "Mixpanel/Mixpanel.h"
  • Dans votre fichier Swift, le code devrait être: Import Mixpanel (c'est-à-dire le nom de la bibliothèque)

C'est tout.

6
vikram jeet singh

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. 

5
harshitpthk

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.

4
Jordan Smith

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.

4
berbie

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.

3
pawan singh

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é.

3
zeeawan

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.

2
Daniel Jones

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.

2
Magoo

En général => Cadres et bibliothèques liés, j'ai ajouté mon ./Pods/Pods.xcodeproj et le tour est joué

2
michel

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

2
Vojta

Juste pour compléter avec une autre possibilité, cette erreur peut survenir lorsque l'option "Rechercher les dépendances implicites" est désactivée. Allez dans Edit Scheme -> Build.

 enter image description here

Puis cochez cette option.

 enter image description here

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

1
boa_in_samoa

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
1
iljn

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.

1
Alok

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.

1
Thomas Kilian

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.

1
cenkarioz

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é. 

 enter image description here

Cliquez sur votre projet dans l'icône de schéma (voir image ci-dessous) 

 enter image description here

Ensuite, vous devriez voir votre cadre de travail répertorié: 

 enter image description here

Cliquez sur Manage Schemes.

Ensuite, vous devriez voir quelque chose comme ça: 

 enter image description here

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. 

1
ScottyBlades

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.

1
kidnapper

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). 

1
Charlie Seligman

Dans Xcode 10.1, la solution pour moi était de changer le système build sur Workspace Settings dans le menu Fichier. Par défaut, il est défini sur New Build System, il a été remplacé par Legacy Build System.

 enter image description here

1
MFA

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é.

0
Jensie

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é.

0
SafeFastExpressive

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".

0
Anton

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_

0
yoAlex5

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é.

0
Ray_Soham

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

0
Florian de Ponnat

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é.

0
instanceof

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 .  enter image description here

0
Chuck Krutsinger

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.

0
yoAlex5

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

0
kalafun

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.

0
JFed-9

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.

0
Vlad Pulichev

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.

0
NoodleOfDeath

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.

0
iHulk

Dans mon cas avec le projet sur Swift 4, les bibliothèques n’étaient pas compilées, il était donc impossible de les trouver et de les importer .. La solution consistait à définir la version de compilation des bibliothèques de cocoapods sur Swift 3.2  enter image description here

0
user3007870

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.

0
Adam Preble

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.

0
Nate Whittaker

Parfois, vous devez installer les pods.

  1. Terminal ouvert
  2. projet cd
  3. installation de pod
  4. Ouvrez .xcworkspace et
  5. La construction est réussie
0
Umitk

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.

0
Mark Dail

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.

0
Khazana

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.

0
Yigit Alp Ciray

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.

0
markiyanm