Все потоки
Поиск
Написать публикацию
Обновить
306.47

Android *

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

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

Atomic Derby: мы сделали крутой PvP-экшен на мобилки — осталось дожать до релиза. Ищем Unity-разработчика

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.6K

https://www.youtube.com/watch?v=ZqW-WUt11vE

Создаём изометрический автомобильный PvP для мобилок — рассказываю, что готово и что нужно чтобы довести до MVP.

Читать далее

Жизнь после отвала eMMC: Загружаем Android с MicroSD

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров11K

Есть у меня страсть к коллекционированию и ремонту интересных смартфонов прошлых лет. Недавно подписчик подарил мне весьма диковинный и необычный гаджет 2011 года: бюджетный QWERTY-смартфон Samsung Galaxy Y Pro с чипсетом от Broadcom. Помимо самого факта того, что смартфон обладал QWERTY-клавиатурой, меня также заинтересовало его кровное братство с Raspberry Pi первого поколения. Но вот незадача, смартфон не включался и просто висел на логотипе. Если вам интересен необычный кейс ‭«отвала‭» eMMC и переноса Android на MicroSD-флэшку — жду вас под катом!

Читать далее

Разбираем чистую архитектуру в Android: от а до я

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

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

ты занимаешься Android разработкой и все вокруг говорят о какой-то «чистой архитектуре» (она же - Clean Architecture), указывают её в требованиях к вакансиям, указывают на практиках в вузе и т.д.

Однако информацию о данном подходе приходится собирать по кусочкам. Так что в данной статье я Даниил Закляков, разработчик WMT Group попробую на своем опыте подробно, доступным языком объяснить с чего начинать и как эту архитектуру строить.

Зачем всё это?

В процессе изучения чистой архитектуры может показаться, что это - чепуха, выгода от которой не оправдывает время, которое затрачивается на её создание. Но давайте просто посмотрим на два проекта: один без архитектуры, другой с архитектурой.

Читать далее

Как я писал проводник для Wear OS и что из этого вышло

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

Как я писал проводник для Wear OS и что из этого вышло

О чём тут пойдёт речь:

- Почему я решил этим заняться
- Как я разрабатывал приложение (в общих чертах)
- Обманчивые гайдлайны Google и о том, как я пытался победить банальные (на первый взгляд) проблемы

Читать далее

Валидация полей формы в андроид приложении и не только

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

Регулярно возникают задачи проверять, что пользователь вводит в поля и сообщать ему если он что-то сделал не правильно.

Ничего в этом сложного нет,

напишем парочку регулярных выражений

const val SNILS_PATTERN = "[0-9]{3}-[0-9]{3}-[0-9]{3}\\s[0-9]{2}"

const val LATIN_NAME_WITH_COMMA = "[${LATIN_LETTERS}0-9\\-`'.,()\\s]*"

и маски

const val SNILS_MASK = "[000]-[000]-[000] [00]"

применим DataBinding и будет норм..

Если вы так считаете, дальше можно не читать.

Другим путём, пойдём мы

BundledSQLiteDriver: новый взгляд на SQLite в Android и Kotlin Multiplatform

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

BundledSQLiteDriver из библиотеки androidx.sqlite — это специальная сборка встраиваемой СУБД SQLite от команды разработчиков Android Jetpack, предназначенная для использования в Kotlin Multiplatform проектах. В этой статье мы рассмотрим её особенности.

Читать далее

Как мы сделали дизайн-систему для мобильных устройств и TV

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

Привет, Хабр! Меня зовут Вячеслав Таранников, я ведущий Android-разработчик в RuStore, и сегодня расскажу о нашей дизайн-системе, разобрав две ключевые темы: токены и компоненты.

Эта статья основана на моем совместном докладе с Дмитрием Смирновым, руководителем команды разработки, — «Как мы создали дизайн-систему для мобильных устройств и ТV на Jetpack Compose». Мы представили его на митапе «Coffee&Code ✕ RuStore | TechBrew» и теперь делимся основными идеями с вами.

