Содержание статьи
Честно говоря, я не смотрел ни Google I/O, ни WWDC 2015. Это цирк-шапито, а не серьезные презентации для разработчиков — много болтовни и громких слов и почти нет осмысленной информации. Вместо этого я подождал несколько дней и пошел читать техническую документацию (и поставил оси на свои аппараты). Конечно же, изменений оказалось гораздо больше, чем было озвучено. В этой статье я хочу сделать акцент на наиболее значимых из них и разъяснить, что же они несут нам, техногикам. Да, статья во многом субъективна, но это статья, а не просто новость на сайте.
Android M
Первой нам показали Android M — уже вторую версию Android с закодированным именем и нестабильной preview-версией (первой была L — 5.0 Lollipop). Пять наиболее важных новшеств этой версии ОС:
- давно ожидаемая система отзыва полномочий у приложений;
- механизм энергосбережения Doze;
- система контекстного поиска на основе Now on Tap;
- механизм подключения SD-карты в качестве полноценной внутренней памяти Adaptable Storage;
- бэкап данных приложений каждые 24 часа.
Плюс куча более мелких изменений, такие как вертикальное отображение в меню приложений, возможность перемещения иконок в меню быстрых настроек, поддержка сканеров отпечатков пальцев, многооконный режим (!!!) и множество других, о которых мы говорить не будем.
Итак, система отзыва полномочий у приложений. Годами ожидаемая функциональность, повторяющая аналогичную в iOS: приложение запрашивает доступ, ну, скажем, к микрофону, а юзер может его подтвердить или запретить. Все хорошо, все счастливы, но, как оказалось, есть в этой системе несколько нюансов, которые могут показаться очень странными.
Во-первых, среди восьми групп полномочий (таких как камера, микрофон и так далее) нет едва ли не самого важного — интернета. Да-да, вирус не сможет получить доступ к твоим эсэмэскам и не узнает местоположение, но интернет ему доступен в полной мере. Это попустительство Google ради заработка на рекламе, но в то же время и довольно большая дыра в безопасности (уверен, ребята из CyanogenMod это исправят).
Во-вторых, система запроса полномочий не работает в отношении приложений, созданных для прежних версий ОС. Суть в том, что приложение должно уметь корректно обрабатывать ситуации отказа в предоставлении полномочий, а уже существующий софт этого не умеет. Так что, господа вирусописатели, никогда не выставляйте версию «target API» выше 5.1.1, и все у вас будет хорошо. Радует, однако, то, что полномочия таки можно будет отозвать, но только через настройки и без всяких гарантий, что софтина не упадет (кстати, система отзыва полномочий в CyanogenMod именно так и работает).
Теперь о механизме Doze. Это такой новый энергосберегающий режим, позволяющий существенно снизить потребление энергии во время долгого сна устройства. Принцип его работы очень прост: если юзер долгое время не использует девайс, система отключает всем приложениям доступ в интернет, игнорирует их просьбы разбудить устройство (wakelock’и и alarm’ы), отключает поиск новых сетей Wi-Fi и синхронизацию данных. Единственный для приложения способ пробудиться — это получить высокоприоритетное push-уведомление через систему GCM (Google Cloud Messaging). По словам Google, Doze позволяет сократить энергопотребление устройства до двух раз, и компания даже заявляет, что проводила тестирование на двух Nexus 9 с Android 5.1 и Android M. Что ж, попробуем поверить, сказки мы любим.
![Пока ты спишь, Doze работает](https://xakep.ru/wp-content/uploads/2015/07/1436431747_dafb_doze.png)
![](https://xakep.ru/wp-content/uploads/2015/07/cover_198-210x280.jpg)
Xakep #198. Случайностей не бывает
Следующее — Adaptable Storage. Механизм, позволяющий подключить SD-карту или USB-флешку в качестве дополнительной внутренней памяти и переместить на нее данные всех приложений. Это некое подобие механизма AppsOnSD, появившегося еще в 2010 году, с той разницей, что вместо переноса отдельно взятых приложений происходит полное переформатирование карты памяти с шифрованием и перемещение на нее данных вообще всех приложений, а не только тех, что поддерживают функцию AppsOnSD. По сути, это своеобразный вариант известного хака Ext2Fsd, но с шифрованием.
Четвертое — бэкап данных приложений. Едва ли не более ожидаемая функция, чем система отзыва полномочий. Каждые 24 часа, находясь на зарядке, подключенный к сети Wi-Fi девайс выполняет синхронизацию данных приложений. Все данные сохраняются в зашифрованных контейнерах в твоем Google Drive. Однако на каждый контейнер есть ограничение в 25 Мбайт (по крайней мере пока). После сброса до заводских настроек или переустановки прошивки данные восстанавливаются вместе с приложениями. Просто, удобно, содрано у Windows Phone.
И наконец, гвоздь нашей программы Now on Tap — невероятно крутое расширение Google Now, из-за которого даже такой маргинал, как автор данной статьи, готов начать пользоваться этим сервисом. Если вкратце, суть обновления Google Now в том, что теперь он включает в себя своего рода систему контекстного поиска, которая способна вычленять ключевые слова или фразы из окна запущенного в текущий момент приложения и автоматически выводить на экран их значения со всей сопутствующей информацией. Например, если девушка пишет тебе в чате «Пойдешь на фильм „Марсианин“?», а ты, к своему же удивлению, не знаешь, что это за фильм, то все, что тебе необходимо сделать, — пару секунд удерживать кнопку «Домой», и внизу экрана появится Google Now с подсказкой о фильме, ссылками на Википедию, IMDB и другой инфой.
Более того, Now on Tap распознает даже изображения и воспринимает голос, так что, видя на экране картинку славного Калининграда, можно просто сказать: «Покажи мне больше фоток этого места», — и он это поймет. Также можно спрашивать про музыкальные композиции и другие сущности. Правда, в России это все работает пока не так хорошо, как в странах загнивающего Запада.
![Now On Tap способен даже показать, куда пойти ужинать](https://xakep.ru/wp-content/uploads/2015/07/1436431733_886f_now_on_tap.png)
iOS 9 Beta
Почти через две недели после презентации Android M компания Apple представила бета-версию iOS 9, релиз которой намечается на сентябрь. Как и в случае с операционкой от Google, нововведений в новой iOS оказалось огромное количество, но опять же мы поговорим только о пяти из них:
- совершенно новый ассистент Proactive;
- многооконный режим для iPad;
- энергосберегающий режим;
- новая система обновления приложений/ОС
- и, конечно же, watchOS 2.0, которая наконец-то научилась запускать приложения.
О новой клаве, приложении News и музыкальном сервисе говорить не будем.
Итак, Proactive: наверное, самая обсуждаемая фича iOS 9. Proactive родилась в результате поглощения «Эпплом» компании — разработчика умного ассистента Cue, созданного под впечатлением от Google Now, и компании — разработчика Spotsetter — социально ориентированного поисковика ресторанов, баров, кафе и прочих макдаков. В результате у Apple появился собственный ассистент, по функциональности сильно напоминающий все тот же гугловский Now. Он даже находится с левой стороны SpringBoard и показывает схожую информацию, будь то расписание рейсов, напоминания о встречах или ближайшие кафе.
Однако есть у Proactive и серьезное отличие. В то время как Google Now почти полностью завязан на поисковый движок и веб-сервисы все той же компании, Proactive в большей степени полагается на информацию, хранящуюся в самом смартфоне, и даже предоставляет разработчикам сторонних приложений API для отдачи данных системе. Вся эта информация агрегируется, сортируется и предоставляется пользователю в нужное время вместе с релевантными данными, взятыми из интернета. Но, что самое интересное, Proactive не просто собирает эту информацию — он ведет своего рода хронику работы юзера со смартфоном и, например, предлагает нужные приложения в те моменты, когда тот их обычно использует, или запускает музыку в том приложении, которое пользователь предпочитает.
Второе — многооконный режим. Тут сказать особо нечего, все видели, все подивились. Единственное, что хотелось бы отметить, — в iOS наконец появилась настоящая многозадачность (в смысле переключения задач ядром ОС, а не юзером), позволяющая одновременную работу сразу нескольких приложений. И судя по тому, что доступна она только на iPad Air 2, производительность для ее реализации должна быть нехилая (вот поэтому Android до недавнего времени и лагал). И да, сторонние приложения тоже смогут работать в таком режиме, но только после модификации.
Теперь о системе обновления приложений и операционной системы, а точнее о том, как они позволяют сохранить трафик. Наверное, все знают, что в iOS еще со времен пятой версии существует механизм инкрементальных обновлений. Работает он так: Apple смотрит на старую и новую версию приложения/прошивки, вычисляет, какие файлы изменились, а какие остались прежними (например, автор обновил код приложения, но все картинки оставил из предыдущей версии), и при обновлении приложения/ОС отдает девайсу только то, что реально изменилось. Поэтому обновление 8.0 до 8.1 будет весить гораздо меньше, чем от 7.2 до 8.0. Такая же схема применяется в Android.
В iOS 9 Apple существенно доработала этот механизм, снабдив его системой, названной App Thinning. Состоит она из трех компонентов. Первый (App Slicing) позволяет устройству скачивать только те компоненты приложения, которые ему нужны. Например, 32-битный iPhone 5 не будет качать исполняемые файлы для 64-битного iPhone 6, так же как iPhone 6 не будет скачивать ресурсы приложения (изображения, например) для более крупного iPad Air. Второй компонент (On-Demand Resources) позволяет устройству скачивать только часть ресурсов приложения, а не все целиком. Эта функция подходит для игр — зачем качать всю игру целиком, если можно скачать первые три уровня и оценить? Ну и последний компонент (Bitcode) позволяет разработчикам загружать приложения в App Store не в бинарном формате, а в виде промежуточного байт-кода (на 99% уверен, что это байт-код LLVM). Собственно на нем и основан механизм App Slicing.
Но это еще не все. Apple умудрилась улучшить и без того оптимизированный механизм OTA-обновлений. По словам компании, для обновления до iOS 9 понадобится всего 1,8 Гбайт, вместо 4,6 Гбайт в случае iOS 8. Как они это сделали — трудно сказать, но скорее всего, они применили один из вариантов бинарной дельты. То есть если раньше система скачивала только те файлы, которые изменились, то теперь она будет качать только патчи для этих файлов. Хотя это лишь предположения автора.
Предпоследнее — режим энергосбережения. Тут ничего нового, полный аналог подобной функции из Android 5.0: нажимаешь на кнопочку, вся фоновая синхронизация данных отключается, яркость экрана устанавливается на минимум, а сетевой канал сужается. В компании заявляют, что функция позволяет продлить жизнь смартфона на три часа (ну хоть не в два раза, спасибо).
![Оранжевая батарейка (спасибо, что не красный статусбар)](https://xakep.ru/wp-content/uploads/2015/07/1436431778_c612_lowpower.png)
И последнее — возможность запуска приложений в watchOS 2.0. Ты скажешь, что это можно было делать и в первой версии, и будешь не прав. WatchOS 1.0 не умела запускать приложения, она лишь выводила его интерфейс, тогда как вся логика оставалась на смартфоне. По большому счету часы были лишь тонким клиентом и без смартфона оказывались совсем беспомощными, за исключением стоковых приложений. Теперь все по-взрослому, настоящий софт, способный работать без смартфона и даже использовать Wi-Fi. Забавно, но этим шагом Apple явно скопировала Стива Джобса, который представил первый iPhone без возможности запуска сторонних приложений и предложил использовать для этого веб-софт... в 2007 году... по 2G... на экране 3,5 дюйма.
Напоследок хотелось бы сказать, что Apple таки открыла язык Swift (в смысле — пообещала выложить исходники), да еще и с поддержкой Linux. Зачем? Чтобы набрать базу разработчиков.
Вместо выводов
В последнее время наблюдать за развитием Android и iOS — одно удовольствие. Этакая битва двух гладиаторов, один из которых использует меч и щит, а второй — щит и меч. В этой статье я намеренно отошел от разного рода новых элементов интерфейса и приложений и сосредоточился только на технической части, но даже на таком уровне видно, насколько идейно близкими становятся две операционки. Да-да, я не собираюсь разжигать кровной вражды между двумя лагерями, я, наоборот, хочу сказать, что мы уже и так ходим в гости к соседям, а скоро так вообще будем жить в одной квартире. Скучно стало, господа.
Сведения для перебежчиков
Вместе с анонсом iOS 9 Apple пообещала выпустить приложение для Android под названием Move to iOS. Смысл его в том, чтобы дать юзерам Android, решившим перейти на iOS, инструмент, который легко и непринужденно перенесет все их данные на новый смартфон. По какому проводу или воздуху будет выполняться передача, Apple не сообщила, зато сказала, что можно перенести практически все:
- контакты;
- историю SMS;
- фото и видео;
- закладки;
- email-аккаунты;
- записи в календаре;
- обои;
- не защищенные авторским правом композиции и книги.