iOS универсальный фреймворк не сборка i386?
Я использую фантастический скрипт iOS Universal Framework для создания своей собственной платформы, и он некоторое время прекрасно работал. Я не уверен, когда именно, но, похоже, по пути прекратил сборку i386. Приложения, использующие созданный фреймворк, больше не работают с симулятором.
у меня есть VALID_ARCHS = arm64 armv7 armv7s i386 x86_64
задавать. А также ONLY_ACTIVE_ARCH = NO
, Скрипт сборки не выдает никаких ошибок или логов. Тем не менее, в конце концов я получаю тощий фреймворк без i386 или x86_64, и поэтому любой проект, зависящий от этого фреймворка, имеет ошибки компоновщика при сборке симулятора.
Дополнительная информация:
- Использование скрипта Mk8 последней сборки из основного репо.
- Архивирование, а не сборка, как предполагают некоторые ошибки.
Есть идеи?
3 ответа
У меня была такая же проблема недавно. Мне пришлось настроить несколько параметров сборки, чтобы снова собрать для i386 и x86_64. Тот, который заставил меня работать, был, когда я снял флажок "Запускать сценарий только при установке" в фазе запуска сценария запуска.
Это может быть один из моих более расплывчатых ответов, и я не смогу конкретно ответить на ваш вопрос, потому что вы говорите об iOS Universal Framework, но, возможно, я смогу пролить свет на свой опыт.
Я нашел это здание для обоих i386
а также x86_64
архитектуры одновременно (с одним вызовом xcodebuild) даже при правильном valid-archs
а также only-active-arch
просто не работает.
Я решил конкретную проблему создания универсальной статической библиотеки со всеми 5 арками в проекте Kiwi, явно собрав x86_64 и объединив вывод с предыдущим шагом с lipo.
Ниже приведены комментарии к моему запросу.
Для явной сборки симулятора x86_64 потребовалось немного проб и ошибок, xcodebuild, похоже, не может собрать i386 и x86_64 одновременно, поэтому я добавил [дополнительные] шаги специально для x86_64.
Ограничение VALID_ARCHS, ARCHS и IPHONEOS_DEPLOYMENT_TARGET для сборки 64-битного симулятора, похоже, помогло.
ARCHS = 'x86_64' VALID_ARCHS = 'x86_64' IPHONEOS_DEPLOYMENT_TARGET = '7.0'
Под капотом универсальный фреймворк просто создает статическую библиотеку с символическими ссылками и определенной структурой (чтобы выглядеть как.framework). Я предполагаю, что iOS Universal Framework имеет те же проблемы, что и библиотека Kiwi. Я уверен, что больше людей имеют эту проблему...
Вам нужно собрать скрипт для всех archs arm64 armv7 armv7s i386 x86_64, а затем создать новый файл с помощью команды lipo.
Для создания arm64 armv7 armv7s используйте платформу iphone /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer, а для i386 x86_64 используйте симулятор /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/ Разработчик.
Я использую это для создания одной библиотеки C++.
Пример:
$(CC) $(CFLAGS) -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer $(CPP_SRC_DIR)/*.cpp
$(XCODE_AR) rvs $(IOS_TARGET_A_DIR)/$(LIB_NAME).x86_64.a $(IOS_TARGET_O_DIR)/x86_64/*.o
#Build fat library
$(XCODE_LIPO) -create $(IOS_TARGET_A_DIR)/*.a -output $(IOS_TARGET_FAT_DIR)/lib.a
Надеюсь, это поможет.