XCode 4 et library
groumpf
Membre
Salut,
j'aimerai faire une lib static avec XCode 4 et je ne sais pas par où commencer. Je ne trouve pas d'infos dans la doc Apple et les tuto sur le web parlent souvent de XCode 3.
Comme c'est la première lib que je fais je n'ai pas toutes les notions. Je pense qu'il me faut générer une lib device et une lib simulator. Ca m'est égal qu'elles soient dans le même fichier.
J'ai commencé par faire 2 targets mais je ne vois pas quoi changer pour dire que c'est du device (en fait par défaut) ou du simulateur.
Ou alors il faut créer 2 schemes ?
Comme je suis aussi obligé d'utiliser des XIB, j'envisage de les livrer à part, c'est possible ?
Merci pour toute info.
j'aimerai faire une lib static avec XCode 4 et je ne sais pas par où commencer. Je ne trouve pas d'infos dans la doc Apple et les tuto sur le web parlent souvent de XCode 3.
Comme c'est la première lib que je fais je n'ai pas toutes les notions. Je pense qu'il me faut générer une lib device et une lib simulator. Ca m'est égal qu'elles soient dans le même fichier.
J'ai commencé par faire 2 targets mais je ne vois pas quoi changer pour dire que c'est du device (en fait par défaut) ou du simulateur.
Ou alors il faut créer 2 schemes ?
Comme je suis aussi obligé d'utiliser des XIB, j'envisage de les livrer à part, c'est possible ?
Merci pour toute info.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Et malheureusement (à mon grand regret et celui de beaucoup), Xcode ne propose pas nativement ensuite de fusionner les deux produits. La seule solution est donc de créer une "Build Phase" de type "Exécution de script" et que ce script exécute l'outil en ligne de commande "lipo", cet utilitaire permettant de fusionner 2 produits d'architectures différentes dans un même binaire (donc en l'occurrence la librairie pour architecture armv6, armv7 et celle poru x86 dans un seul et même binaire libToto.a) pour qu'elle puisse être linkée avec des applis pour l'une ou l'autre des archis (et donc pour une app que tu compileras pour Simulator ou pour Device)
Il me reste les xib que je voudrais inclure, j'ai essayé de les copier dans le framework en bundle mais à l'exécution il ne peut pas le charger (j'aurais été étonné que ça marche ...).
Bon au pire je livre le xib à côté, mais ça ne fait pas très propre.
MAJ: bon pour le moment j'ai trouvé une méthode qui m'évite d'utiliser un nib.
Je pensais que ça résoudrait mon problème de chargement de ressources dans le bundle du framework mais non !
Quand j'utilise NSBundle bundleWithIdentifier:, il me retourne toujours nil.
J'ai trouvé ce fil http://lists.apple.com/archives/cocoa-dev/2007/Dec/msg01259.html qui semble donner une solution mais j'avoue que je ne comprends pas bien. Ils disent d'utiliser bundleWithPath: mais quel path je peux bien donner ?
Quand on génère une appli avec un framework, que devient le bundle du framework, il est intégré dans le bundle de l'appli iphone (je ne m'intéresse qu'à l'iphone) ?
Ce que je voudrais c'est pouvoir utiliser des fichiers ressources dans le code de ma librairie.
En fait j'ai vraiment un gros doute sur le fait que ca soit judicieux d'essayer de distribuer une lib sous la forme d'un framework. Je me demande si je ne ferais pas mieux de faire 2 lib statiques et de livrer les .h et les ressources à côté.
La question s'est toujours posée.
Si ton code a besoin de ressources (images, fichiers .string, voire des .xib), alors les Frameworks s'imposent. Elles sont également pertinentes si les classes sont nombreuses, parce qu'on a vite fait d'oublier un des fichiers.
Mais je fais comment pour charger un fichier ressource du framework à partir du code du framework ?
Je rappelle que c'est un framework perso installé dans ~/Library/Frameworks.