Скрыть код в статической библиотеке (iOS Obj-C)

Я работаю над созданием статической библиотеки iOS, которую я хочу продать. Я прошел шаги для исходных построений и создал выход .a/.h.

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

ОДНАКО, когда строка кода в моей библиотеке сбрасывает приложение (как я уже сказал, оно все еще находится в разработке), отладчик показывает мне весь файл класса (.m). Что с этим?

Я действительно не понимаю, что все идет в статические библиотеки, и я не уверен, что скомпилировал эту версию как для симулятора, так и для устройства. Может ли это что-то с этим делать? Если да, может кто-нибудь объяснить, почему?

Спасибо!!!

Ответ 1

Не волнуйтесь, ваш исходный код не включен в архив (.a).

Xcode достаточно умен, чтобы найти файл исходного кода на вашем компьютере на основе информации отладки, встроенной в файл. Если вы создаете библиотеку с помощью конфигурации "Release" (или иным образом изменяете настройки сборки, чтобы отлаживать символы были удалены) и не имеют источника в любом месте на машине, разработчику придется прибегнуть к их знаниям x86 или ARM чтобы выяснить, как работает ваш код.

Кстати:

  • Так как во время выполнения много работы Objective-C, в вашей библиотеке будет отображаться много имен классов и имен селекторов. Вот как это работает. Вы можете попытаться запутать его, но я думаю, что ваше время лучше потратить на создание более полезного кода для продажи.

  • Если вы хотите предоставить пользователям статическую библиотеку для разработки iOS, вам нужно будет создавать версии для iOS Simulator (x86) и устройства iOS (arm), а затем использовать lipo, чтобы объединить их в единая жирная статическая библиотека. Найдите вокруг "статическую библиотеку жира lipo xcode" для разных способов сделать это. Некоторые решения более сложны, чем другие.

Ответ 2

У меня была такая же проблема. @benzado прав, о чем он упомянул. Но мне пришлось отключить отладочные символы для решения проблемы. Для этого мне пришлось изменить Настройки сборки библиотеки проекта перед сборкой, как указано ниже.

Выберите цель и перейдите в Настройки сборки. Set

  • ' Отладка отладочных символов во время копирования' до ДА
  • ' Отформатированный формат отладки' до DWARF с файлом dSYM
  • ' Генерировать символы отладки' до НЕТ '
  • ' Символы, скрытые по умолчанию', до YES '

Чтобы узнать, для чего они предназначены, обратитесь Справочник по настройке Apple

И создайте библиотеку, используя конфигурацию "Release". Это сработало для меня.

Ответ 3

Если у вас есть проект для статической библиотеки со всеми файлами .m на вашем компьютере, то каждая копия этой библиотеки (.a файл) будет символизироваться ее файлом .m при отладке в xCode.

xCode не ищет подходящий файл .m через весь ваш диск. Он знает место оригинального проекта. Поэтому, если вы распространяете только библиотеку, она полностью скрывает ваш исходный код.

Чтобы убедиться, что вы можете скопировать вашу библиотеку в какой-то новый проект, тогда очистите файл .m в проекте библиотеки. С этого момента любая попытка отладки методов библиотеки даст пустой файл на экране.

enter image description here