Если создавать приложения для iOS 6 (iPhone 4), насколько будут совместимы с современными версиями? И наоборот — чего не хватает в старых Target?
Вопрос в заголовке.
Откуда такой вопрос - давно уже есть идея создать пиратский "эмулятор", для тех у кого Windows, но кто хочет разрабатывать для OS X и iOS.
Сам пользуюсь VPS, но есть определенные ограничения, и это все же стоит денег.
"Эмулятор" будет представлять собой пиратский образ OS X, запущенный в VirtualBox или VMWare, разумеется модифицированной для удобства использования, наподобие Genymotion, он тоже создан на основе VirtualBox SDK.
С реверс-инжинирингом все идеально, если понадобится - могу дизассемблировать весь OS X с Xcode и iOS Simulator и весь VirtualBox, из x86-64 модулей сделать x86, взять старую версию ОС и "срастить" с компонентами новой, доработать VirtualBox гораздо лучше, чем ее создатели, так что работать все это будет даже на AMD без AMD-v и при 2 ГБ ОЗУ, и т.п.
Но время!
Поэтому на первых порах необходимо ограничиться тем, что возможно достичь достаточно быстро и чтобы было максимально "неприхотливо" к мощности хоста, чтобы не требовало Intel VT-x, а работало и с AMD-v, а лучше вообще без аппаратной виртуализации, чтобы запускать на VPS с Windows Server.
А это навскидку OS X 10.6 (он бывает даже 32-битный), на более расчитывать нельзя.
И, стало быть, Xcode 4.3-4.6, соответствующий эпохе iOS 6 и iPhone 4.
Никто не поддерживает iOS6, очень мало кто поддерживает iOS8.
Затея бессмысленная.
1) Скорее всего не взлетит swift (не уверен)
2) Все плюшки добавленные после iOS6 не будут работать.
Толку от такого симулятора не будет
давайте конкретнее. чтобы я оценил нужность плюшек и их масштаб.
например swift не есть большая проблема. можно из компилятора swift сделать транслятор его в obj-c, или его рантайм-библиотеки взять из 10.9 и "врастить" в модифицированный 10.6. в принципе возможно все. другое дело если таких проблем сразу 10 или 15 штук, но давайте конкретнее а там посмотрим
Rou1997_3: Помимо прочего, вы также не сможете сабмитить приложения в App Store, если они собраны старыми версиями Xcode со старыми iOS SDK. Вот фрагмент из письма Apple (от 17.12.2014) на эту тему:
As we announced in October, beginning February 1, 2015 new iOS apps submitted to the App Store must include 64-bit support and be built with the iOS 8 SDK. Beginning June 1, 2015 app updates will also need to follow the same requirements. To enable 64-bit in your project, we recommend using the default Xcode build setting of “Standard architectures” to build a single binary with both 32-bit and 64-bit code.
Rou1997_3: ну, если нужна конкретика, можно пробежаться по разделам документации What's New in iOS и What's New on Xcode. Это отвечая на вопрос о том, чего будет не хватать. А ещё можно посмотреть на статистику версий iOS на разных устройствах. По данным Apple менее 5% устройств работают на iOS ниже 9-ой версии. По данным Unity 3d около 0.02% это устройства с iOS ниже 7-ой версии.
Squatch: Документация Apple, это такое "болото", в которое лишний раз лучше не лазать. Это одни из худших доков какие я видел, типа был в неком классе некий метод с OS X 10.2+, потом в 10.12 изменили один его аргумент, и теперь пишут, что он 10.12+, а старую страницу могут и вовсе удалить, или во всяком случае непросто ее найти, никаких ссылок нет, это надо в поисковик имя метода вбивать. цитирование у этих страниц почти никакое, а если этого не сделать, то и будете думать, что только 10.12+. Уверен, в changelog то же самое. Хотелось ответ разработчика, "когда вышла iOS 7 я стал использовать такую-то новую фичу", речь о принципиально новом, а не переделанных старых методах и классах которые составляют немалый процент всей работы Apple.
Rou1997_3: Принципиально новые и массовые штуки, вроде ARC, AutoLayout, UICollectionView были и в iOS 6, конечно. Но такого калибра фичи появляются не так часто. А в остальном оно сильно зависит от того, над какими именно приложениями доведётся работать. Кому-то важна работа с Background Modes, представленными с iOS 7, кому-то критично использование Touch ID (с iOS 8), где-то бывает удобно использовать Size Classes (iOS 8) или UIStackView (iOS 9), если интерфейс не сильно сложный. Где-то Apple на review может завернуть приложение, если оно без особых на то причин, открывает внешние ссылки в стандартном приложении Safari, вместо использования SFSafariViewController (так же с iOS 9). SpriteKit и SceneKit появились после 6-ой iOS. Кому-то требуется разработка App Extensions (iOS 8) или работа с CloudKit (также с iOS 8). У другого разработчика - будет совсем другой список фич, которые могли быть критичными на его проектах. Плюс, если мы говорим о поддержке версий iOS выше 6-ой, - будет огромное количество deprecated методов, о которых надо будет думать. Плюс, разработка без тестирования на реальных устройствах - это крайне плохая идея. Вообщем, я согласен с ManWithBear, не стоит овчинка выделки, когда можно собрать тот же хакинтош (если покупка мака по каким-то причинам - не вариант) и с комфортом работать на последних версиях Mac OS / Xcode / iOS SDK. Прелесть разработки под iOS как раз в том, что можно сфокусироваться на последних 2-ух версиях, и получить покрытие 95% устройств, не имея головной боли с поддержкой многих веток API. Хотя если много свободного времени и хочется заняться сабжем just4fun - то флаг в руки)
Squatch: Спасибо, это уже кое-что, хотя лучше самому все это увидеть, тогда станет легче убедить людей, что то-то и то-то на самом деле не нужно, а реализовать только необходимое.
Наверно образ в эмуляторе должен иметь разные версии, у кого Intel и помощнее - тем можно и вполне новыми пользоваться, а у кого офисный ноут с AMD, у них и подход к разработке должен быть таким же "спартанским" без всего лишнего, иначе ничего не добьются если будут хотеть "из грязи в князи".
Хотя если много свободного времени и хочется заняться сабжем just4fun - то флаг в руки)
Конечно, нет, у меня полная противоположность, ну сейчас я это в любом случае не осилю, но сейчас и без того хватает дел, а это на будущее, на месте не стою, дальше - легче, планы - грандиознее.
Rou1997_3: > например swift не есть большая проблема. можно из компилятора swift сделать транслятор его в obj-c
ржувголосину.
чувак, сделай - и за это тебе будут платить.
только, если оно реально будет работать, а не на словах (выдавая код, который потом долго нужно причесывать для взлета).
затея годится только ради собственного интереса, dev под давно неактуальные системы интересен единицам. и только единицы из этих единиц не способны позволить себе хакинтош за несколько сот баксов.
DevMan: Ну а в Яндекс.Директ и Google AdSense у меня конечно так и будет написано
Хотите разрабатывать для Mac и iOS, но нет Макбука?
Вот вам эмулятор с давно неактуальными и никому на ногу не упершимися системами!
А еще он не работает как надо! И все время kernel panic! И код надо причесывать!
DOWNLOAD IT FREE!
И анекдот "Так и вы говорите" я конечно не слышал...
Если по твоей логике, Genymotion тоже не нужен, уж на Android-то вообще все могут пару смартфонов и планшетов, а та глядишь, и десяток наберется.
DevMan: Genymotion нужен, и для OS X тоже нужен эмулятор.
Кроме того, возникнут побочные наработки - смогу считать себя экспертом в Apple, особенно реверс-инжиниринге, а главное доказать это другим.
Rou1997_3: с академической стороны - идея годная. и если цель качать скилы, то дерзай
с практической - лишена всякого смысла.
порыв про бэкпорт рантайма понятен, но боюсь к тому времени как ты его осилишь (если осилишь), актуальной уже будет iOS 12, если не выше. да и есть сомнения, что будет интересно бэкпортировать каждый год.
сейчас, когда яфон 5s (который весьма бодро себя ведет на последней iOS 10) можно новый купить от $150, яфон 4 и старые яоси интересны только энтузасистам. но те сами способны разобраться как и на чем писать.
с академической стороны - идея годная.
с практической - лишена всякого смысла.
Не бывает таких, или она продуктивная, или она не продуктивная.
Я не особо люблю заморачиваться с придумыванием чего-то "волшебного", а просто создаю сложное и большое. Такой труд тоже продуктивен.