web-dev-qa-db-fra.com

Cocoapods use_frameworks! problème d'importation

Je souhaite utiliser certains pods Swift dans mon application Objective-C. Je dois donc utiliser des frameworks plutôt que des bibliothèques statiques. Mais activer use_frameworks! dans mon fichier Podfile provoque des erreurs #import.

Mon Podfile:

platform :ios, '8.0'
use_frameworks!

pod 'AFNetworking', '2.6.0'
pod 'Typhoon'
pod 'SSKeychain'
pod 'JBWebViewController'
pod 'TTTAttributedLabel'
pod 'HockeySDK'
pod 'GoogleAnalytics'
pod 'Intercom'
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'UIButton+Activity'
pod 'HexColors'
pod 'AFNetworkActivityLogger'
pod 'HCSStarRatingView', :git => 'https://github.com/hsousa/HCSStarRatingView.git'
pod 'LGSideMenuController'
pod 'DateTools'
pod 'SDWebImage'
pod 'SSCWhatsAppActivity'
pod 'UIViewController+BlockSegue'

Le premier problème concernait le module SSKeychain:

 SSKeychain Error

Dans le code, SSKeychain est utilisé avec "quotes" #import "SSKeychain/SSKeychain.h", mais si je comprends bien, je dois utiliser <angle> à partir de maintenant #import <SSKeychain/SSKeychain.h>? Mais dans ce cas, je reçois la même erreur, mais dans mon code.

Mes phases de construction:

 Build Phases

Quoi qu'il en soit, j'ai trouvé fork de SSKeychain avec une importation "quotes" ( https://github.com/adamwulf/sskeychain/commit/2b7fd878415e8e4f23f74636cdd8c993466d0749 ) et est passée à cette version. 

Mais maintenant, j'ai le même problème avec beaucoup d'autres pods (presque avec tous):

 FBSDKCoreKit error

Importer dans l'application: #import "FBSDKCoreKit/FBSDKCoreKit.h"

Ai-je vraiment besoin de bifurquer chaque dépôt et de modifier les instructions d'importation? Ou j'inclus mal les gousses?

PS: Je nettoie les données et les projets dérivés avant chaque tentative de construction.

Cocoapods Version: 0.39.0

19
Ponf

Comme vous avez utilisé Modules dans votre Podfile, pourquoi ne pas simplement:

@import SSKeychain;

au lieu de:

#import <SSKeychain/SSKeychain.h>

Pour tester cela:

  • créer un projet iOS simple, avec un seul ViewController
  • créer un Podfile en utilisant votre code ci-dessus
  • lancer l'installation du pod
  • ouvrir l'espace de travail
  • build & run: ça compile bien
12
Diego Freniche

Je l'ai enfin compris! Le problème a été résolu en supprimant Pods.framework dans Lien binaire avec bibliothèques et en les ajoutant à nouveau manuellement. 

Merci pour l'aide!

7
Ponf

Dans mon cas, quel était le problème? J'ai déjà téléchargé quelques pods ObjC pour mon projet Objective C, puis j’ai besoin d’un pod Swift pour pouvoir activer use_framwork dans mon fichier pod et installer ce pod Swift. Après l’installation, le problème d’importation de pods Swift arrive pour les bibliothèques ObjeC. dans de nombreuses classes, donc

Qu'est-ce que j'ai fait pour résoudre ce problème?

  1. Couper tous les pods Objective C du fichier pod 
  2. Ouvrez le terminal et lancez la commande: cd path/myProject
  3. Commande d'exécution du terminal: pod install
  4. Recopiez-le (tous les modules Objective C) à nouveau dans un fichier pod et enregistrez-le. 
  5. Commande d'exécution du terminal: pod install
0
jayesh lathiya

Vérifiez également les messages d'erreur sur pod install.

Dans mon cas, j'utilisais une importation personnalisée dans FRAMEWORK_SEARCH_PATHS, et juste parce que je le faisais, chaque fois que je le faisais pod install, les chemins de recherche supplémentaires ajoutés par CocoaPods n'étaient pas ajoutés. J'ai donc dû supprimer mon chemin personnalisé, puis ils se sont présentés. Puis j'ai ajouté mon chemin personnalisé.

Peut-être une bonne idée de faire pod deintegrate, supprimer le fichier de xcworkspace et refaire pod install une fois de plus. Ajoutez ensuite vos paramètres de construction personnalisés.

C'est l'erreur que je devenais:

[!] The App [Debug] target overrides the FRAMEWORK_SEARCH_PATHS
build setting defined in Pods/Target Support Files/Pods-AppLib/Pods-AppLib.debug.xcconfig. 
This can lead to problems with the CocoaPods installation
0
HotFudgeSunday