Plusieurs framework dans une application dont certains sont communs
Pyroh
Membre
Salut à tous.
C'est un peu dur à formuler de manière concise ce problème que j'ai en ce moment. C'est donc assez difficile pour moi de faire des recherches dessus. Alors si le sujet a déjà été traité ici je m'en excuse.
Prenons un cas imagé mais concret :
J'ai un framework A qui comporte principalement des helpers (oui CoreGeometry est un bon exemple).
Je code un framework B qui a besoin de A. Jusque là c'est simple.
Maintenant dans mon application C j'inclue le framework B mais j'ai aussi besoin de A je dois donc inclure A et B mais A est inclus dans B donc A est dupliqué :
Comment je peux faire pour que le A dont à besoin C est celui qui est inclus dans B.
Faire un peu comme ça :
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est plus clair avec une image :
Cocoapods gère ce cas de figure.
Faut-il supposer que ton framework A est physiquement inclut dans B ? Si oui tu peux faire en sorte de na pas l'inclure.
Si non je penses que tu peux ajouter le chemin vers sont framework A en ajoutant le chemin des les rpath de ton application lors de la compilation (ca fait un peu bricolage). Je n'ai jamais testé cette solution en tout cas.
Apple n'autorise pas d'utiliser des frameworks tiers A qui inclus en interne d'autres frameworks B. Il faut que les frameworks soient tous "à plat", et pas en poupée russe.
Du coup ton problème se résoud tout seul : tu inclus juste A, B et C, à plat, et aucun de ces 3 frameworks ne doit inclure l'un des autres à l'intérieur de lui-même. Ou encore plus simple : tu utilises CocoaPods.
Bon ben il ne me reste plus qu'à me mettre à CocoaPods alors...
Je preÌfeÌ€re Carthage et jusque là j'avais tout fait pour éviter de m'y mettre mais on fera avec.
Une piste pour bien débuter ?
Voici un exemple chez moi
Arborescence :
CBDTreeData
|---CBDTreeData.podspec
|---Classes
|--- ici, tes dossiers, tes .h, tes .m
Voilà le fichier `CBDTreeData.podspec`
C'est là que tu indiques tes dépendances de Pods.
Tu vois que je gère un versionning et que les sources sont sur bitbucket, mais tu peux tout faire en local.
Ce sera plus simple pour toi de tout faire en local (je pense), car sinon, il faut que tu crées un repo avec tous les .podspec de tes différentes versions.
Ensuite, tu mets un fichier Podfile dans le projet où tu veux utiliser tes frameworks, tu lui dis quels pod tu veux et tu run `pod install`.
à‰videmment, avant ça tu dois installer CocoaPod ;-)
C'est galère mais après ça vaut le coup !