2010-04-05 10 views
11

J'ai des difficultés à créer un bundle pour mon application et à placer des fichiers dans le bundle.Comment créer mon propre bundle dans Xcode, pour l'application iPhone

Par exemple, Facebook a développé un ensemble pour les applications iPhone utilisant leur infrastructure. De la même manière, je veux aussi créer un bundle qui peut être réutilisé pour de nombreuses applications.

Mes questions sont les suivantes:

  • quelles mesures dois-je suivre pour créer un paquet pour tout type d'application?
  • ce qui devrait être pris en compte lors de la création d'un ensemble?

Répondre

11

Tout d'abord, puisque votre question est étiquetée iPhone, vous ne pouvez inclure du code dans vos offres groupées sur l'iPhone. Donc, fondamentalement, vous ne pouvez utiliser que des paquets pour emballer des images et des fichiers son et d'autres données statiques. Lorsque vous créez un nouveau projet dans XCode, il existe une option permettant de regrouper la cible (sous Framework & Library), mais un ensemble d'actifs est simplement un répertoire avec un suffixe .bundle. Je le mien produis avec ce petit script:

#!/bin/bash 
echo "Building assets bundle." 
if [ -d ./MyAssets.bundle ]; then 
    rm ./MyAssets.bundle/* 
else 
    mkdir ./MyAssets.bundle 
fi 
find ./assets -type f -print0 | xargs -0 -J% cp % ./MyAssets.bundle 

(Je ne suis pas pirate bash, alors cela peut sans doute être améliorée dans d'innombrables façons de recevoir des suggestions.!)

Cela prend une hiérarchie de dossiers et aplatit (Je déteste les hiérarchies) dans un seul répertoire nommé MyAssets.bundle. Je déclenche ce script à partir d'une phase de construction distincte dans les projets qui importent le bundle, afin que les modifications soient automatiquement suivies. Si vous voulez apprendre à créer des bundles de framework, c'est un peu plus compliqué (vous devez suivre certaines conventions et inclure des informations dans les plistes), mais pour les bundles iPhone, c'est à peu près tout ce que vous devez savoir et faire.

+0

Est-il possible de charger des fichiers à partir de ce paquet xib, parce que je ne l'ai pas trouvé un moyen de le faire ? – vakio

+0

Vous pouvez utiliser le bundle approprié dans [[NSBundle mainBundle] loadNibNamed: @ "MyViewController" propriétaire: self options: nil] et [aViewController initWithNibName: @ "MyViewController" bundle: nil] (nul signifie simplement le bundle principal) – Felixyz

+0

vous ne pouvez pas avoir de bundle externe, n'est-ce pas? Comme NSBundle * bundle = someFunctionToLoadExternalBundle(); [bundle loadNibNamed: @ "name" propriétaire: self options: nil]; J'ai googlé et seulement trouvé que cela ne peut pas être fait. Juste vérifier si vous avez découvert un moyen miracle de le faire ou quelque chose, mais je sais que cela n'arrivera probablement jamais. – vakio

8

Vous pouvez le faire aussi:

Faire un dossier dans le Finder, ajouter des fichiers, renommer à bundlename.bundle

glisser dans Xcode - succès!

d'accès, utilisez la forme de PathToMainBundle + «/bundlename.bundle »

Source: https://stackoverflow.com/a/5277452/736384