Как стать автором
Обновить
204.1

Разработка под Android *

Пишем под самую популярную мобильную ОС

Сначала показывать
Порог рейтинга
Уровень сложности

Яндекс выпускает Yatagan — опенсорс-фреймворк для внедрения зависимостей, позволяющий ускорить сборку

Время на прочтение 29 мин
Количество просмотров 22K


Меня зовут Фёдор Игнаткевич, я делаю приложение Яндекс и мобильный Яндекс Браузер для Android. Примерно год назад я предложил команде идею фреймворка для внедрения зависимостей, который более чем вдвое ускорил сборку обоих проектов и который мы сегодня выложили на Гитхаб — чтобы разработчики других приложений тоже могли улучшить скорость сборки. Я с нуля реализовал фреймворк, а затем мы вместе с командой интегрировали его в проекты и сейчас активно используем.

Как раз про свой опыт разработки я и хочу рассказать. Давайте попробуем разобраться, какие есть факторы замедления сборки, как Yatagan, совместимый с Dagger по API, с ними справляется и какие ещё задачи могут стоять перед DI-фреймворком — например, в части зависимостей под рантайм-условиями. Кстати, нативная поддержка этих зависимостей в Yatagan избавила нас от ручной обработки состояний A/B-экспериментов в DI.

Статья содержит много технических моментов, которые я открыл для себя по ходу исследований. В конце посмотрим, каким проектам Yatagan может быть полезен в качестве замены, а в каких польза от него будет невелика.
Читать дальше →
Всего голосов 70: ↑66 и ↓4 +62
Комментарии 13

Orange Pi OS: операционная система от создателей конкурента Raspberry Pi. Возможности ОС

Время на прочтение 3 мин
Количество просмотров 29K

Мы не раз и не два публиковали обзоры одноплатников, в число которых входили и представители линейки Orange Pi. Эти устройства выделяются на фоне многих других — не сказать, что они идеальны, но соотношение цена/качество неплохое. Сегодня, правда, поговорим не об одноплатниках, а программном обеспечении для них. Дело в том, что появилась вполне функциональная ОС, которая получила название Orange Pi OS. Интересно то, что есть несколько версий этой операционной системы, которые базируются на Arch Linux, Android и платформе Open Harmony. Подробности — под катом.
Читать дальше →
Всего голосов 66: ↑63 и ↓3 +60
Комментарии 21

Каково это: строить бизнес в разработке, когда тебе 40

Время на прочтение 8 мин
Количество просмотров 21K
Кадр из фильма «Перекрёсток» (1986)

Я родился в 1981-м, так что в прошлом году мне стукнуло 40. Если верить Википедии, это первый год поколения Y (миллениалов). Миллениалов обычно ассоциируют с претенциозным характером, и в моём случае так оно и есть. Родители кучу раз говорили мне, как тяжело им приходилось работать и идти на жертвы, чтобы обеспечить для меня достойное образование. Из этого следовало, что мне следует как можно лучше учиться и усердно трудиться, что я и делал (спасибо вам за совет, мама и папа ✝). И вот чему я научился. Это моя история о росте, обязанностях и пределах.
Читать дальше →
Всего голосов 74: ↑64 и ↓10 +54
Комментарии 51

Никто не бесил меня больше, чем Google Play Team

Время на прочтение 10 мин
Количество просмотров 25K

Меня зовут Дэниел Рид. Я пишу код уже более двадцати лет. Я сооснователь и ведущий разработчик SaaS-компании, предоставляющей ПО для управления фитнес-студиям, например студиям йоги.

Наше базовое приложение хостит все студии в одном месте, однако за дополнительную цену мы разрабатываем и публикуем «брендированное приложение», которое, по сути, является версией нашего базового приложения, привязанным только к одной студии.

Недавно Google Play сообщил нам, что нам нужно обновить версию целевого SDK, в противном случае наши приложения больше не будут отображаться в Google Play Store.

Без проблем! Эти приложения уже много раз проходили процесс проверки и подтверждения, поэтому нам достаточно было лишь запустить целевой SDK и выполнить наш скрипт для отправки новых приложений… или, по крайней мере, так думал я.

В этом посте я расскажу о двух неделях общения мелкого разработчика с Google Play Team.
Читать дальше →
Всего голосов 79: ↑78 и ↓1 +77
Комментарии 79