Читать далее

Поддержка webextensions под Андроид, вторая серия

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров677
image

Очень добрый день!


Меня зовут Тимур и я программист.


Сегодня я хочу продолжить разговор о поддержке расширений браузера (хромиум) на Андроид. В прошлой своей статье я рассказал о том что у меня получилось завести расширения но народ так занят стенаниями по поводу закрытия проекта Kiwi что никто особо на это внимания не обратил, поэтому буду краток, это скорее промежуточный отчет чем анонс.

Читать дальше →

Lissen: как я красивый плеер для аудиокниг писал

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


Я слушаю аудиокниги с 2014 года. За это время я перепробовал много разных сервисов: и с моделью “по подписке”, и те, что продают каждую конкретную книгу.


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


У него был и есть потрясающе красивый неофициальный iOS-клиент, которым я пользовался какое-то время. Осенью 2024 года Google наконец показала Pixel 9 и я решил, что пора попробовать Android


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


Так родилась идея написать Lissen — красивый, минималистичный и удобный клиент для Audiobookshelf.


Сегодня я расскажу про разработку, релиз и опыт использования приложения, которое я писал для себя.

Читать дальше →

Все знают, какие приложения установлены у вас в телефоне

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров18K

Ещё несколько лет назад любое приложение, установленное на устройство с Android, могло без разрешений видеть все остальные приложения.

В 2022 году, с выпуском Android 11, Google удалила этот доступ для разработчиков приложений. Согласно новой политике видимости пакетов, приложения должны видеть другие приложения только в том случае, если те необходимы для их базовой функциональности. Кроме того, разработчики должны явным образом объявлять эти приложения в обязательном для всех приложений Android файле конфигурации AndroidManifest.xml.

В крайних случаях, например, для диспетчеров файлов, браузеров и антивирусов Google предоставляет исключение в виде разрешения QUERY_ALL_PACKAGES, которое позволяет видеть все установленные приложения.

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

Я скачал несколько десятков пришедших мне в голову приложений и начал изучать их файлы манифестов. Они ведь наверняка будут уважать мою конфиденциальность и запрашивать только те приложения, которые необходимы для их базовой функциональности?

Читать далее

Мобильная разработка за неделю #581 (24— 30 марта)

Время на прочтение4 мин
Количество просмотров947
В новом дайджесте iOS-разработка в Zed и Picture-in-Picture в 2ГИС, автоматизация версионирования и системные идеи, которые никогда не работают, посудомойка в облаке, дело асинхронного программирования, ускорение Android-сборки и многое другое. Заходите!

Читать дальше →

Автоматизация версионирования в Kotlin Multiplatform: Решение для Android и iOS

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

Привет, Хабр!

В этой статье я делюсь решением, как настроить версионирование приложения для Android и iOS с помощью Kotlin Multiplatform. Я рассказываю о том, как минимизировать человеческий фактор, автоматизировав процесс обновления версий, и как избежать дублирования информации в разных частях проекта. В статье представлен пример кода, который можно адаптировать под свой проект.

Читать далее

С заботой о комфортном просмотре: как команда VK справляется с высокой нагрузкой на видеоплеер на Android-устройствах

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

По итогам четвёртого квартала 2024 года только в VK Видео количество суточных просмотров выросло до 2,7 миллиарда, а месячная аудитория — до 72,2 миллиона человек. Часть этих просмотров приходится на Android-устройства.

Меня зовут Егор Баженов. Я Android-разработчик в команде VK Видео. В этой статье расскажу о специфике работы видеоплееров в Android-сервисах с большой нагрузкой, возможных ошибках и способах их исправления.

Читать далее

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

Как мы ускоряли Android-сборку «селлера»

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

