31 votes

Pouvez-vous référencer des fichiers Xib à partir de bibliothèques statiques sur l'iPhone?

Dans mon application, j'ai actuellement tout mon code séparé dans une bibliothèque statique, pour le rendre plus facile à mettre en place le projet xcode cibles pour l'application et pour les tests unitaires pour mon code. Le problème c'est que je veux mettre la plupart de mes xib fichiers dans la bibliothèque statique, mais il semble que lorsque je lance mon application et essayez de faire référence à la xib il ne peut pas le trouver, sauf si elle est incluse dans l'application réelle de la cible au lieu de la bibliothèque statique cible. Est-il possible d'avoir xib fichiers et autres ressources incluses dans les bibliothèques statiques qui peuvent être référencés par le code dans la même bibliothèque, et si oui, comment?

40voto

Justicle Points 6439

Non, il n'est pas possible, parce qu'une bibliothèque statique n'est pas le même comme un "bundle".

Un bundle est un répertoire qui peut contenir toutes sortes de fichiers y compris les fichiers de ressources (xib), les fichiers exécutables et les bibliothèques statiques. Il existe sur le système de fichiers en tant que groupe de fichiers individuels.

Une bibliothèque statique est un fichier unique qui contient des classes, le code et les variables qui ont été liés ensemble par la bibliothèque créateur. Il ne "comprend" pas d'autres fichiers, c'est essentiellement une base de données de code compilé.

Bien qu'il serait possible de mettre les données de l'xibs là, Xcode aurait aucun moyen de savoir qu'il était là, il semble que pour eux en tant que fichiers individuels sur le système de fichiers.

Sous Mac OS, vous pouvez créer un "Cadre", qui est essentiellement un ensemble de code, les ressources, les paramètres, etc, qui peut être réutilisée par plusieurs projets. Toutefois, Apple ne semble pas soutien personnalisé cadre de la création de l'iPhone OS.

Faisceaux http://developer.apple.com/iphone/library/documentation/CoreFoundation/Conceptual/CFBundles/CFBundles.html

Les Bibliothèques Statiques http://en.wikipedia.org/wiki/Static_library

14voto

Justicle Points 6439

Répondre au commentaire (ne rentre pas dans la boîte de commentaires)

Pas de soucis, j'ai essayé de faire à peu près la même chose que vous pour la dernière semaine, je voudrais expédier un "cadre" de xibs, inclure des fichiers et des .un libs à un client, sans leur donner tout le code source. Je ne pouvais pas trouver un bon moyen de le faire avec des faisceaux soit.

Pour quelque raison que ce soit, Apple sont particulièrement obtus à ce sujet - je ne vois pas une raison pour eux d'être ainsi dans le cas de la statique des bibliothèques (bibliothèques dynamiques assez juste).

Ma solution pour le moment est de créer manuellement un dossier package "Foo" qui contient les sous-dossiers suivants:

  1. "inclure" -> mis .h les fichiers ici
  2. "res" -> mis .xib fichiers ici
  3. "lib" -> contient "iphoneos" & "iphonesimulator" les sous-dossiers de chaque avec libtruc.un

Puis zip et envoyer au client. Ensuite, le client:

  1. Ouvre le paquet, où jamais ils aiment.
  2. Ajoute le "res" dossier sous le groupe de ressources.
  3. Les changements suivants les paramètres de la cible:
    D'autres Linker Flags = -Objc -lfoo
    L'en-tête des Chemins de Recherche = /include
    Bibliothèque des Chemins de Recherche = /lib/$(PLATFORM_NAME)

Je peux probablement d'automatiser la création d'un paquet avec quelques étapes de génération à ma fin, mais le client est coincé avec quatre légèrement délicat étapes à mettre en place.

4voto

Ronen Morecki Points 331

J'ai trouvé une solution parfaite pour cela qui fait tout ce qui précède automatiquement et plus https://github.com/kstenerud/iOS-Universal-Framework C'est un plugin xCode

Cela a fonctionné pour moi comme un charme, cela ne fonctionne que pour XCode 4 et supérieur

2voto

Tushar Vengurlekar Points 3169

Oui, vous pouvez. ajoutez un fichier xib dans votre bibliothèque comme vous le feriez pour n'importe quel projet normal. Ensuite, dans le projet de bibliothèque cible, ajoutez le fichier xib dans la section copie des fichiers avec le fichier .a. Dans votre projet principal où vous utilisez la bibliothèque, faites glisser et déposez le fichier xib où se trouve le fichier .a pour la bibliothèque.

0voto

Ivan Vučica Points 5418

Lors de la distribution, vous pouvez également créer un kit de développement SDK. JSON.cadre de fait cette, dans leur SVN, et j'ai répliqué avec succès cette. Vous pouvez voir comment cela a été fait dans http://hltypes.svn.sf.net/ dans le hltypes-ios.xcodeproj et iOS dans le dossier de projet.

Principalement, vous devez installer dans votre dossier de création, et vous devez copier le format de SDKSettings.plist. Puis ajouter le chemin du SDK dans "Sdk Supplémentaires" liste en application du projet. La baisse de composite Kits sont la nécessité de redémarrer Xcode 3.x chaque fois que ce mini-kit de développement est mis à jour, et Xcode l'insistance sur la construction d'un composite SDK créé à partir de la Pomme de base du SDK et de votre mini-SDK (ce qui signifie que vous devez attendre un peu).

Projet d'Application doit encore avoir .xib et d'autres ressources ajoutées manuellement.

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