Истории

Пишем приложение на Mi Band 7 с сервисной частью

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 31K

Недавно я купил себе Mi band 7, по началу хотел купить 6-ую версию, пока не узнал, что на 7-ой обновилась операционная система и теперь она поддерживает установку приложений. Да, официально они об этом не заявили, но умельцы уже сделали множество приложений. Они ставят их как циферблаты, и это вполне обычные приложения. Но все эти приложения работают только локально на самом MiBand 7, не имея возможности взаимодействовать ни с телефоном, ни с интернетом. Я углубился в байткод приложения и документации по ZeppOS чтобы найти способ создавать приложения, взаимодействующие с интернетом, в этой статье я опишу свой путь. В итоге у меня получилось сделать запрос в интернет с часов и даже запустить мост для отладки приложений. 

Читать далее
Всего голосов 160: ↑160 и ↓0 +160
Комментарии 24

Как я случайно обошёл блокировку Google Pixel и получил за это $70 тысяч

Время на прочтение 8 мин
Количество просмотров 83K

Я обнаружил уязвимость, похоже, затронувшую все телефоны Google Pixel: вы можете дать мне любое заблокированное устройство Pixel, и я верну его вам разблокированным. Баг устранили в обновлении безопасности 5 ноября 2022 года.

Проблема позволяла атакующему с физическим доступом к телефону обойти меры защиты экрана блокировки (отпечаток пальца, PIN и так далее), получив полный доступ к устройству пользователя. Уязвимость зафиксирована как CVE-2022-20465; она может затронуть и устройства Android других производителей. Мои рекомендации по патчу и сырой баг-репорт, отправленные Google, можно найти здесь: feed.bugs.xdavidhu.me.
Читать дальше →
Всего голосов 192: ↑189 и ↓3 +186
Комментарии 163

Сложности переноса Papers, Please на мобильные

Время на прочтение 16 мин
Количество просмотров 18K
Mobile-Title

Я разработал Papers, Please в 2013 году специально с расчётом на десктопные компьютеры и управление мышью. В 2022 году десктопных компьютеров уже не существует и все компьютеры — это мобильные телефоны. Настало время обновить этого динозавра.

Эта статья из тысяч слов и мегабайтов изображений раскроет вам некоторые аспекты портирования игры с большого десктопа на маленький телефон. Отдавая дань прошлому, я написал эту статью как большой кусок текста с вкраплениями тегов img, а не превратил её в яркое видео. Ещё через девять лет я портирую этот пост в VR.

За исключением минимальных модификаций, обеспечивающих работу интерфейса, в этом порте отсутствуют изменения или дополнения контента. Никаких безумных сюжетных поворотов, никаких новых персонажей, никаких озвученных диалогов, никакой стереоскопической графики с рейтрейсингом. И, что самое печальное, никаких разблокируемых скинов и украшательств.

То же блюдо на другой тарелке.
Читать дальше →
Всего голосов 65: ↑64 и ↓1 +63
Комментарии 24

Рефакторинг приложения с десятилетним легаси за три месяца. Опыт Яндекс Музыки

Время на прочтение 15 мин
Количество просмотров 33K


Однажды ты просыпаешься и понимаешь: избыточность компонентов и рассинхронизация в твоём приложении начинают вредить пользователям. Однажды ты смотришь на написанное давным-давно ядро, плачешь горькими слезами, и приходит это некомфортное, но вместе с тем немного соблазнительное ощущение — что рефакторинг назрел. Добро пожаловать на экскурсию по рефакторингу Музыки, начиная с ресёрча и заканчивая эксплуатацией! Я покажу вам реальный код и постараюсь в деталях вспомнить, как мы формировали требования к механизмам и разрабатывали их, рисовали у себя в голове и в коде границы ядра, по одной переделывали очереди и внедряли то, что получилось, в SDK.
Читать дальше →
Всего голосов 57: ↑54 и ↓3 +51
Комментарии 113

Эпоха красивого кода прошла. Пришло время быдлокода

Время на прочтение 2 мин
Количество просмотров 114K

Эпоха красивого кода прошла. Пришло время быдлокода    

Давеча решил я отключить ненужные плагины в настройках Android Studio. Снял галочки напротив плагинов которые для меня не нужны, IDE не предупредила ни о каких возможных проблемах.

Перезапустил IDE, и вуаля:

