У меня возникли проблемы с компиляцией моего приложения (проект приложения Xcode), когда моя инфраструктура (проект инфраструктуры Xcode) связана и файлы добавлены в фреймворк (не используется в приложении).Включить проект рамки в мой проект в Xcode 8
Что я сделал:
- Создать папку MyProject
- Создание Xcode одного вида проекта (проект MyApp) -> выход это папка MyApp внутри папки MyProject, содержащий все данные
- Создать Xcode (проект MyFramework) -> вывод этой папки MyFramework внутри папки MyProject, содержащей все данные
- Создание рабочего пространства и импорт обоих проектов в рабочую область -> вывод этого файла .xcworkspace в папке MyProject
Таким образом, после этого у меня есть иерархия:
-> MyProject
---> MyApp
---> MyFramework
---> MyWorkspace.xcworkspace
Затем на вкладке «Общие» проекта MyApp я добавил в встроенные двоичные файлы моей рамки. Это связало мою инфраструктуру с моим приложением, и когда я скомпилировал ее, мое приложение стало нормально работать по телефону.
После этого я добавил в инфраструктуру одну пару классов Objective-C .h/.m, добавив их в целевую среду фрейма (скомпилированные источники имеют .m-файл, заголовочный файл выбран как открытый).
Когда я пытаюсь скомпилировать и запустить приложение еще раз на устройстве, я получаю ошибку:
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_UNIRest", referenced from:
objc-class-ref in TMSCommunicationManager.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ли вы строите свою структуру после добавления новых классов? – shallowThought
Пытался самостоятельно построить фреймворк (выбор виртуального устройства/симулятора/телефона), и он не справляется с той же ошибкой. Также попытался удалить класс, затем ошибка становится ошибкой, указывающей на другой класс. Затем я пытаюсь удалить все, кроме заголовка, сгенерированного фреймворком, и он компилируется отлично и отлично работает на устройстве. – Aleksandar
Я подозреваю: вам нужно создать устройство, если вы хотите запустить приложение на устройстве, так как вы настроили «Build Active Architecture Only = YES» (в настройках сборки) для вашей текущей конфигурации. Вероятно, 'Debug'. – shallowThought