Как я могу простым способом префиксировать другие статические библиотеки?
В идеале, это было бы частью моего процесса сборки. Менее идеальными, но приемлемыми являются советы о том, как провести рефакторинг и переименовать в здравом уме.
Я также буду использовать CocoaPods, чтобы они обрабатывали зависимости для тех, у кого они есть, но хотели бы иметь возможность распространять фреймворк, отличный от CocoaPods.
- personLiyan Chang  schedule17.07.2012
comment
Одно слово: НЕТ! Нет ничего плохого в наличии внешних зависимостей.
- personTill  schedule17.07.2012
comment
Мне кажется, что многие фреймворки делают это, чтобы упростить установку. Один пример: Dropbox переименовал SBJson в DBJson.
- personLiyan Chang  schedule17.07.2012
comment
Нет простого способа сделать это. Тщательный поиск и замена работали в прошлом для меня.
- personkels  schedule18.09.2012
Единственное безопасное решение (кроме того, чтобы вообще этого не делать) — строить любые зависимости с префиксом для всех символов.
Самый простой метод префикса — классический «найти и заменить». Это подвержено ошибкам, поэтому рекомендуется нажать .a с помощью nm -a и просмотреть результаты на предмет любых символов без префикса.
Второй, гораздо более безопасный метод — использовать двухпроходный процесс компиляции.
Первый проход создает зависимый проект и запускает nm для вывода всех символов в заголовочный файл.
Второй проход снова строит зависимый проект, но на этот раз со сгенерированным файлом заголовка префикса, импортированным в предварительно скомпилированный заголовок. Этот заголовок префикса должен использоваться везде, где вы ссылаетесь на символы из зависимости в вашей структуре, чтобы правильно ссылаться на переименованные символы.
Это позволяет вам распространять .framework со встроенной версией Nimbus с префиксом.
Теперь вы можете связать полученный файл .a со своей структурой и безопасно избежать любых конфликтов компоновщика, когда сторонний разработчик неизбежно связывает свою собственную версию зависимости со своим проектом.
personfeatherlessschedule13.10.2013
comment
Это здорово, как и ваш репозиторий iOS-Framework. Было бы здорово, если бы вы каким-то образом добавили это в репозиторий. Большое спасибо за оба!
- personaranasaurus; 05.11.2013
comment
Я хотел бы увидеть раздел об этом, с немного более подробной информацией для новичков.
- personPaul Solt; 15.11.2013
Ваша запись потрясающая, хотя я обнаружил, что она не совсем работает, когда вашими внешними зависимостями были другие библиотеки .a. На самом деле он не связывает все эти символы из .a с вашей целью ext, пытаясь придумать способ обойти это.
- personMatt Foley; 17.07.2014
@featherless: небольшая ошибка с генерацией вашего пространства имен: в вашем пространстве имен строк вы исключаете на основе .eh. Поскольку grep принимает регулярные выражения, это будет соответствовать любой строке, содержащей eh в середине. Точка должна быть экранирована, чтобы соответствовать правильно. Кроме того, сценарий работает замечательно.
- personDavid Liu; 24.01.2015
comment
Использует ли решение Nimbus методы категории пространства имен?
- personmalhal; 09.07.2016
comment
@aranasaurus Я довольно долго следил за вашим блогом, но у меня ничего не получилось. Будет здорово, если вы предоставите образец проекта. Спасибо
- personCullen SUN; 23.08.2016