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

Префикс Статическая библиотека iOS

Я создаю статическую библиотеку iOS (согласно https://github.com/jverkoey/iOS-Framework). Я полагаюсь на SBJson и AFNetworking. Я хотел бы включить эти библиотеки, чтобы избежать проблем с версией и простоты установки; для этого мне нужно прикрепить эти библиотеки, чтобы избежать конфликтов имен.

Как я могу префикс других статических библиотек простым способом?

В идеале это будет частью моего процесса сборки. Менее идеально, но приемлемо, советы о том, как реорганизовать и переименовать разумным способом.

4b9b3361

Ответ 1

Единственное безопасное решение (кроме того, что это вообще не делается) заключается в создании любых зависимостей с префиксом для всех символов.

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

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

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

Для справки мы используем это с Nimbus для создания заголовков префикса Nimbus: https://github.com/jverkoey/nimbus/blob/master/scripts/generate_namespace_header

Это позволяет вам распространять .framework с префиксной версией внедренного Nimbus.

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