Содержание статьи
Android O
Наверное, главная новость марта — это релиз превью-версии Android O, которая, скорее всего, будет иметь индекс 8.0 и, по слухам, называться Oreo. Новый Android отнюдь не стал откровением и больше похож на инкрементальный релиз с реализацией новых функций.
Одно из главных и в то же время противоречивых новшеств Android O — это расширение механизмов сохранения энергии: теперь блокируются неявные широковещательные интенты (они используются, например, чтобы открывать ссылки с помощью приложений-клиентов), лимитируется частота запроса информации о местоположении и ограничивается работа фоновых служб.
Все эти ограничения накладываются на работающие в фоне приложения и, в принципе, достаточно логичны, но уже вызвали недовольство разработчиков. Дело в том, что запрет на исполнение фоновых служб фактически хоронит одну из лучших черт Android — возможность беспрепятственной работы фоновых приложений в противовес применяемой в iOS и Windows Mobile ограниченной системы фоновых обработчиков (аналог которой появился еще в Android 5.0). К счастью, новая система энергосбережения не будет применяться к уже существующим приложениям, собранным без поддержки Android O.
Еще одно новшество — каналы уведомлений. Теперь приложения могут разбить уведомления на различные категории (каналы), а пользователь может выборочно управлять ими и блокировать каждый из них по отдельности. Простейший пример: блокирование новостей о политике в новостном приложении.
В Android O наконец-то появился API Autofill, позволяющий разработчикам приложений писать менеджеры паролей с поддержкой автозаполнения. Да, они умели делать это и раньше, но только с помощью API Accessibility, который сильно грузит систему и работает далеко не со всеми приложениями.
Picture in Picture — новый многооконный режим, позволяющий выводить окна приложений поверх видеороликов без остановки воспроизведения. Кроме того, Android теперь поддерживает конфигурацию multi-display, когда экран устройства и подключенный к нему внешний монитор система воспринимает как одно целое, позволяя перемещать окна между экранами.
Иконки приложений теперь могут подстраиваться под оформление интерфейса различных производителей. В прошивках, использующих квадратные иконки с закруглением (Samsung TouchWiz), система будет автоматически делать иконку квадратной, в системах с круглыми иконками (Google Pixel) — круглой. Сейчас производители реализуют то же самое с помощью собственных прослоек и хаков, Android O позволяет унифицировать процесс. Достигается это благодаря двухслойным иконкам, верхний слой которых остается неизменным, а нижний меняется в зависимости от используемой прошивки. Этот же механизм позволяет реализовать различные эффекты.
Из других новшеств:
- поддержка новых API, появившихся в Java 8;
- оптимизация ART, позволившая поднять скорость прохождения некоторых тестов в несколько раз;
- поддержка кодеков для высококачественной передачи звука по Bluetooth (LDAC);
- поддержка технологии Wi-Fi Aware, позволяющая двум устройствам подключаться друг к другу напрямую без использования точки доступа;
- API ConnectionService, позволяющий интегрировать программы дозвона в систему, не нарушая ее концепции интерфейса;
- AAudio API для профессиональных приложений обработки звука, требующих минимальной задержки при работе со звуком;
- кардинальная переработка окна настроек, теперь все настройки разбиты на несколько глобальных разделов;
- возможность сдвинуть кнопки навигации влево или вправо для более удобного управления одной рукой;
- кнопки быстрого запуска, располагающиеся в нижних краях экрана блокировки, теперь можно заменить ярлыками любых приложений;
- для доступа к опциям для разработчиков (и, как следствие, возможности активировать ADB) теперь необходимо ввести пароль от экрана блокировки;
- при запуске приложений, использующих перекрытие окон (в том числе различных банковских троянов), в строке состояния теперь появляется несмахиваемое уведомление.
iOS 10.3
Обновилась и iOS, но изменений в ней совсем немного. В основном багфиксы и мелкие улучшения, но есть и действительно большое новшество: файловая система APFS.
APFS была представлена на WWDC 2016 как замена устаревшей HFS+. Она ориентирована исключительно на твердотельные накопители и может одинаково эффективно работать на любых устройствах, начиная от Apple Watch и заканчивая Mac Pro. APFS имеет функцию дедупликации (например, копия файла не будет занимать дополнительное пространство на диске до тех пор, пока она не будет изменена), поддерживает снапшоты (файловую систему можно «сфотографировать и откатить обратно» в любое время), шифрование данных и контрольные суммы для проверки целостности данных. На сегодняшний момент APFS менее производительна, чем HFS+, что можно объяснить ее молодостью.
Второе заметное новшество — это функция поиска AirPods в приложении «Найти iPhone». Совсем недавно в App Store появилось аналогичное стороннее приложение, которое Apple вскоре выпилила, и теперь мы знаем зачем. Карты сейчас могут показывать погоду в выбранном месте, а у подкастов есть виджет.
Многие пользователи отмечают и заметное ускорение iOS, но, как выяснилось, дело тут вовсе не в оптимизациях, а в изменившихся таймингах анимации (она просто стала более быстрой).
LineageOS
LineageOS (CyanogenMod) также продолжает развиваться. Никаких новых релизов, только планомерное улучшение LineageOS 14.1.
Главное нововведение — oneHand Mode, режим управления одной рукой. Реализован примерно так же, как в MIUI: если провести пальцем по экранным кнопкам навигации влево или вправо, картинка на экране уменьшается и сдвигается в левую нижнюю или правую нижнюю часть экрана. Для тех, кто не использует экранные клавиши, есть возможность повесить это действие на одну из хардварных кнопок (например, долгое удержание или двойное нажатие).
В 14.1 наконец-то вернулись дополнительные тайлы для панели быстрых настроек (шторки). Сейчас доступны:
- Caffeine — блокировка отключения экрана;
- USB Thether — раздача интернета по USB;
- Sync — включение/отключение синхронизации данных;
- Battery Saver — включение режима энергосбережения;
- Ambient Display — режим Ambient, включающий экран при поступлении уведомления;
- Heads Up — включение/отключение показа уведомлений в верхней части экрана;
- Volume Panel — доступ к панели управления громкостью;
- ADB over Network — отладка по сети.
Напомним, что начиная с 7.0 сторонние приложения также могут добавлять собственные тайлы в быстрые настройки.
Samsung Galaxy S8
В конце февраля Samsung представила Galaxy S8, свой новый флагман, который должен восстановить репутацию компании после истории с воспламеняющимся Note 7. Об этом написали уже на каждом углу, поэтому мы не будем повторяться, а вместо этого остановимся на интересных программных технологиях, вошедших в его прошивку.
Первое, о чем стоит сказать, — это ассистент Bixby, своеобразный ответ Apple с ее Siri и Google с ее Now и Google Assistant. Согласно Samsung, это технология нового типа, использующая машинное обучение, способная чуть ли не знать, о чем думает пользователь, и так далее и тому подобное.
На самом деле Bixby — это просто еще один ассистент, выполненный по образу и подобию Google Now и поддерживающий два языка: корейский и английский. Насколько он действительно точен и полезен, пока неясно, но в нем есть одна примечательная особенность: он знает, что в данный момент изображено на экране смартфона, и может делать подсказки и выполнять функции, основываясь на этих знаниях. Например, его можно попросить перевернуть изображение камеры или отсканировать текст, на который наведен объектив. Samsung заявляет, что с помощью Bixby можно сделать все, что можно сделать пальцем, и это действительно впечатляет — если закрыть глаза на конфиденциальность. Все-таки никому бы не хотелось, чтобы Samsung знала, чем он занимается в каждый конкретный момент.
Вторая интересная технология — это DeX, специальный док, подключающийся кабелем HDMI к монитору. Как только ты вставляешь смартфон в этот док, на экране монитора появляется полноценный рабочий стол в стиле Windows. Остается только спарить со смартфоном клавиатуру и мышь — и вуаля, ты превратил смартфон в полноценный ПК.
Все это очень похоже на то, чем занимаются ребята из проекта Maru, но если Maru позволяет сделать из смартфона комп на базе полноценного Debian, то здесь все несколько проще: на экране ты увидишь Android, но с десктопным интерфейсом (на манер Remix OS). Для серьезных задач не подходит, зато позволяет использовать одни и те же приложения на десктопе и смартфоне и работать с одними и теми же данными — полная интеграция.
Кстати, именно поэтому Microsoft анонсировала свою собственную версию Galaxy S8 с предустановленными офисными приложениями, Outlook, Skype и Cortana.
Другие интересные приложения:
- Samsung Connect — приложение для централизованного управления умным домом, построенным вокруг Samsung Connect Home Smart Wi-Fi System;
- Samsung Cloud — облако Samsung для сохранения файлов и документов, которые можно открыть на любом устройстве;
- Bluetooth Dual Audio — стриминг аудио сразу на несколько устройств Bluetooth с индивидуальным управлением громкостью (использует технологии Bluetooth 5).
Почитать
Android Security 2016 Year In Review — огромный отчет Google о состоянии безопасности и борьбе со зловредами для Android.
Несмотря на явно маркетинговый характер документа («посмотрите, как все классно, а вы говорите — Android дырявый»), в нем можно найти множество интереснейшей информации. Например, только в 2016 году Google выплатила около миллиона долларов более чем 125 исследователям в рамках программы Bug Bounty.
Почти 50% пользователей используют блокировку экрана PIN-кодом или отпечатком пальца. В Сомали этот процент достигает 82%, тогда как в Украине только 27%, а в России около 35%. Процент устройств, работающих на Android 5.1 и использующих шифрование, составлял лишь 8%, тогда как в случае Android 7.0 этот показатель подскочил до 80%.
Устройства, своевременно получавшие ежемесячные security-обновления в 2016 году: Google Pixel, Google Pixel XL, Motorola Moto Z, Droid, Oppo A33W, Nexus 6P, Nexus 5X, Nexus 6, OnePlus 3, Samsung Galaxy S7, Asus Zenfone 3, BQ Aquaris M5, Nexus 5, Vivo V3Max, LG V20, Sony Xperia X Compact, BlackBerry PRIV.
Процент установок приложений, выполняющих рутинг устройств без ведома пользователя, — 0,00233%, процент установок легитимных приложений, выполняющих рутинг по запросу пользователя, — 0,3461%. Почти все они установлены не из Google Play.
Anti-Debugging Fun With Android ART — описание метода защиты от отладки приложений на Android 5.0. Метод основан на запатентованной (!) технологии Bluebox Security, суть которой заключается в обнулении глобально видимой структуры gDvm.jdwpState, которая содержит текущие данные об отладке и указатели на функции. В результате поток отладки JDWP падает и отладка становится невозможной.
В системах, использующих компилятор ART вместо виртуальной машины Dalvik (Android 5.0 и выше), такой или сходной структуры нет, но есть другие способы завершить поток JDWP. Один из них — это перезаписать метод jdwpAdbState::ProcessIncoming(). В статье приведен весь необходимый код.
A New Trend in Android Adware: Abusing Android Plugin Frameworks — исследование нового тренда в области Adware, приложений, агрессивно показывающих рекламу либо пытающихся заставить пользователя установить и запустить другое приложение.
Обычно подобный софт работает так: при запуске или через определенные отрезки времени приложение скачивает несколько других приложений, которые следует впарить пользователю, на карту памяти и время от времени показывает диалог установки. Пользователи от этого не в восторге, но большинство из них вне опасности: установку из сторонних источников необходимо включить, затем установить рекламируемое приложение, затем запустить его. Не каждый юзер будет это делать.
Однако с конца прошлого года наметилась новая тенденция — Adware, использующее возможности фреймворка DroidPlugin. Последний представляет собой нечто вроде виртуальной машины для приложений. Он позволяет написать приложение, которое будет способно запускать другие приложения внутри себя, причем не просто запускать, а запускать автоматически и автоматически же устанавливать. Другими словами, использующее этот фреймворк Adware может незаметно скачать приложение на карту памяти, установить его внутрь себя, создать ярлык на рабочем столе и запустить, а его создатель получает за это денежку.
Один из примеров такого Adware — приложение Clean Doctor, уже удаленное из Play Store. Вместе с ним Google удалила еще два десятка подобных приложений.
Teardown of a Recent Variant of Android/Ztorg — разбор одной из новых версий Android/Ztorg. Троян использует обфускацию строк, библиотеку MarsDaemon для того, чтобы его невозможно было выгрузить из памяти, и множество техник обнаружения самых разных эмуляторов, начиная от стандартного эмулятора Android и заканчивая Genymotion и TaintDroid.
К примеру, кроме проверки на наличие различных системных переменных и файлов устройств (/dev/qemu_pipe
), которые служат индикатором работы внутри эмулятора, он также исследует файл /proc/net/tcp
, где содержится информация об активных TCP-соединениях (оказывается, в эмуляторах вместо информации об IP-адресах и номерах портов — нули).
В остальном все довольно стандартно: загрузка payload через зашифрованный канал, root-эксплоиты в комплекте, отключение SELinux, отключение отладчика путем подмены файла /system/bin/debuggerd
, самокопирование в разные участки системы для защиты от удаления.
Injecting Metasploit Payloads into Android Applications — статья о внедрении зловредного кода в приложения для Android с помощью Metasploit Framework. Статья пошагово описывает процесс внедрения payload, а также установку защиты от обнаружения антивирусами с помощью apkwash.
Hacking Android apps with Frida — вводная статья о системе динамического анализа и внедрения кода Frida.
Разработка
Статьи
- Implementing In-App Billing in Android — статья о том, как реализовать функцию «покупки в приложении» в Android;
- Optimize Your Build Speed — официальная документация Google о том, как повысить скорость сборки приложения для Android;
- Android Threading: All You Need to Know — большая статья с рассказом о разных подходах к многопоточному программированию в Android;
- App Shortcuts in details — статья о том, как реализовать App Shortcuts (меню, появляющееся при долгом удержании иконки приложения) в Android;
- Exploring Android O: Notification Channels — статья о работе с каналами уведомлений в Android O;
- Android Dev Sources — большой каталог ресурсов, посвященных разработке для Android;
- Reducing your networking footprint with OkHttp, Etags and If-Modified-Since — описание способов снизить потребление трафика приложением, используя библиотеку okHttp3.
Библиотеки:
- CameraKit — очень простая в использовании библиотека для работы с камерой (Camera2 API тоже поддерживается);
- Open-Source Android Apps — огромный каталог открытых приложений и игр для Android.
На этом на сегодня все.