2010-04-05 3 views
11

У меня возникли трудности с созданием пакета для моего приложения и размещением файлов в комплекте.Как создать свой собственный пакет в Xcode для приложения iPhone

Например, Facebook разработал пакет для приложений iPhone, используя их фреймворк. Точно так же я также хочу создать пакет, который можно использовать повторно для многих приложений.

Мои вопросы:

  • какие шаги я должен следовать, чтобы создать пакет для любого применения?
  • Что нужно позаботиться при создании пакета?

ответ

11

Прежде всего, поскольку ваш вопрос помечен iPhone, вы можете включать только код в свои пакеты на iPhone. Таким образом, вы можете использовать пакеты только для упаковки изображений и звуковых файлов и других статических данных.

Когда вы создаете новый проект в XCode, есть возможность сделать цель пакетом (в рамках Framework & Library), но комплект активов - это просто каталог с суффиксом .bundle. Я генерировать мину с этой небольшой скрипт:

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

(я не Баш хакер, так что это может быть улучшено бесчисленными способами Предложения приветствуются.!)

Это занимает иерархию папок и разглаживает ее (Я ненавижу иерархии) в один каталог, который называется MyAssets.bundle. Я запускаю этот сценарий из отдельной фазы сборки, когда в проектах, которые импортируют пакет, так что изменения автоматически отслеживаются.

Если вы хотите узнать, как создавать фреймворки, это немного сложнее (вы должны следовать определенным соглашениям и включать информацию в plists), но для пакетов iPhone это почти все, что вам нужно знать и делать.

+0

Можно ли загрузить XIb файлы из этого набора, потому что я не нашел способ сделать это ? – vakio

+0

Вы можете использовать соответствующий пакет как в [[NSBundle mainBundle] loadNibNamed: @ "MyViewController" владелец: self options: nil] и [aViewController initWithNibName: @ "MyViewController" bundle: nil] (nil просто означает основной комплект) – Felixyz

+0

Но вы не можете иметь внешний комплект, верно? Как NSBundle * bundle = someFunctionToLoadExternalBundle(); [bundle loadNibNamed: @ "name" owner: self options: nil]; Я googled и только обнаружил, что это невозможно. Просто проверяйте, открыли ли вы чудесный способ сделать это или что-то еще, но я знаю, что это, вероятно, никогда не произойдет. – vakio

8

Вы можете сделать это тоже:

Создайте папку в Finder, добавить в него файлы, переименовать его в bundlename.bundle

сопротивления в Xcode - успех!

доступа, используйте форму PathToMainBundle + «/ bundlename.bundle»

Источник: https://stackoverflow.com/a/5277452/736384