Відповіді:
Сьогодні я щойно створив щось із зазначенням цілі розгортання 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 назад досить просто.
Проста відповідь полягає в тому, що ви повинні змінити поточні налаштування з "Стандартний (armv7) - $ (ARCHS_STANDARD_32_BIT)" на "armv6" і "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 він поводиться належним чином.
З найкращими побажаннями
Не впевнений, що це насправді рішення, але я виявив, що заміна визначеного рядка в "архітектурах", який становив $ (ARCHS_STANDARD_32_BIT), на "armv6 armv7" дозволила мені скомпілювати з iOS5 як базову та iOS4 як розгортання ціль і пройти перевірку.
Я не використовую жодних бібліотек або дзвінків, що виключають IOS5, але маю намір у наступному випуску.