Подтвердить что ты не робот

Как создать статическую библиотеку Objective-C?

У меня есть несколько классов Objective-C, которые я использую в настоящее время как в приложении Cocoa (Mac OS X), так и в приложении Cocoa -Touch (iOS). В настоящее время, когда я обновляю эти классы, мне нужно скопировать эти обновленные файлы .h и .m в оба проекта. Не так уж важно, но я буду использовать их во многих проектах.

Итак, я хочу построить эти классы в статической библиотеке Objective-C. А затем связывайтесь с этой библиотекой во всех других проектах.

Есть ли способ создать статическую библиотеку, чтобы она работала как с приложениями Cocoa, так и с Cocoa -touch?

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

Итак, как мне правильно построить статическую библиотеку Objective-C? Должен ли я создавать статическую библиотеку Cocoa -Touch и Cocoa? Или я могу просто сделать это? Как это делается?

Есть ли хорошо подготовленные учебники по этому вопросу?

Я искал в Интернете и, похоже, не нашел исчерпывающего учебника по этому вопросу, поэтому я задал этот вопрос здесь, надеясь, что большой ответ будет опубликован, и этот вопрос может послужить ресурсом для меня и для будущие вопросы.

4b9b3361

Ответ 1

Для XCode 5. Эти ответы кажутся немного устаревшими. Здесь вы можете увидеть основные шаги http://www.raywenderlich.com/41377/creating-a-status-library-in-ios-tutorial. Но Xcode 5 делает для вас намного больше работы и теперь работает практически так, как вы этого хотите.

1.Создание нового приложения статической библиотеки в Xcode New Static Library in Xcode

2. Вы можете удалить любые файлы, которые он создает, и добавить свои собственные. Добавьте свои методы и т.д. Code Code Code

3. Небольшая проблема со Static Libraries заключается в том, что вы можете только строить либо для устройства, либо запускать в симуляторе. Поэтому нам нужно создать библиотеку, поддерживающую архитектуру ARM и i386, для этого нам нужно создать универсальный двоичный файл (чтобы он поддерживал симулятор и сборки устройства).

Создайте новую цель (Файл > Создать > Цель). New Target

4. Выберите "Новая цель", затем добавьте новую фазу сборки ( "Редактор" > "Добавить фазу сборки" ). "Добавить запуск" Script "Фаза сборки" New Build Phase

5.Выберите фазу сборки и введите Script из этой ссылки в окно запуска Script. https://gist.github.com/sponno/7228256

Run Script Code

6. Теперь вам нужно построить каждую архитектуру (имитатор и устройство iOS)

6.2. Выберите нашу библиотеку, а затем устройство iOS, нажмите "Сборка или запуск" (Command + B)

6.3. Затем для симулятора (выберите значок библиотеки в самом верхнем левом углу Xcode, а затем iOS Simulator) enter image description here

7. Теперь вы хотите создать значок BullsEye > Устройство iOS. Это будет совокупная цель и объединит наши две библиотеки в новый универсальный файл.

8. Давайте посмотрим, все ли это работает. Развернув папку "Продукты" в левом дереве, щелкните правой кнопкой мыши файл, заканчивающийся на ".a" и "Show in Finder"

9.Если все это работает, вы должны увидеть следующие файлы в finder. Вы увидите Library .a file and include files

10. Последний шаг прост, просто перетащите файл "library.a" и включите папку в новый проект Xcode. enter image description here

enter image description here

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

(любая оценка оценивается) или, пожалуйста, отредактируйте мое сообщение, чтобы улучшить ясность.

** БОНУСНЫЕ ПУНКТЫ *** Установите VVDocumenter https://github.com/onevcat/VVDocumenter-Xcode и используйте это для документирования любых файлов header.h, которые вы поделитесь с библиотекой.

Теперь любой, кто использует вашу библиотеку, может выбрать + щелчок, чтобы открыть контекстно-зависимую справку для вас.

Context Aware Help based on header file

Ответ 2

В итоге я нашел этот учебник, и он действительно работал действительно красиво. Если кто-то все-таки захочет предложить помощь, сделайте это, и я, скорее всего, выберу его и пометьте как принятый ответ.

Ответ 3

(используя учебник как отправную точку)

теперь создайте вторую цель в библиотеке xcodeproj для другой ОС.

настроить каждый целевой параметр sdk с помощью файла xcconfig (по одному для каждой ОС). повторно используйте эти файлы xcconfig в своих других библиотеках. это также позволяет легко управлять глобальными настройками сборки.

настроить ссылки и ссылки зависимостей в своих целях (приложениях), как обычно, но выбрать правильную целевую библиотеку.

добавить общую цель в проект библиотеки для простой метакомпилирования/простого обслуживания.

- или -

сделать все это, введя слой сценариев или создав инструмент пользовательской сборки.

Ответ 4

Я также нашел это "Создание статической библиотеки с Jenkins" , что действительно хорошо. Переговоры о том, как правильно настроить статическую библиотеку, как заставить Jenkins автоматически ее создавать, а затем помещать полученные файлы .a и .h куда-нибудь, с чего вы можете их схватить.

Объедините это с CocoaPods или Maven (я еще этого не сделал), и у вас может быть красивая симпатичная экосистема.