как собрать архитектуру для armv6 и armv7 с ios 5

<p>в <strong>ios5</strong> apple отбрасывает <em> архитектуру armv6 </em> из <strong>archs\_standard\_32\_bit</strong>.</p><p>чтобы сохранить поддержку <strong>iphone3g</strong> я все еще хочу скомпилировать в <em> armv6 </em> даже в ios5.</p><p>кто-нибудь нашел решение для этого?</p>

<p>сегодня я только что что-то создал, указав цель развертывания ios 4.0. поскольку в архитектуре указан только armv7, xcode предупредил меня, что для поддержки чего-либо ниже ios4.2 мне нужно было включить armv6 в архитектуру. просто отредактируйте это поле, нажмите кнопку "+", когда появится диалоговое окно, и введите буквальное значение "armv6".</p><p>в моем случае мы хотим, чтобы наше приложение работало под ios4 и ios5. мы должны были внести некоторые изменения, чтобы он корректно работал под ios5, но все эти изменения были сделаны с изменениями кода, совместимыми с ios4.</p><p>мы также добавили некоторые специфичные для ios5 возможности, позволяющие запускать приложение без сбоев под ios4. в частности, мы протестировали возможности ios5, прежде чем пытаться их использовать, и связали библиотеки только для ios5 как дополнительные.</p><p>таким образом, поддержка iphone3g в мире ios5 может означать "мы хотим, чтобы наше приложение работало на ios4 и выше (независимо от использования какой-либо функции ios5)", а не "мы хотим убедиться, что наше приложение работает на более старом устройстве с ios5 ". здесь есть разница; думаю об этом. :-)</p><p>в любом случае, добавить поддержку armv6 обратно очень просто. и я думаю, суть в следующем: в какой-то момент, когда больше нет устройств armv6, о которых нужно беспокоиться (по какой-либо причине), вам не придется создавать их. apple считает, что каждый должен обновиться до новейшего оборудования как можно скорее. таким образом, в этом мире нет необходимости использовать инструменты по умолчанию для чего-либо, кроме самого последнего и самого лучшего. :-) к счастью (или нет), мы, разработчики, живем в реальном мире и понимаем, что вам нужно некоторое время поддерживать старые вещи. и я думаю, что команда разработчиков xcode тоже знает это, поэтому вы можете добавить поддержку armv6 обратно довольно просто.</p>

<p>простой ответ заключается в том, что вы должны изменить текущие настройки с "standard (armv7) - $ (archs_standard_32_bit)", чтобы они были просто "armv6" и "armv7". смотрите изображение ниже. вы должны удалить строку с предыдущими настройками, чтобы она работала.<img src="https://i.stack.imgur.com/cwxvk.png" alt="correct settings for armv6 and armv7">

также убедитесь, что вы установили это в project and targets ... мне понадобился час, чтобы понять это. установил это для одного, но не другого. надеюсь это поможет. glta

я думаю, что есть причина, по которой 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 он ведет себя как ожидалось.с наилучшими пожеланиями

не уверен, что это на самом деле решение, но я обнаружил, что замена определенной строки в "architectures", которая была $ (archs\_standard\_32\_bit), на "armv6 armv7" позволила мне скомпилировать с ios5 в качестве базы и ios4 в качестве развертывания цель и пройти проверку.</p><p>я не использую никаких ios5-эксклюзивных библиотек или вызовов, но собираюсь сделать это в следующем выпуске.</p>

<p>мне не нужно было заменять $ (archs\_standard\_32\_bit) просто armv7, чтобы приложение компилировалось и загружалось в app store.</p><p>как предложил markgranoff, я просто добавил armv6 в виде обычного текста, нажав плюс и введя его во второй строке.</p>