2012-09-18 1 views
10

Начиная с Xcode 4.5, возможность создания устройств armv6 больше не предоставляется (iPhone/iPod touch 1-го и 2-го поколения). Это означает, что нет новых версий нашего приложения для iPhone 2G и 3G, что очень неудачно. Кто-нибудь знает, будет ли обходной путь? Я действительно не вижу никаких технических причин для этого.iOS: Нет абсолютно никакого способа построить для armv6 в Xcode 4.5?

ответ

6

У вас может быть установлена ​​несколько версий xcode. Раньше это было исправление, требующее использования более старой функции xcode.

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

Если у вас есть один проект, с которым вы хотите работать в обеих версиях XCode, тогда вам может понадобиться управлять отдельными файлами управления проектами с помощью трюков управления версиями и/или перетасовки файлов.

Я бы также рекомендовал, чтобы изменения структуры проекта и управления двоичными файлами (например, модели основных данных) произошли с использованием старой версии, поскольку XCode 4.5 будет обратно совместимым, но переадресация не всегда гарантирована.

+0

Я сохранил копию XCode44.app в своей папке приложения, чтобы сделать это, и она была удалена обновлением 10.8.2 -_ -... !!! Любая идея, как загрузить его снова? – Olivier

+5

@Olivier - Apple по-прежнему имеет Xcode 4.4, перечисленные в их загрузках разработчиков: https://developer.apple.com/downloads/index.action?name=Xcode# –

+1

Также резервные копии Time Machine ... – jrtc27

-1

Вы можете добавить строку «armv6 armv7» в качестве архитектуры. Не выбирайте предопределенные настройки.

+3

Это не работает. Вы можете ввести «armv6 armv7» в качестве своих архитектур, но (если не будет другого шага, о котором вы не упомянули), это не приведет к созданию исполняемого файла для armv6 в Xcode 4.5. – Nate

+0

В XCode 4.1/4.2 они сбросили armv6 в качестве значения по умолчанию, но, прочитав его в качестве свойства проекта «Архитектуры», поскольку @ user1689643 говорит, что он фактически построил бы архитектуру armv6. Теперь в XCode 4.5 этот трюк, а также добавление его в список «Действительные архитектуры» по-прежнему не работает, и вы получите предупреждение о сборке «предупреждение: нет правила для обработки файла» $ (PROJECT_DIR) /mypath/mysrcfile.c 'типа sourcecode.cc для архитектуры armv6'. Казалось бы, XCode.app (v4.5) отключил поддержку armv6, и вам понадобится более старая версия XCode для создания этого среза архитектуры. –

+1

@NeoZenith, я, наконец, понял, как это сделать, без * хранения * старого Xcode. [Решение опубликовано здесь] (http://stackoverflow.com/a/13061562/119114) – Nate

1

Есть еще одно решение, которое я нашел в блоге chpwn: Building for armv6 in Xcode 4.5.
Это позволяет работать с Xcode 4.5, но скомпилировать с использованием 5.1 SDK. Недостаток: вы не можете использовать SDK iOS 6 при использовании этого трюка, и вы не можете построить для armv7s.

+1

К сожалению, chpwn не упомянул о важном шаге, который изначально сбил меня с толку. Я также должен был определить пользовательское ** Build Rule **. Объяснение [подробно в моем ответе здесь] (http://stackoverflow.com/a/13061562/119114). Кроме того, исполняемые файлы armv7 будут работать на armv7s, просто без преимуществ новых улучшений/оптимизации armv7. – Nate

1

Да, есть обходные пути. Если вам действительно нужно использовать новые функции iOS 6, попробуйте ответить на одну из первых ответов to this related question. The first answer требует использования как Xcode 4.4, так и 4.5. Если вы никогда не захотите открыть Xcode 4.4, then use the second answer.

Если вы просто хотите создать исполняемый файл в Xcode 4.5, который работает на устройствах armv6, armv7 и armv7s, не воспользовавшись новыми API-интерфейсами iOS 6 SDK, тогда вы получите can see my answer to another question, что намного проще ... но имеет ограничение, что вы не можете использовать новые функции iOS 6 на устройствах iOS 6.