"Missing essential plugins... Please reinstall from scratch."

Читать далее
Всего голосов 188: ↑132 и ↓56 +76
Комментарии 430

Почему я пишу игры на Unity

Время на прочтение 6 мин
Количество просмотров 32K

Здравствуйте. Меня зовут Валентин, мне 14 лет и я являюсь разработчиком игр. В рамках этой статьи хотелось бы рассказать о том, как молодой человек может начать, продолжить и достичь некоторых результатов в разработке игр с использованием движка Unity.

Читать далее
Всего голосов 116: ↑112 и ↓4 +108
Комментарии 59

Возможности интеграции Counter-Strike: Global Offensive

Время на прочтение 9 мин
Количество просмотров 15K
Image by andytb under license CC BY-SA 2.0
Counter-Strike: Global Offensive — современная версия старой доброй «CS 1.6». За двадцать лет развития серии технологии сильно изменились. Ранее соревнования по CS проходили в конференц-залах, а информация, доступная наблюдателю, была крайне скудна. Сейчас крупные соревнования по Counter-Strike проводятся на огромных стадионах, а количество выводимой на экраны информации зашкаливает.

Мне стало интересно, как организован экспорт игрового состояния в сторонние системы, например, для управления сценическим освещением. В этой статье я расскажу про то, как это работает, и покажу, как можно превратить телефон на Android в устройство вывода игрового состояния.
Читать дальше →
Всего голосов 51: ↑51 и ↓0 +51
Комментарии 7

Взламываем ТВ-приставку, чтобы получить плацдарм для хакерских атак

Время на прочтение 8 мин
Количество просмотров 34K

Под катом вас ждет профессиональный экскурс в безопасность низкоуровневого ПО от одного из наших сотрудников. Вы узнаете, как получить доступ к Nand-памяти без программатора, обмануть загрузчик нулевого уровня и превратить Android-приставку в зомби за десять секунд.

Читать далее
Всего голосов 64: ↑61 и ↓3 +58
Комментарии 18

Почему любой Android снимает видео хуже iPhone?

Время на прочтение 10 мин
Количество просмотров 133K

Привет, камрады, киноделы и просто читатели! 

Некоторые из вас меня знают как разработчика Андроид-приложения mcpro24fps, предназначенного для профессиональной видеосъёмки на телефон. И сегодня я бы хотел обсудить такую тему: «Почему iPhone остается лидером в видеосъёмке?»

Читать далее
Всего голосов 259: ↑243 и ↓16 +227
Комментарии 716

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн

CalyxOS: лучший способ очистить Android от следов Google

Время на прочтение 5 мин
Количество просмотров 61K

Android Open Source Project — свободный проект. Однако в него очень глубоко проникла корпорация Google. К сожалению, всё больше API и библиотек Android теперь доступны только на смартфонах с предустановленными приложениями Google Apps (GApps). Таким способом Google эффективно привязывает сторонние приложения к своей закрытой экосистеме. В результате ряд популярных опенсорсных приложений уже не могут работать без библиотек Google.

По сути, Android представляет собой особый вид опенсорса типа «смотри, но не трогай», по модели Shared Source. Неудивительно, что набирают силу опенсорсные проекты, которые ставят целью полностью удалить Google из мобильной ОС. Один из последних примеров — прошивка CalyxOS, ориентированная на безопасность и приватность.
Читать дальше →
Всего голосов 59: ↑57 и ↓2 +55
Комментарии 95

Готовимся к Windows 11: добавляем поддержку полноценной клавиатуры в Android-приложение

Время на прочтение 4 мин
Количество просмотров 9.1K

Многие мобильные приложения уже могут конкурировать с полноценными десктопными вариантами, а иногда и превосходить их. Офисные пакеты, фоторедакторы и IDE вполне неплохо работают на портативных девайсах. Samsung, например, даже сделал специальный режим DeX Mode, который позволяет подключить к смартфону монитор и периферию.

А скорый релиз Windows 11 с возможностью устанавливать любые APK-файлы прямо намекает, что пора озаботиться поддержкой десктопных режимов в своих мобильных приложениях. Один из шагов к этому — добавить полноценную поддержку клавиатуры, чем сегодня и займёмся.

Под катом разберём навигацию по RecyclerView, привязку горячих клавиш к toolbar menu, добавим кастомные сочетания и покажем пользователям, как ими пользоваться.

