2010-04-05 6 views
11

Mam trudności z utworzeniem pakietu dla mojej aplikacji i umieszczeniem plików w pakiecie.Jak utworzyć własny pakiet w Xcode, dla aplikacji iPhone'a

Na przykład, Facebook opracował pakiet dla aplikacji iPhone'a wykorzystujących ich framework. W ten sam sposób chcę również utworzyć pakiet, który może być ponownie użyty dla wielu aplikacji.

Moje pytania są następujące:

  • jakie kroki powinienem postępować, aby utworzyć pakiet dla każdego rodzaju aplikacji?
  • czym należy się zająć przy tworzeniu pakietu?

Odpowiedz

11

Przede wszystkim, ponieważ twoje pytanie jest oznaczone jako iPhone, możesz dołączyć kod tylko do swoich pakietów na iPhonie. Zasadniczo można używać tylko pakietów do pakowania zdjęć i plików dźwiękowych oraz innych danych statycznych.

Po utworzeniu nowego projektu w XCode istnieje możliwość utworzenia pakietu docelowego (w ramach biblioteki Framework &), ale pakiet zasobów jest po prostu katalogiem z przyrostkiem .bundle. I wygenerować moje z tego małego skryptu:

#!/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 

(nie jestem bash haker, więc może to prawdopodobnie można poprawić na wiele sposobów sugestie mile widziane.!)

Dzieje hierarchię folderów i spłaszcza go (Odrzucam hierarchie) do jednego katalogu o nazwie MyAssets.bundle. Wywołuję ten skrypt z oddzielnej fazy kompilacji w projektach, które importują pakiet, dzięki czemu zmiany są automatycznie śledzone.

Jeśli chcesz dowiedzieć się, jak tworzyć pakiety frameworku, jest to nieco bardziej skomplikowane (musisz przestrzegać określonych konwencji i zawierać informacje w plists), ale w przypadku pakietów na iPhone'a to wszystko, co musisz wiedzieć i zrobić.

+0

Czy to możliwe, aby załadować pliki XIB z tego pakietu, bo nie znaleźli sposób, aby to zrobić ? – vakio

+0

Możesz użyć odpowiedniego pakietu zarówno dla właściciela [[NSBundle mainBundle] loadNibNamed: @ "MyViewController": self options: nil] i [aViewController initWithNibName: @ "MyViewController" bundle: nil] (zero oznacza tylko główny pakiet) – Felixyz

+0

Ale nie możesz mieć zewnętrznego pakietu, prawda? Podobnie jak NSBundle * bundle = someFunctionToLoadExternalBundle(); [bundle loadNibNamed: @ "name" owner: self options: nil]; Mam googleed i tylko stwierdziłem, że nie da się tego zrobić. Po prostu sprawdzam, czy odkryłeś cudowny sposób na zrobienie tego lub coś takiego, ale wiem, że prawdopodobnie nigdy się to nie wydarzy. – vakio

8

Można to zrobić też:

Utwórz folder w Finder, dodać do niego pliki, zmienić go bundlename.bundle

przeciągnij do Xcode - sukces!

dostępu, należy użyć formy PathToMainBundle + „/ bundlename.bundle”

Źródło: https://stackoverflow.com/a/5277452/736384