Разработка для iOS: как запустить приложение iPhone 4.2 на симуляторе iPhone 3.2? - PullRequest
2 голосов
/ 30 декабря 2010

Я углубляюсь в разработку iOS и создаю простое приложение, которое будет поддерживать iOS версии от 3.2 до 4.2.Я довольно хорошо протестировал его в последней версии XCode на симуляторе 4.2, но я хотел бы также имитировать его работу на устройстве iOS 3.2.Прочитав несколько руководств по этому вопросу, мне удалось загрузить и установить более старую версию xcode вместе со старым 3.2 SDK, но когда я строю свой проект в более старой версии Xcode, я получаю массу ошибок из-за всех iOS 4.2функциональность, которую не поддерживает более старая версия Xcode.Я слабо связываю все фреймворки 4.2, но все равно получаю ошибки.Как я могу заставить мое приложение 4.2 успешно работать в этой старой версии XCode и заставить его работать в симуляторе iPhone 3.2?

Большое спасибо за вашу мудрость!

Ответы [ 5 ]

1 голос
/ 29 июня 2011

Что касается второй проблемы, связанной с его запуском на iPhone версии 3.2 в симуляторе iOS: я боролся с этим - Xcode 4.0.2, установил цель развертывания на iOS 3.2, установил проект на iPhoneтолько, но когда я пытаюсь запустить в iOS Simulator под версией 3.2, симулятор превращается в симулятор iPad, даже если он работал как симулятор iPhone, пока я не выбрал номер версии.

Это расстроило менякакое-то время.Но я прочитал это, и это имело смысл:

http://en.wikipedia.org/wiki/IOS_version_history

iPhone никогда не работал 3,2;это был релиз только для iPad.Таким образом, несмотря на то, что в меню «Аппаратное обеспечение»> «Версия» в Симуляторе iOS содержится список «3.2» (7W367A), предполагается, что этот параметр предназначен только для совместимости с «Аппаратное обеспечение> Устройство> iPad».Симулятор применяет это правило, когда он превращает меня в симулятор iPad.Это имеет смысл.

Так что мне понадобится симулятор 3.1.3 или старше, чтобы запустить мое приложение, как будто оно работает на iPhone поколения 3.x.Это не доступно в моей сборке Xcode 4, поэтому для меня теперь имеет смысл, что я просто не могу ничего с этим поделать, если не считать более старых сборок Xcode на моей машине.

1 голос
/ 30 декабря 2010

Вам необходимо добавить #ifdef __IPHONE_4_2 ... #endif вокруг любых строк, которые ссылаются на функции, которые существуют только в 4.2.Таким образом, компилятор 3.2 будет строить ваше приложение так, как если бы эти строки не существовали.

Вы должны быть чрезвычайно осторожны, чтобы структурировать эти операторы таким образом, чтобы они точно отражали фрагменты кода, которые будут отключеныпри запуске встроенной для 4.2 сборки на 3.2, в противном случае нет особого смысла.

Это создаст ваше приложение без какой-либо из функциональных возможностей 4.2, поэтому фактически не проверяется, является ли ваша слабаяссылки и т. д. верны, это просто тестирование того, как работает резервный код 3.2.

Вероятно, он выдаст несколько предупреждений о функциях / методах, которых вы не знали, которых не было в 3.2.Убедитесь, что к ним добавлен соответствующий запасной код.

(кстати, известно, что Apple отклоняет приложения iPhone с базовым SDK 3.2. Если вы идете, вам нужно поддерживать как минимум 3.1.3до 4.0)

1 голос
/ 30 декабря 2010

Вы выбрали вариант установки базового SDK на 3.0 или другие? Потому что тем самым вы можете запускать новые API, доступные в iOS 4.2, и на более старых ОС.

Приветствия

0 голосов
/ 09 февраля 2011

Вы можете запускать симуляторы 3.2 и 4.x в последнем Xcode (не одновременно, конечно!). Вы должны установить «Базовый SDK» на 4.2 и «iOS Deployment Target» на 3.2. Теперь вы можете выбрать 3.2 Simulator (или более позднюю версию) из всплывающего меню «Overview» в верхнем левом углу окна проекта. Также вы можете выбрать версию симулятора в самом приложении iOS Simulator через пункт меню «Hardware-> Version».

0 голосов
/ 31 декабря 2010

Я думаю, что правильный путь заключается в следующем: 1. Если вы разрабатываете для версии 4.2, то у вас должна быть установлена ​​версия Xcode 4.2.2. При создании приложения на устройствах с ОС 4.0 и 3.2 выберите базовый SDK для 4.2 и разверните целевое устройство до минимальной версии, которую вы хотите поддерживать, скажем 3.2.Это сделает ваш код совместимым с более низкой версией, а ваше приложение будет загружено в более низкие версии.

Также для поддержки новых API в более низких версиях вы можете перейти по ссылке: http://www.marco.org/1648550153

Я надеюсьэто тебе поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...