Framework Cocoa Touch Swift avec library embarquée

Bonjour,


 


je travaille sur une suite d'applications qui contiennent des modules en communs.


 


Je souhaite ranger les modules communs dans un Cocoa Touch Framework.


Ce framework pourrait aussi contenir les libraries Alamofire et SwiftyJSON car elles sont grandement utilisées au seins des modules.


 


Actuellement et malgré les nombreux tutos, articles, etc. lus sur internet, je n'arrive pas à  mettre une solution stable en place.


 


  • Est-il possible d'intégrer les frameworks Alamofire et SwiftyJSON au sein du framework maison ou vaut-il mieux les intégrer au différents projets utilisant le framework (ils en auront aussi besoin individuellement) ?

 


  • Est-il possible de générer un framework fonctionnant sur le simulateur et sur téléphone (quelque soient les méthodes: subproject ou pas, bibliothèque dynamique ou statique, fat library) ?

 


 


Je vous remercie par avance toutes aides et reflexions apportées


Et bonne journée  :D


Réponses

  • AliGatorAliGator Membre, Modérateur
    mars 2015 modifié #2
    Te prend pas la tête avec ces questions (légitimes mais galères si tu veux tout faire à  la main) et laisse CocoaPods faire le travail pour toi. C'est fait pour et tu perdras moins de cheveux.
  • M'enfin, les dragons n'ont pas de cheveux, même les spécimens nains chinois !

  • CéroceCéroce Membre, Modérateur
    Je suis d'accord avec Ali. Rien que la gestion des différentes versions des dépendances de la framework maison peut être un casse-tête.
  • zoczoc Membre
    Pour moi un framework n'a d'intérêt que s'il est partagé (Par exemple sur MaxOS X dans /Library/Frameworks), car cela entraine un gain de place sur disque (mais bon de nos jours) et un gain de place en mémoire car le segment de code n'est chargé qu'une seule fois (mais bon... voir ci-dessus).

    A partir du moment ou un framework est "embedded" dans une application tous ces avantages disparaissent et au final on galère plus pour pas grand chose.

    Donc comme mes camarades : CocoaPods...

    Après, évidemment si le but est de le distribuer sans le code source, ça change tout.
  • yoannyoann Membre

    Je dois être le seul à  toujours préférer des framework bien propre quitte à  les intégrer dans le bundle de l'application en privé...


     


    Au moins on a quelque chose de propre, d'indépendant, avec seulement le nécessaire de visible en terme de .h et en plus on gagne du temps à  la compilation.


     


    Bref, vive les vrai framework !


  • MalaMala Membre, Modérateur
    mars 2015 modifié #7

    A ma connaissance une application publiée sur le Mac App Store ne peux rien installer dans /Library/Frameworks.


     


    Les frameworks même embarqués ont une grande vertue: Divide & Conquer. Quand je vois des boites où un simple stagiaire peut compiler l'ensemble d'un projet et se tailler avec le code source sur une clé Usb cela me laisse sans voix. Et c'est pourtant du vécu dans une société  classée "secret défense".


  • AliGatorAliGator Membre, Modérateur
    mars 2015 modifié #8
    Si tu publies pour OSX, les frameworks sont assez courants.
    Si tu publies pour iOS, tu ne peux utiliser les frameworks dynamiques que si tu supportes au minimum iOS8.

    Si tu veux absolument générer un framework dynamique, et l'intégrer toi-même manuellement ensuite dans tes projets comme n'importe quel autre framework système (plutôt que de laisser CocoaPods faire l'intégration du framework dans ton projet) tu peux toujours utiliser CocoaPods pour définir tes fichiers à  inclure dans ton framework, ses dépendances, etc...

    Il suffit d'utiliser :
    • soit le plugin cocoapods-packager (qui utilise un podspec décrivant ta lib)
    • soit cocoapods-rome (qui utilise un Podfile pour décrire les pods/libs que tu veux inclure dans ton framework)
    Chacun de ces plugins permettent de générer le framework dynamique pour toi automatiquement, bien configuré et tout.
  • Bon je vais retenter avec Cocoapods.


    J'ai déjà  mis en place le private repo pour le framework maison.


     


    Du coup certaines classes de mon framework utilisent les framework tierces Alamofire et SwiftyJSON et certaines classes de mon projet aussi.


     


    Dois-je créer intégrer les framework tierces avec cocoapods dans le framework ?


    et / ou dans le projet ?


  • Bon voici mes avancées :

     


    mon framework intègre les lib tierces avec le système de subproject drag'n'droppées.


    J'intègre ensuite mon framework maison dans mon projet produit grâce à  CocoaPods.


     


    Problème : j'ai une classe de mon projet produit qui doit importer la lib Alamofire mais ne la trouve pas.


     


    Comment rendre accessibles les lib tierces intégrées dans le framework au projet produit ?


Connectez-vous ou Inscrivez-vous pour répondre.