Question

Dans mon application, j'ai actuellement tout mon code séparé en une bibliothèque statique, pour le rendre plus facile à mettre en place les objectifs du projet Xcode pour l'application réelle et pour les tests unitaires pour mon code. Le problème est que je veux mettre la plupart de mes fichiers xib dans la bibliothèque statique aussi bien, mais il semble que quand je lance mon application et essayer de faire référence à la xib il ne peut pas le trouver à moins qu'il soit inclus dans le réel l'objectif de l'application au lieu de la cible de la bibliothèque statique. Est-il possible d'avoir des fichiers et d'autres ressources xib incluses dans les bibliothèques statiques qui peuvent être référencées par le code dans cette même bibliothèque, et si oui, comment?

Était-ce utile?

La solution

Non, il est impossible, car une bibliothèque statique n'est pas la même que celle d'un « paquet ».

Un paquet 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 qui contient des classes, le code et les variables qui ont été reliées entre elles par le créateur de la bibliothèque. Il ne « contient » d'autres fichiers, il est essentiellement une base de données de code compilé.

Bien qu'il soit possible de mettre les données pour les xibs là-dedans, Xcode n'aurait aucun moyen de savoir qu'il était là, comme il les cherche sous forme de fichiers individuels sur le système de fichiers.

Sous Mac OS, vous pouvez créer un « cadre » qui est essentiellement un paquet de code, les ressources, les paramètres, etc., qui peuvent être réutilisés par plusieurs projets. Cependant, Apple ne semble pas soutenir la création de cadre personnalisé pour iPhone OS.

Bundles https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

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

Autres conseils

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

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

Pour une raison quelconque, Apple sont particulièrement obtus à ce sujet -. Je ne vois pas une raison pour eux d'être dans le cas des bibliothèques statiques (bibliothèques dynamiques assez juste)

Ma solution est maintenant pour créer manuellement un dossier paquet « Foo » qui contient les sous-dossiers suivants:

  1. "inclure" -> fichiers mis .h ici
  2. "res" -> mettre les fichiers .xib ici
  3. "lib" -> "contient iphoneos" et "sous-dossiers de iphonesimulator" chacun libtruc.a

Ensuite zip ce et envoyer au client. Le client alors:

  1. décompresse le paquet où qu'ils aiment.
  2. Ajoute le dossier "res" dans le groupe de ressources.
  3. modifier les paramètres cibles suivants:
    Autres drapeaux Linker = -ObjC -lfoo
    En-tête des chemins de recherche = / include
    Bibliothèque de chemins de recherche = / lib / $ (PLATFORM_NAME)

Je peux probablement automatiser la création de package avec quelques étapes de construction à ma fin, mais le client est coincé avec quatre étapes un peu fiddly pour se mettre en place.

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

Il a travaillé pour moi comme un charme, Il ne fonctionne que pour XCode 4 et au-dessus

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

Lorsque vous distribuer pouvez également créer un SDK. JSON.framework a fait cela dans leur SVN, et je répliqué avec succès cela. Vous pouvez voir comment cela a été fait dans http://hltypes.svn.sf.net/ le hltypes-ios.xcodeproj et le dossier iOS dans le projet.

Principalement, vous devez « installer » dans votre dossier de construction, puis vous devez copier le SDKSettings.plist spécialement formaté. Ensuite, ajoutez le chemin du SDK dans la liste des « kits de développement supplémentaires » dans le projet d'application. Le seul inconvénient de SDKs composites sont la nécessité de redémarrer 3.x Xcode chaque fois que ce mini-SDK est mis à jour, et l'insistance de Xcode sur la construction d'un SDK composite créé à partir du SDK de base d'Apple et votre mini-SDK (qui signifie que vous devez attendre un peu) .

projet d'application doit encore avoir .xib et d'autres ressources ajoutées manuellement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top