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

Приложение iOS со Static Lib ВСЕГДА падает при запуске Ad Hoc Archive Build. Не удается воспроизвести в Xcode Debugger

У нас есть приложение, построенное со статическим Lib, которое мы также создаем для распространения. Приложение и Lib работают нормально в отладчике Xcode или при загрузке на устройстве с помощью сеанса отладки Xcode. Приложение ALWAYS аварийно завершает работу, как только мы создаем сборку Ad Hoc Archive на устройстве. Операторы журнала консоли указывают, что он сбой в коде Lib, но отчет о сбое не символизирует код Lib.

  • Невозможно воспроизвести в Xcode Simulator.
  • Guard malloc, Guard Edges ничего не показывают (но они работают только в симуляторе).
  • Отсутствие утечек
  • Использование Xcode 4.3.2
  • Приложения цели 4.3 или новее.
  • Lib нацелен на 3.0 или новее.
  • Другие флаги компоновщика = -ObjC
  • Lib установлен как "Необязательный" в целевом "Link Binaries With Libraries".
  • Поддержка Thumb (используя LLVM)

Видя 2 исключения на консоли, которые могут быть полезны, но до сих пор не превращали ничего в сеть, что очень помогает в этом:

Application 'x' exited abnormally with signal 12: Bad system call: 12 (mostly)
Application 'x' exited abnormally with signal 12: Bad system call: 11 (rarely)

Мы видели комментарий в другом месте, что статические библиотеки с рекурсией имеют проблемы. Но у нас нет рекурсии в нашей Либе.

Препятствуйте, нужно больше идей.

4b9b3361

Ответ 1

Выяснилось! после 4-х дней стучащих головок на стол. Мы точно не знаем, почему это работает, но это так. В случае, если это полезно для других, это настройки, которые разрешили это для нас. Установите их в разделе "Развертывание" в настройках сборки проекта статической библиотеки:

SET "STRIP LINKED PRODUCT" (STRIP_INSTALLED_PRODUCT) = NO
SET "STRIP STYLE" = DEBUGGING SYMBOLS.

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

Если у кого-то есть мысли о том, почему эти настройки lib исправить, вы можете прокомментировать это здесь.

Ответ 2

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

В настройках сборки перейдите в компилятор LLVM 4.2 - раздел "Генерация кода", найдите параметр "Уровень оптимизации" и измените параметр "Отпуск" с "Самый быстрый", "Самый маленький" [-O] на "Нет" [-O0].

Надеюсь, это поможет!

Ответ 3

Вероятность очень велика, что ваши настройки сборки отличаются между AdHoc (Release) и Debug. Вы дважды проверяли все значения настроек сборки? Особенно посмотрите настройки ARC (автоматический подсчет ссылок).

Ответ 4

Отладка, загружая с помощью отладчика Xcode, сборку Production (возможно, для Release Build с очень разными настройками оптимизации и генерации кода, чем сборка Debug, которую вы сейчас тестируете).