Cadre Swift en fonction de la Cocoa pod

en utilisant la version la plus récente de cocoa pods (0.36), je suis capable d'intégrer des cocoa pods écrits en swift (par exemple Alamofire) dans mon projet swift. Maintenant j'ai introduit un cadre personnalisé de mon propre dans le projet, qui veut également dépendre D'Alamofire.

ce que j'ai fait pour accomplir cela est de sélectionner ajouter le cadre de pods à mon cadre en tant que dépendance:

sélectionnez la cible pour mon propre cadre Swift Intégré (Module Swift) et dans l'onglet "Général" dans le lien cadres et bibliothèques "j'ai ajouté" Pods.cadre" que "Nécessaire".

cependant, ce n'est pas suffisant pour compiler car les classes de mon propre cadre swift ne peuvent pas "importer Alamofire" car il n'est pas reconnu comme "cadre disponible".

Ajouter les Gousses.débogage.xcconfig et les Gousses.publier.XCCONFIG fichier vers les Configurations pour la cible de mon propre cadre swift, en d'autres termes modifier les paramètres de construction pour faire toutes les modifications, que les cocoa pods font à la construction les réglages de la cible de mon application iOS résolvent le problème.

il se construit maintenant sans problème. Il fonctionne également sans problème dans le simulateur et mon propre cadre swift intégré utilise avec succès les cadres ajoutés par cocoa pods.

cependant si j'exécute la même chose sur un périphérique, il compile et installe sans problème, mais s'écrase ensuite avec une erreur fatale lors du lancement:

dyld: Library not loaded: @rpath/Pods.framework/Pods
Referenced from: /private/var/mobile/Containers/Bundle/Application/32D2F1F8-679F-4A5F-8159-28F1C800D0C6/TestingFrameworks.app/Frameworks/mySwiftFramework.framework/mySwiftFramework
Reason: image not found

apparemment pas tous les paramètres du fichier cocoa pods xcconfig sont adaptés pour être ajouté aux paramètres de construction de mon cadre swift personnalisé.

Mais pourquoi faut-il travailler dans le simulateur? Et plus important encore, quel est le paramètre de construction que je dois corriger?

Pour moi, il semble que j'ai besoin de modifier ce paramètre de construction:

PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods

pour quelque chose d'autre...

25
demandé sur alex da franca 2015-03-18 18:59:27
la source

3 ответов

j'ai identifié le problème. Il n'y avait simplement pas de gousses.cadre dans les cadres / dossier du cadre intégré.

ceci est dû au fait que Pods-frameworks.sh ne copiez pas les choses dans le bon répertoire.

j'ai réussi à résoudre ce problème:

  1. suppression des cadres de gousses inutiles pour les phases de construction
  2. ajouter une copie des fichiers avec la destination définie à Frameworks

enter image description here

C'est elle!

28
répondu Pasta 2015-04-06 03:26:08
la source

Pour tout les débutants comme moi, cette partie de la question pourrait vous confondre:

Ajouter les Gousses.débogage.xcconfig et les Gousses.publier.xcconfig fichier vers les Configurations pour la cible de mon propre cadre swift, en d'autres termes, changer les paramètres de construction pour effectuer toutes les modifications, ce que les cocoa pods font avec les paramètres de construction de ma cible D'application iOS, résout le problème.

Pour ce faire:

  1. dans votre coutume projet Xcode du cadre intégré, cliquez sur File>New>File... > iOS>Other>Configuration Settings File.

  2. faites ce qui précède deux fois. Vous pouvez nommer les fichiers Pods.release.xcconfig et Pods.debug.xcconfig, respectivement.

  3. dans votre navigateur de projet, développez le Pods Xcode project > Target Support Files>Pods. Vous verrez que il y a même nommé .xcconfig fichiers. Il suffit de copier leur contenu dans le fichier du même nom à l'intérieur de votre intégré personnalisé Swift framework.

  4. cliquez sur le fichier de projet Xcode de votre cadre Swift, sélectionnez le Objectif du projet (le bleu, pas le jaune une boîte à outils) > Info>Configurations.

  5. étendre le Debug et Release configurations. Vous verrez probablement deux cibles sous votre projet Xcode--la cible principale du framework, et la cible de test. Dans la colonne" basé sur le fichier de Configuration", définissez les fichiers de configuration sur la cible principale. à l' Pods.debug et Pods.release les fichiers que vous avez créé précédemment.

enter image description here

Et ensuite faire @Pâtesréponse.

UPDATE

si vous utilisez votre cadre Swift intégré personnalisé avec d'autres projets, cette configuration se brisera simplement parce que d'autres projets ont différents .xcconfig paramètres (les Gousses' .framework peut aussi être nommé différemment).

je j'ai simplement ajouté Alamofire comme sous-module git dans mon cadre. NOTE: Va git submodule way vous demande d'ajouter votre framework personnalisé à votre projet principal Embedded Frameworks, ainsi que Alamofire.frameworkà l'intérieur votre cadre personnalisé.

4
répondu Matt Quiros 2017-05-23 15:10:04
la source

Merci beaucoup pour le partage @Pasta et @ Matt Quiros et ça a résolu mon problème. Donc Ok, je veux juste partager un peu plus sur mon cas et j'espère que ce sera utile.

environnement de Développement

Xcode Version 9.1 (9B55)

déployer la version iOS: 10.0

Problème:

je travaille donc sur un projet nommé 'MyProject' où j'ai importé 'Charts' library en utilisant CocoaPod. Le même temps, il est aussi un cadre privé "Myfram Framework" importé dans "MyProject". Ici, le problème est que je veux utiliser 'Charts' dans ' Myfram Framework 'et Xcode continue de me dire que la bibliothèque' Chart ' n'est pas identifiée.

Solution:

j'ai fermé ' MyProject 'et ouvert' Myfram Framework 'et' File '- > ' New '- > ' File...'. Créer deux fichiers de configuration et de les placer sur le même niveau de dossier '*.xcodeproj fichier. Un fichier de configuration s'appelle ' Pods-Myfram Framework.débogage.xcconfig " et l'autre est appelés " Pods-MyFramework.publier.xcconfig". (Le nom de fichier peut être rien, mais je ne suis pas sûr que l'emplacement des fichiers). Ce qui suit est la structure des fichiers sur le disque et dans mon Xcode.

enter image description here

enter image description here

maintenant, fermez le projet ' Myfram Framework 'et ouvrez le projet' MyProject', dans mon Xcode la structure du fichier est montrée ci-dessous. Étendre le dossier' Pods 'au niveau' MyProject'. Vous pourrez voir quelques les fichiers de configuration, copiez leur contenu dans les fichiers de configuration que vous venez de créer dans le projet 'Mon cadre', déboguez.config - > debug.config, la libération.config -> libération.config.

enter image description here

puis dans un 'MyViewController' dans 'MyFramewwork', j'ai ajouté' import Charts ' et je voulais juste l'essayer sur simulateur et il ... passer. Ouais!! Puis j'ai ajouté du code dans le même VC pour créer un graphique à barres et j'ai couru avec succès sur l'appareil réel et le graphique à barres montré sur l'écran. Puis j'ai essayé la dernière étape que @Pasta a mentionné que l'ajout de L'option' Copy Files 'à 'Build Phases' de 'MyProject', il s'est également déroulé avec succès sur real device. J'ai encore enlevé et ça marche toujours.

0
répondu infinity_coding7 2018-01-23 07:39:49
la source

Autres questions sur