Скрыть код в статической библиотеке (iOS Obj-C) - PullRequest
10 голосов
/ 13 июля 2011

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

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

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

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

Спасибо !!!

Ответы [ 3 ]

18 голосов
/ 13 июля 2011

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

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

Кстати:

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

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

4 голосов
/ 23 ноября 2015

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

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

  1. ' Обрезать символы отладки при копировании ' на ДА
  2. 'Формат отладочной информации 'до' DWARF с файлом dSYM '
  3. ' Создание символов отладки 'до' NO '
  4. ' Символы, скрытые по умолчанию 'до' ДА '

Комупосмотрите, для чего они нужны, см. Справочник по настройкам сборки Apple

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

0 голосов
/ 22 февраля 2014

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

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

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...