Всем привет! Меня зовут Женя, я руководитель отдела разработки «Аккаунт» в мобильном приложении для продавцов платформы Ozon Seller. Поделюсь нашим опытом работы над улучшением скорости сборки Android-проекта.

Скорость сборки проекта напрямую влияет на time to market продукта и (внезапно) удовольствие от процесса разработки. Если каких-то 50 лет назад время компиляции могло доходить до нескольких дней, и это считалось нормальным, то сейчас даже лишняя пара минут сборки проекта в Android Studio может заставить понервничать. Чтобы сберечь здоровье себе и CI, скорости сборки проекта нужно уделять внимание. Нетерпеливые читатели могут сразу посмотреть итоговую таблицу с результатами в конце статьи.

Читать далее

Распутываем легаси-код на Android проекте

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров956

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


1. Поставьте логгер на изменение базы данных. Все ORM поддерживают подобный функционал. На Room можно это сделать так

Читать далее

Kotlin и Jetpack Compose: портируем DOOM на смарт-часы

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

DOOM стал культовым шутером от первого лица, который изменил лицо игровой индустрии. С момента своего появления он не только покорил миллионы игроков по всему миру, но и оставил неизгладимый след в истории видеоигр. Теперь, вдохновленный существующими проектами на GitHub, я решил взять на себя смелую задачу — портировать эту легендарную игру на платформу Android Wear. Давайте погрузимся в процесс и реализуем этот захватывающий проект!

Читать далее

Dagger 2 и жизненный цикл

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

Привет, меня зовут Владимир Феофилактов, я занимаюсь Android‑разработкой мобильного приложения СберБизнес. Я хотел бы поделиться с вами историей поиска ответа на вечный вопрос: «когда и как чистить граф зависимостей?».

У нас было приложение‑монолит с главным ComponentManager, где строился весь граф зависимостей. Файл был немаленький. Также во всех фрагментах необходимо было вручную создавать DI‑компонент и следить за его чисткой, а разработчики то и дело забывали про это или чистили неправильно.

Потом началась кампания по выносу фичёвого кода в отдельные модули. С каждым новым модулем всё чаще выстреливала циклическая зависимость, и приходилось писать обвязку (прокси‑класс). Главный ComponentManager оставался связующим звеном между фичёвыми модулями, через которое происходил переброс зависимостей, так что он всё ещё был большим и сложным. Иногда рефакторинг, связанный с перемещением кода из одного модуля в другой, вызывал многочасовую борьбу за нахождение пути решения проблемы «почему сборка никак не соберётся?». Иногда, чтобы доставить зависимость из одного модуля в другой, нужно было строить сложные конструкции, как при игре в «Твистер».

Вся эта увлекательная и мучительная игра продолжалась довольно долго, пока на помощь, как бы странно это ни звучало, не пришёл новомодный Compose. Тогда мы только начинали его осваивать, и я решил сделать небольшой pet‑проект, состоящий из двух экранов, с применением Compose для его изучения. Естественно, в этот проект подключил всё самое современное из библиотек, включая Dagger 2. Как обычно, немного повозившись с настройкой DI, в голове всплыла вся та боль, которую мы испытываем в нашем проекте.

Читать далее

ServerSocket на Android в пределах одной сети

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

Продолжая серию статей, общения между процессами и между двумя приложениями, в заключительной части разберем примеры в пределах одной Wi-Fi‑сети.

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

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

Читать далее

Монетизация игр и приложений

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

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

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

Читать далее

Как работать с Custom Layout в Jetpack Compose

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

Всем привет! Я Александр Власюк, старший Android-инженер в Авито, разрабатываю Авито Кошелек и веду телеграм-канал «​​Записки инженера». В этой статье вспоминаем, как лейауты работают в Compose, обсуждаем изменение лейаута отдельного компонента, смотрим, как создавать кастомные Layout и LazyLayout и учимся откладывать композицию. И всё это на примерах, в том числе из дизайн-системы Авито.

Читать далее

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