2010-10-22 5 views
1

У меня есть некоторые проблемы с созданием статических библиотек.iPhone статические библиотеки

Скажем, у меня есть статическая библиотека A, которую я создал, и я включил ее в статическую библиотеку B с соответствующими заголовочными файлами. Мне нужно создать статическую библиотеку C, которая будет моей последней библиотекой, и она должна включать статическую библиотеку B, которая неявно включает статическую библиотеку A. Поэтому мне нужно скрыть как детали реализации библиотеки A и B в библиотеке C, но она должна не видны конечному пользователю. Будет предоставлен только интерфейс.

1) Итак, пусть моя статическая библиотека A использует некоторые зависимости, которые являются некоторыми библиотеками в SDK. Так что мне нужно импортировать в мой последний проект, хотя я включил библиотеку C?

В настоящий момент у меня возникают проблемы с сборкой, когда я пытался выше.

2) Можем ли мы объединить сторонние статические библиотеки внутри наших статических библиотек и распространять только нашу библиотеку?

3) Скажем, мы загружаем сторонний код. Используя это, мы создаем статические библиотеки. Можем ли мы распространять статическую библиотеку, используя сторонний код. Если это так, нам нужно выставить код?

4) Как принятие статической библиотеки в магазине приложений. Это как обычный процесс? (Я имею в виду проекты расслоения со статическими библиотеками)

Спасибо,

С уважением,

Dilshan

ответ

4

Wow. Четыре вопроса. Если бы я мог получить 4 раза репутацию. :)

  1. Да, вам необходимо включить фреймворки в проект App. Связывание структуры в статической библиотеке создает только ссылки на символы, которые не существуют. Они должны быть разрешены во время ссылки на приложение, связываясь в рамках с окончательным приложением.
  2. Полагаю, вы думаете о продаже SDK статических файлов lib и файлов заголовков. Да, технически возможно связать все это с одной гигантской библиотекой (подробности см. В разделе ar (5)) и отправить библиотеку и выбрать файлы заголовков, но см. Ответ №3.
  3. Зависит от лицензии для сторонней библиотеки. Если у вас есть вопросы, обратитесь к юристу.
  4. Большинство приложений имеют статическую библиотеку, связанную с приложением. Например, подавляющее большинство бесплатных приложений включает AdMob или аналогичные рекламные пакеты, которые распространяются как статическая библиотека. Статическая библиотека сама по себе не нарушает политику подачи Apple, но библиотека может нарушать политику, такую ​​как включение недокументированных API. Если статическая библиотека нарушает политику отправки, приложение, которое ее использует, будет отклонено, даже если приложение не использует эту функцию.

Кстати, вы не можете полностью «скрыть» интерфейсы библиотеки A и B (из вашего примера.) Если бы вы могли, Apple бы и не было бы возможности использовать недокументированные API. Все, что вы действительно можете сделать, это оставить их вне заголовков и документации.

+0

ОК спасибо за ваш ответ Джон. Отличный ответ. – Dilshan