Mac App не будет работать за пределами Xcode, отсутствует библиотека? Использование библиотеки ORSSerial
Мое приложение создается без ошибок и предупреждений и прекрасно работает в Xcode 7.2.1. Но когда я архивирую его и пытаюсь открыть за пределами XCode, значок кратковременно мигает, и я получаю эту ошибку:
Application Specific Information:
dyld: launch, loading dependent libraries
Dyld Error Message:
Library not loaded: @rpath/ORSSerial.framework/Versions/A/ORSSerial
Referenced from: /Users/USER/Desktop/*/Ascel AE20125 Controller.app/Contents/MacOS/Ascel AE20125 Controller
Reason: image not found
Binary Images:
0x7fff626f2000 - 0x7fff62729007 dyld (360.19) <9D05FDF4-65CE-3B53-86D4-ABE1A5BF35F3> /usr/lib/dyld
0x7fff962e5000 - 0x7fff962e5fff com.apple.Cocoa (6.11 - 22) <0A634D46-B468-3CBC-B2A0-16C381C11BF2> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
0x7fff9c462000 - 0x7fff9c7b6ff7 com.apple.Foundation (6.9 - 1256.1) <66106CC9-9D97-3846-88D8-4BF6BB508296> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
Как я могу скомпилировать свое приложение, чтобы оно работало вне Xcode? Эта проблема возникает, когда я пытаюсь открыть свой скомпилированный.app без среды XCODE.
Приложение сделано с использованием Swift.
2 ответа
Чтобы немного расширить ответ @NickolayOlshevsky, необходимо убедиться, что ORSSerial.framework копируется во внутреннюю папку Frameworks вашего приложения. На этапах сборки вашего проекта вы должны убедиться, что есть фаза (например, Embed Frameworks), которая копирует ORSSerial.framework в целевую папку Frameworks:
Другой способ настроить это - добавить платформу в раздел "Встроенные двоичные файлы" на вкладке "Общие" целевых параметров:
Если вы откроете примеры проектов PacketParsingDemo или RequestResponseDemo, которые поставляются с ORSSerialPort, вы увидите, что эта настройка настроена правильно в этих проектах.
Скорее всего, вы копируете библиотеку в выходной пакет только для конфигурации отладки и пропускаете ее для выпуска. Проверьте настройки проекта / цели.