Симулятор iOS на Mac использует архитектуру i386, а не armv7?

У меня есть несколько статических библиотек, которые я создал для использования на архитектурах armv7. Когда я пытаюсь использовать их в проекте iOS, который я тестирую на симуляторе iphone 5.0, я получаю сообщения об ошибках, говорящих мне о undefined symbols for architecture i386 в моих статических библиотеках.

Итак, я предполагаю, что это означает, что симулятор iphone хочет, чтобы библиотеки были скомпилированы для i386? В чем тогда смысл симулятора - почему он не эмулирует архитектуру armv7?

Значит, единственный способ протестировать свои статические библиотеки — это подключить физическое устройство iOS и запустить его?

Или я ошибся?


person KaiserJohaan    schedule 24.10.2011    source источник
comment
Из-за этой проблемы в проекте Android используется эмулятор QEMU. Это намного медленнее, чем симулятор iOS.   -  person Kevin Vermeer    schedule 25.10.2011


Ответы (4)


Итак, я предполагаю, что это означает, что симулятор iphone хочет, чтобы библиотеки были скомпилированы для i386? В чем тогда смысл симулятора - почему он не эмулирует архитектуру armv7?

Вы сами ответили на свой вопрос. Это симулятор, а не эмулятор. Следовательно, это программа для Mac OSX, работающая на архитектуре i386. Если вы также скомпилируете свои статические библиотеки для i386, вы сможете использовать их в симуляторе.

person jrturton    schedule 24.10.2011

Я не очень уверен, но i386 предназначен для симулятора, а armv7 — для устройств, которые вы подключили к своей машине. .

person mAc    schedule 24.10.2011

На самом деле вы можете скомпилировать приложение с помощью инструмента командной строки Xcode, используя архитектуру i386 (есть также способ запустить его в пользовательском интерфейсе Xcode, изменив настройки сборки).

xcodebuild -sdk iphonesimulator6.1 -arch i386 VALID_ARCHS="i386 armv7 armv7s" clean install

Запустите эту команду в каталоге, в котором у вас есть файл projectName.xcodeproj.

Вот разбивка сценария:

-sdk iphonesimulator6.1 // Build the app on iPhone simulator 6.1
-arch i386 // Build your app using i386 architecture
VALID_ARCHS="i386 armv7 armv7s" // Specify these architectures are valid
clean install // Clean all the builds then re-build and install
person Jingjie Zhan    schedule 20.08.2013
comment
Спасибо, это сработало для меня с новыми требованиями к Facebook Open Graph при отправке объектов на проверку. - person estemendoza; 01.05.2014

Если вы хотите попробовать симуляторы с i386, просто выберите =‹ iPhone 5.

person Bruno Muniz    schedule 04.09.2017