Framework qui contient un framework

Bonjour


 


La version 1.0 de mon application Herbier est achevée.


Merci à  tous, sans qui j'aurais abandonné.


 


Bon, maintenant je vais peaufiner mon code.


Il y aura encore plein de questions.


 


La première.


 


Est-il possible de construire un framework RNPgSql qui fait lui même appel à  un framework PGSQLKit ?


 


PGSQLKit est une couche au dessus de la librairie de base pour l'accès à  une base de données d'un serveur PostgreSQL.


 


Je voudrais construire un framework  RNPgSql, couche au dessus de PGSQLKit.


 


L'objectif pour moi est de masquer l'implémentation (pourquoi ne pas dire implantation en français ?) des méthodes, et donc la structure de la base de données.


 


J'ai essayé de créer un framework via Cocoa framework. ça marche, jusqu'à  la validation qui n'accepte pas, avec un message que je ne comprends pas :


“RNFW” does not contain a single–bundle application or contains multiple products. Please select another archive, or adjust your scheme to create a single–bundle application.


 


Même chose d'ailleurs avec la création d'un framework vide.


 


Je sais, je n'ai qu'à  lire la doc. Je l'ai fait, mais je ne comprends pas.


 


Merci


Réponses

  • AliGatorAliGator Membre, Modérateur
    octobre 2013 modifié #2

    Est-il possible de construire un framework RNPgSql qui fait lui même appel à  un framework PGSQLKit ?

    Oui
     

    l'implémentation (pourquoi ne pas dire implantation en français ?)

    Parce que ça n'a pas du tout le même sens. L'implantation c'est la façon dont c'est planté (pour des plantes, pour des cheveux dans un cuir chevelu, ...). L'implémentation ça n'a rien à  voir ^^
     

    Je sais, je n'ai qu'à  lire la doc. Je l'ai fait, mais je ne comprends pas.

    Qu'est ce que tu ne comprends pas ?

    Pourtant tout est expliqué ici et surtout ici...
    Si tu nous disais ce que tu as lu comme doc, ce que tu as suivi comme tuto et comme étapes, et à  quelle étape ça coince, ça nous aiderait à  t'aider ;)
  • Bon, je reprends à  la base.


     


    Je veux créer un framework RNFW.


    J'ouvre Xcode.


    "Create a new Xcode project"


    "Cocoa Framework" : RNFW


    J'ajoute :


    - (void)essai;


    et


    - (void)essai { NSLog(@essai); }


     


    Je rends RNFW public dans le "Target Membership"


     


    "Run"


     


    Tout est ok.


     


    Mais comment sortir RNFW.framework à  l'extérieur de Xcode et le copier dans /Library/Frameworks par exemple...


     


    Je n'ai pas trouvé le moyen de le faire. Je dis bien "copier", pas faire un lien (ce qui revient à  garder RNFW.framework dans Xcode) !


     


    Merci


     


     


     


     


  • Bonjour.


     


    Je veux créer un framework, l'utiliser dans une application à  moi et l'envoyer à  un copain pour qu'il l'utilise dans sa propre application sur une autre machine.


     


    Procédure #1.


    Je crée une application MyFW de type Cocoa Framework. OK.


    Je fais Product > Archive


    Puis Organizer > Distribute > Save Built Product me propose d'envoyer MyFW  2013-10-22 16.45 dans le répertoire de mon choix, en l'occurrence :~/Library/Frameworks/


     


    Dans mon application EssaiFW je fais Add Files de ~/Library/Frameworks/MyFW  2013-10-22 16.45


     


    J'obtiens :



    dyld: Library not loaded: /Library/Frameworks/MyFW.framework/Versions/A/MyFW
    Referenced from: /Users/rn/Library/Developer/Xcode/DerivedData/EssaiFW-bxbwcantvkjxmudnbhurupswlwhw/Build/Products/Debug/EssaiFW.app/Contents/MacOS/EssaiFW
    Reason: image not found


    Procédure #2.


    Par contre si je vais chercher MyFW.framework dans ~/Library/Developer/...


    ça marche ?! Et je peux l'envoyer au copain.


     


    La procédure #1 me semble plus logique, mais elle ne marche pas.


    La procédure #2 me semble tordue, mais elle marche.


     


    Je dois rater une marche, mais laquelle ?


     


    Explications SVP ?


     


  • AliGatorAliGator Membre, Modérateur
    Bizarre ta procédure 1... "Organizer > Distribute > Save Built Product" n'est pas fait pour ça...

    Normalement tu build ton framework (en Release par exemple) puis tu va chercher le product buildé dans le Finder (ou tu ouvres le groupe "Products" de ton projet qui génère le framework, tu vas voir le produit fini ici) et tu l'envoies à  ton pote directement.
  • Je reviens à  la procédure 1.


     


    J'ai donc créé mon framework MyFW.framework. J'en fais une copie que j'installe dans EssaiFW/EssaiFW/ à  côté de AppDelagate.h et autres.


    Et  aussi dans EssaiFW/ à  côté de EssaiFW.


     


    Dans les Build Settings de l'application EssaiFW je définis les répertoires de recherche de frameworks :



    $(inherited)
    "$(SRCROOT)"
    "$(SRCROOT)/EssaiFW"

    J'ai toujours la même erreur :



    dyld: Library not loaded: /Library/Frameworks/MyFW.framework/Versions/A/MyFW
    Referenced from: /Users/rn/Library/Developer/Xcode/DerivedData/EssaiFW-bxbwcantvkjxmudnbhurupswlwhw/Build/Products/Debug/EssaiFW.app/Contents/MacOS/EssaiFW
    Reason: image not found

    Tout se passe comme si xcode ne savait pasrechercher un framework ailleurs que dans /Library/Frameworks et refuse de chercher aussi


    dans le répertoire que je lui propose ?!

  • MalaMala Membre, Modérateur
    novembre 2013 modifié #7


    J'ai toujours la même erreur :



    dyld: Library not loaded: /Library/Frameworks/MyFW.framework/Versions/A/MyFW
    Referenced from: /Users/rn/Library/Developer/Xcode/DerivedData/EssaiFW-bxbwcantvkjxmudnbhurupswlwhw/Build/Products/Debug/EssaiFW.app/Contents/MacOS/EssaiFW
    Reason: image not found

    Tout se passe comme si xcode ne savait pas rechercher un framework ailleurs que dans /Library/Frameworks et refuse de chercher aussi dans le répertoire que je lui propose ?!




    Pour le chargement dynamique, les frameworks doivent être compilés en définissant "Installation Directory" correctement. Par exemple, si tu l'embarques dans le repertoire framework du bundle de ton appli, tu dois mettre: @executable_path/../Frameworks


     


    Dans ton cas, j'ai l'impression que ton appli de test essaie de charger ton framework à  partir de /Library/Frameworks/ et non ~/Library/Frameworks/.


  • MalaMala Membre, Modérateur


     


    Dans les Build Settings de l'application EssaiFW je définis les répertoires de recherche de frameworks :




    Build -> compilation.


    dyld -> chargement dynamique à  l'exécution.

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