45 votes

Comment construire un Objectif-C bibliothèque statique?

J'ai quelques Objective-C classes, je suis actuellement en utilisant à la fois une application Cocoa (Mac OS X) et un Cacao-Touch application (iOS). Actuellement, quand je l'ai mise à jour de ces classes, j'ai copier ces mises à jour .h et .m fichiers pour les deux projets. Pas que les grandes d'accord, mais je vais les utiliser dans de nombreux autres projets.

Donc, je veux construire ces classes dans un Objectif-C bibliothèque statique. Et puis lier avec la bibliothèque dans tous les autres projets.

Est-il un moyen de construire une bibliothèque statique tel qu'il fonctionne à la fois avec le Cacao et le cacao-touch applications?

J'ai essayé de construire un Cacao bibliothèque statique avec ces classes, mais j'ai plusieurs erreurs lorsque je tente de le relier à l'encontre de cette bibliothèque dans mon application Cocoa, et je suis sûr qu'ils sont venant du fait que je ne suis pas en train de faire.

Alors, comment puis-je construire un Objectif-C bibliothèque statique le droit chemin? Dois-je construire à la fois un Cacao-Touch et le Cacao bibliothèque statique? Ou puis-je simplement faire une? Comment est-ce fait?

Y a-bien-fait des tutoriels sur ce sujet?

J'ai cherché sur le web et n'arrive pas à trouver un tutoriel complet sur ce sujet, donc j'ai posé la question ici, dans l'espoir qu'une grande réponse sera mise en ligne et cette question peut servir comme une ressource pour moi et pour l'avenir questionneurs.

26voto

John Ballinger Points 4193

Pour XCode 5. Ces réponses semblent un peu hors de date. Vous pouvez voir les principales étapes ici http://www.raywenderlich.com/41377/creating-a-status-library-in-ios-tutorial . Mais Xcode 5 fait beaucoup plus de travail pour vous et travaille aujourd'hui à près comme vous le souhaitez.

1.Créer de nouveaux Statique de la Bibliothèque de l'Application dans Xcode New Static Library in Xcode

2.Vous pouvez supprimer tous les fichiers qu'il crée et ajouter votre propre. Ajoutez vos méthodes, etc. Code Code Code

3.Petit problème avec les Bibliothèques Statiques, c'est que vous ne pouvez construire que ce soit pour de l'appareil ou de l'exécuter dans le simulateur. Nous avons donc besoin de créer une bibliothèque qui prend en charge le BRAS et les Architectures i386, pour ce faire, nous avons besoin de créer un binaire universel (donc il va appuyer sur simulateur et sur l'appareil construit).

Créer une nouvelle cible (Fichier > Nouveau > Cible). New Target

4.Sélectionnez Nouvelle Cible, puis ajouter une nouvelle phase de construction (Éditeur > Ajouter une Phase de construction > Ajouter Exécuter le Script Phase de construction New Build Phase

5.Sélectionnez la phase de construction et entrez le script à partir de ce lien dans l'exécution d'un script de fenêtre. https://gist.github.com/sponno/7228256

Run Script Code

6.Maintenant, vous avez besoin pour construire chaque architecture (simulateur et l'appareil iOS)

6.2.Sélectionnez notre bibliothèque, puis l'Appareil iOS, cliquez sur créer ou exécuter (Commande + B)

6.3.Alors pour le Simulateur (sélectionnez l'Icône de la Bibliothèque tout en haut à gauche de Xcode et puis le Simulateur iOS) enter image description here

7.Maintenant, vous voulez construire la Bulle de l'icône > Appareil iOS. Ce sera la cible globale et combiner nos deux bibliothèques dans un nouveau fichier universel.

8.Permet de voir si cela a fonctionné. Élargi le dossier "Produits" dans l'arbre à gauche, clic droit sur le fichier se terminant par ".un" et "Afficher dans le Finder"

9.Si tout cela fonctionne, vous devriez voir les fichiers suivants dans le finder. Vous verrez Library .a file and include files

10.La dernière étape est facile, il suffit de la faire glisser "de la bibliothèque.un fichier et le dossier comprend dans votre nouveau projet Xcode. enter image description here

enter image description here

Dans votre nouveau projet, vous ne avez rien à faire d'autre que d'importer les fichiers d'en-tête qui souhaitent l'utiliser, mais vous n'avez pas à changer le lien entre les drapeaux, ou de l'en-tête des chemins de recherche. Le tout fonctionne.

(tous les commentaires apprécié) ou veuillez modifier mon post pour plus de clarté.

** POINTS BONUS * Installer VVDocumenter https://github.com/onevcat/VVDocumenter-Xcode et l'utilisation de ce document un en-tête.h les fichiers que vous voulez partager avec la bibliothèque.

Maintenant, n'importe qui qui est de l'utilisation de votre bibliothèque pouvez opter+cliquez pour faire apparaître le contexte courant de l'aide pour vous classes.

Context Aware Help based on header file

12voto

Alex Points 21247

J'ai fini par trouver ce tuto et ça fonctionne vraiment bien. Si quelqu'un voudrais encore offrir de l'aide, merci de le faire et je vais probablement upvote et de le marquer comme " la accepté de répondre.

11voto

justin Points 72871

(à l'aide du didacticiel comme un point de départ)

maintenant, créez une deuxième cible dans la bibliothèque xcodeproj pour les autres OS.

configurer chaque cible le sdk de paramètres à l'aide d'un xcconfig fichier (un pour chaque OS). la réutilisation de ces xcconfig vos fichiers dans d'autres libs. cela permet aussi facile mondial de contrôle des paramètres de construction.

configurer les liens de dépendance et de références dans vos objectifs (apps) comme d'habitude, mais sélectionner la bibliothèque.

ajouter une cible globale pour le projet de bibliothèque pour la simple méta-compilation/facile d'entretien.

-- ou --

tout faire par l'introduction d'une couche de programmation ou de créer une version personnalisée de l'outil.

2voto

wildcat12 Points 46

J'ai aussi trouvé cette "Construction d'une Bibliothèque Statique avec Jenkins" qui est vraiment bon. Discussions sur la façon de bien l'installation d'une lib statique, comment obtenir Jenkins pour construire automatiquement et placez ensuite le fichier .un et .h les fichiers dans un endroit où vous pouvez les saisir à partir de.

Combinez cela avec CocoaPods ou Maven (je n'ai pas fait encore) et vous pourriez avoir un assez joli petit écosystème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X