Читать далее
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 16

Работа с фоновыми задачами в Android 12: переезжаем с foreground service на expedited jobs

Время на прочтение 4 мин
Количество просмотров 10K

С релизом Android 12 приложения, где новая версия операционки будет указана в targetSdkVersion, получат запрет на запуск foreground-сервисов в бэкграунде. В качестве альтернативы Google предлагает WorkManager, который с появлением expedited jobs станет предпочтительным вариантом для запуска высокоприоритетных фоновых задач. 

О нём и пойдёт речь в статье — под катом обсудим новые возможности инструмента, подключим его к приложению и реализуем миграцию с foreground-сервиса.

Читать далее
Всего голосов 60: ↑60 и ↓0 +60
Комментарии 19

Делаем сервер из Android-телефона

Время на прочтение 8 мин
Количество просмотров 115K

Некоторое время назад мне пришла в голову интересная идея — превратить свои старые телефоны (их скопилось немало за десять лет) в серверы, в качестве альтернативы покупке Raspberry Pi.


image


На то было несколько причин: во-первых, у телефонов есть батарея, что для сервера практически бесплатный мини-UPS, во-вторых, внутренняя память смартфона (UFS) работает быстрее и надёжнее, чем SD-карта. В-третьих, у телефонов имеется экран, по которому можно отслеживать состояние сервера.


Ну и в-четвёртых, мне просто было жаль их выбрасывать. Консьюмеризм в наше время предписывает каждый год-два покупать новые смартфоны, производители блокируют возможности железа, которые им невыгодны, прекращают поддержку старых моделей, оставляя людей беспомощными. Миллионы смартфонов отправляются на свалку истории каждый год, хотя каждый из них это мощный компьютер.


TL;DR: в этом посте будут разобраны вопросы установки PostmarketOS на смартфон,
поднятия на нём в качестве примера Docker и веб-приложения в нём.

За длинной версией под кат
Всего голосов 130: ↑129 и ↓1 +128
Комментарии 97

Банки ультимативно лезут к нам в ш̶т̶а̶н̶ы̶ личную жизнь

Время на прочтение 5 мин
Количество просмотров 132K

Пару лет назад мы делали обзор премиальных банковских карт и обзор как экономить на страховках, если нет премиалки. А сейчас мы проанализировали порядка сотни приложений банков на права доступа, которые они требуют при установке их мобильного приложения на андроид. Результаты свели в таблицу.

Банковские приложения и сами банки ведут себя очень наглым образом. Уже при установке они запрашивают права доступа, которые им необязательны или совсем не нужны для работы. Например, приложение Сбербанка сразу требует доступ к звонкам и фоткам. Я категорически против. Отказываю. А приложение не хочет работать при таком раскладе.

Читать далее
Всего голосов 209: ↑198 и ↓11 +187
Комментарии 428

Rust включили в список основных языков для разработки платформы Android

Время на прочтение 3 мин
Количество просмотров 14K

На днях компания Google сделала важный шаг, объявив о включении языка программирования Rust в число языков, которые допускаются для разработки платформы Android. Да, еще в 2019 году компилятор Rust включили в дерево исходных текстов Android, но это была экспериментальная поддержка.

Сейчас в Android планируется добавить первые компоненты на Rust, это будут новые реализации механизма межпроцессного взаимодействия Binder и Bluetooth-стека. Все это хорошо, но зачем весь этот сыр-бор с включением Rust?
Читать дальше →
Всего голосов 61: ↑61 и ↓0 +61
Комментарии 19

13 подвохов мобильного приложения, о которых лучше знать до старта разработки

Время на прочтение 13 мин
Количество просмотров 35K

Главная сложность в разработке приложения – накодить его функционал. Например, сделать редактирование текста для приложения-блокнота. Так я полагал, когда был моложе и наивнее.

С тех пор я запустил три приложения руками разработчиков и ещё одно собственноручно. Не бог весть какой опыт, но иллюзий поубавилось. А реализация функционала видится мне теперь самой простой и прогнозируемой задачей из всех.

Хочу поделиться краткой выжимкой из своего опыта: какие неожиданные сложности вас ждут, если вы делаете мобильное приложение впервые.

Читать далее
Всего голосов 58: ↑57 и ↓1 +56
Комментарии 20

Вклад авторов

Работа