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

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

Другие вопросы по тегам