Как собрать архитектуру для armv6 и armv7 с iOS 5 - PullRequest
96 голосов
/ 20 сентября 2011

In iOS5 Apple удаляет архитектуру armv6 из ARCHS_STANDARD_32_BIT .

, чтобы сохранить поддержку iPhone3G Я все еще хочу скомпилировать в armv6 даже в iOS5.

Кто-нибудь нашел решение для этого?

Ответы [ 6 ]

97 голосов
/ 20 сентября 2011

Я только что что-то создал сегодня, указав цель развертывания iOS 4.0. Поскольку в архитектуре указан только armv7, Xcode предупредил меня, что для поддержки чего-либо ниже iOS4.2 мне нужно было включить armv6 в архитектуру. Просто отредактируйте это поле, нажмите кнопку «+», когда появится диалоговое окно, и введите буквальное значение «armv6».

В моем случае мы хотим, чтобы наше приложение работало под iOS4 и iOS5. Нам пришлось внести некоторые изменения, чтобы он корректно работал под iOS5, но все эти изменения были сделаны с помощью удобных для iOS4 изменений кода.

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

Таким образом, поддержка iPhone3G в мире iOS5 может означать «мы хотим, чтобы наше приложение работало на iOS4 и выше (независимо от использования какой-либо функции iOS5)», а не «мы хотим убедиться, что наше приложение работает на более старой» устройство под управлением iOS5 ". Здесь есть разница; думаю об этом. : -)

В любом случае, добавить поддержку armv6 обратно очень просто. И я думаю, суть в следующем: в какой-то момент, когда больше нет устройств armv6, о которых нужно беспокоиться (по какой-либо причине), вам не придется создавать их. Apple считает, что каждый должен обновиться до новейшего оборудования как можно скорее. Таким образом, в этом мире нет необходимости использовать инструменты по умолчанию для чего-либо, кроме самого последнего и самого лучшего. :-) К счастью (или нет), мы, разработчики, живем в реальном мире и понимаем, что вам нужно некоторое время поддерживать старые вещи. И я думаю, что команда разработчиков Xcode тоже это знает, поэтому вы можете добавить поддержку armv6 обратно довольно просто.

51 голосов
/ 16 октября 2011

Простой ответ заключается в том, что вы должны изменить текущие настройки с «Standard (armv7) - $ (ARCHS_STANDARD_32_BIT)», чтобы они просто были «armv6» и «armv7».Смотрите изображение ниже.Вы должны удалить строку с предыдущими настройками, чтобы она работала.

Correct settings for armv6 and armv7

11 голосов
/ 17 октября 2011

также убедитесь, что вы установили это в Project AND Targets ... мне понадобился час, чтобы понять это.установил это для одного, но не другого.надеюсь это поможет.GLTA

9 голосов
/ 11 октября 2011

Я думаю, что есть причина, по которой Apple отказалась от armv6 от стандартной настройки.

Я скомпилировал armv7 / armv6 с iOS5 SDK, однако компилятор armv6 выдал неправильный код в режиме выпуска. После нескольких часов нахождения обходного пути (пробуя llvm или gcc с разными уровнями оптимизации) я сдаюсь.

Итак, я возвращаюсь к iOS SDK 4.x, пока поддерживаю старые устройства armv6.

Пример кода:

// myView center=(160, 100)
CGPoint p=myView.center;  
// now p=(100,100) (what the heck?)
p.x=myView.center.x;
p.y=myView.center.y;
// now p=(160,100) 
p.y+=100;
// now p =(200,200) (what the heck?)

Возможно, у меня есть некоторые повреждения памяти, однако на компиляторе armv7 и на iOSSDK <5.0 он ведет себя как ожидалось. </p>

С наилучшими пожеланиями

7 голосов
/ 06 октября 2011

Не уверен, что это на самом деле решение, но я обнаружил, что замена определенной строки в "architectures", которая была $ (ARCHS_STANDARD_32_BIT), на "armv6 armv7" позволила мне скомпилировать с iOS5 в качестве базы и iOS4в качестве цели развертывания и пройти проверку.

Я не использую никаких IOS5-исключительных библиотек или вызовов, но собираюсь сделать это в следующем выпуске.

1 голос
/ 02 марта 2012

Мне не нужно было заменять $ (ARCHS_STANDARD_32_BIT) просто armv7, чтобы приложение компилировалось и загружалось в App Store.

Как и было предложено MarkGranoff, я просто добавил armv6 в виде простого текста, нажавплюс и просто введите его во второй строке.

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