Puis-je utiliser CocoaPods lors de la création d'un Framework Cocoa Touch?

Je crée un nouveau Framework Cocoa Touch (MyFramework.framework), qui aura une dépendance sur Alamofire. Ce cadre sera écrit en Swift. En tant que test, j'ai commencé un nouveau projet Cocoa Touch Framework:

File > New > Project > Framework & Library > Cocoa Touch Framework

Ensuite, dans le terminal, j'ai effectué:

pod init

Dans ce répertoire de projets. Dans le Podfile nouvellement créé, j'ai ajouté ce qui suit:

source 'https://github.com/CocoaPods/Specs.git'
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
# Uncomment this line if you're using Swift
use_frameworks!

pod 'Alamofire', '~> 3.0'

Encore une fois, dans le Terminal, j'ai effectué:

pod install

Et a commencé à coder.

Tout semblait bien et bien jusqu'à ce que j'ai utilisé le MyFramework.produit Cadre dans un projet de vue unique. Lorsque j'essaie d'exécuter le projet, j'obtiens le problème suivant:

dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire
Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/87DA70B6-49BF-441E-BD81-F4A80B0792CF/data/Containers/Bundle/Application/2E414EA8-7E54-4D71-9295-566D4FAAADE2/test.app/Frameworks/MyFramework.framework/MyFramework
Reason: image not found

Je pensais que les projets Cocoa Touch Framework étaient intrinsèquement dynamiques et incluaient donc toutes les dépendances.

Quelqu'un peut-il me dire pourquoi cela se produit et comment je pourrais être en mesure de le réparer? Est-ce un problème avec les CocoaPods ou est-ce que je manque quelque chose?

Je suis un noob pour empiler le débordement alors faites le moi savoir si vous avez besoin de plus d'informations de moi.

Merci!

28
demandé sur bneu 2016-03-10 23:56:19

2 réponses

Malheureusement, CocoaPods ne prend pas en charge l'utilisation avec Cocoa Touch Framework target. J'ai trouvé quelques références à cela en creusant leurs problèmes sur GitHub:

Nous ne soutenons pas vraiment l'intégration des Pods dans les cibles du cadre...
- neonichu {[7] } le 4 novembre 2015

Et

...pour que cela "fonctionne", CP devrait faire une analyse récursive des dépendances dans votre projet Xcode et aussi s'assurer que vous n'utiliseriez jamais le produit de construction dans un autre contexte.
- neonichu le 7 Juillet 2015


Jusqu'à présent, j'ai trouvé deux façons de traiter le problème:

La bonne façon est de créer une nouvelle spécification de pod pour votre framework et de l'apporter à votre projet principal via CocoaPods. Cela résout tous les problèmes que CococaPods A avec le graphique de dépendance et est la solution recommandée par les développeurs de CocoaPods.

Le moyen Le plus facile est d'inclure les gousses de votre cadre dans votre projet principal. Cela semble fonctionner, mais franchement, je ne sais pas pourquoi. C'est le Podfile de mon projet de test:

platform :ios, '9.0'
use_frameworks!

def myfirstframework_pods
    pod 'Alamofire', '~> 3.0'
end

target 'MyApp' do
    pod 'SwiftKeychainWrapper', '~>1.0'
    myfirstframework_pods
end

target 'MyFirstFramework' do
    myfirstframework_pods
end
22
répondu Dallas Edwards 2016-05-24 16:09:27

Essayez d'ajouter la dépendance sur Alamofire dans le podspec du framework comme ci-dessous

Pod::Spec.new do |s|

# Other setup 

# Dependencies
s.dependency "Alamofire"
# Other dependencies if any
1
répondu humblePilgrim 2018-05-04 04:52:04