Обновить
106.93

Android *

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

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

Современные подходы к управлению UI: low-сode & Backend-Driven UI

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

Привет, меня зовут Михаил Шевченко. В Авито я проектирую и разрабатываю backend low-code платформы Bricks. В этой статье рассказываю о том, почему в Авито было принято решение развивать собственные low-code-решения и Backend-Driven UI, объясняю их устройство и делюсь достигнутыми результатами.

Читать далее

Безопасное обновления состояния в ViewModel

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели536

Это краткая заметка о подходе, который я выработал для себя, чтобы обновлять состояние экрана при использовании MVI-like паттерна в ViewModel.

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

Читать далее

Плагины: автоматизация разработки в продуктах JetBrains (на примере Android Studio)

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

Замечали, что при написании кода, очень часто приходится выполнять одни и те же действия, например, создавать одни и те же файлы, проводить одну и ту же настройку для разных проектов и тд? Это натолкнуло меня на мысль: «Можно ли упростить процесс за счёт автоматизации?».

Изначально была идея создать десктопное приложение для упрощения настройки и выполнения рутинных задач, однако возникло ограничение — Android Studio не предоставляет открытого API. Это очень усложнило бы работу, т.к. пришлось бы вручную прописывать работу с файлами, использование горячих клавиш и тд, поэтому следующим вопросом было: «Как автоматизировать разработку непосредственно внутри самого Android Studio?» Ответ пришел сам собой — использовать плагины.

Читать далее

Мобильная разработка за неделю #573 (27 января — 2 февраля)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели785
В новом дайджесте рассказываем о том, как Android управляет памятью, и смотрим под капот потокам, объясняем нюансы разработки PWA для Банка и программируем открытиями, исследуем удаление приложений в 2024 году, смешиваем цвета, ищем путь к стабильности и многое другое. Подключайтесь!

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

Vivaldi 7.1 для Android и iOS — стрельба дуплетом

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели817

Всем привет!

Не прошло и недели (вообще-то прошло), а мы уже выпускаем новый стабильный релиз Vivaldi 7.1 сразу для двух платформ - для Android и iOS. Возможно, это не очень хорошая идея - смешивать две аудитории читателей, но мы решили просто показать пользователям двух довольно разных платформ, что на самом деле не такие уж они и разные. По крайней мере, у себя в Vivaldi мы стараемся эту разницу максимально убрать. Хотя она ещё и имеется, но об этом - чуть ниже.

Читать далее

CI для мобильной разработки или как мы используем fastlane

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели1.2K

Хороший CI/СD — залог успешной реализации и быстрой выкатки проектов команды. Но нам приходилось поддерживать две версии CI и делать много ручной работы при обновлениях.

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

Реализовать такой CI получилось с использованием fastlane. В статье я расскажу, что мы сделали и каких результатов удалось достичь.

Читать далее

Мобильная разработка за неделю #572 (20 — 26 января)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели869
В новом выпуске распознавание номеров телефонов для пикника и первая бета Android 16, не всеобъемлющее руководство по тестированию пуш-уведомлений и 5 лет React Native в Shopify, технический гайд по сторис, годовой отчет “Состояние мобильного рынка в 2024 году” от Sensor Tower и многое другое. Подключайтесь!

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

RuStore не так уж и плох, как PirateStore

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели6.4K

Могут ли современные тренды превратить keygen (Генератор ключей) в легальный инструмент, доступный для скачивания из любого Android или iPhone маркетплейса?!

Выгодно ли тому же ruStore размещать у себя пиратский контент?!

Как можно докатиться до Android разработчика, будучи разработчиком Windows приложений?!

Читать далее

Как синтаксический сахар Kotlin может сломать вам логику работы приложения

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.1K

Как использование object и data class сломало работу моего приложения и какие уроки я вынес про синтаксический сахар Kotlin и IDEA, которая так сладко предлагает замены.

Подробности

Погружение в мир Lint'a в Android-проекте (часть 2)

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели1.2K

Продолжим рассматривать различные нюансы статического анализа с помощью Lint. Опираться будем на предыдущую статью. С момента её публикации прошло много времени, за которое вышло несколько значимых обновлений Android Gradle Plugin (а с ним и всех артефактов линтера), а также вторая версия Kotlin с новым компилятором. Вкратце рассмотрим наиболее заметные для нас изменения с небольшими примерами. Кроме того, удалось найти что-то похожее на полноценную документацию по lint (правда, редко обновляющуюся), наиболее интересные моменты оттуда тоже рассмотрим.

Читать далее

Большое обновление CV-возможностей для фреймворка Simple

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели1.1K

Добрый день! Представляю большое обновление CV-возможностей (ActiveCV 2.0) андроид-фреймворка Simple, о котором писал тут https://habr.com/ru/articles/720610/. Теперь ActveCV существует не параллельно разработке на обычных экранах, а является элементом экрана, таким как кнопка или надпись. Это не просто подход к дизайну, а совершенно другие возможности работы – совмещение логики экранов и обработки видеопотока.

Читать далее

Руководство по тестированию push-уведомлений

Время на прочтение13 мин
Охват и читатели12K

Представьте себе страшный сон тестировщика и в целом вашей команды – пользователи пишут в поддержку, что пуши не приходят, сообщения не доходят, а вы никак не можете воспроизвести проблему и у вас даже нет понимания: а как это воспроизводить, от чего вообще зависит доставка пушей?

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

Поэтому эта статья перед вами!

Читать далее

Мобильная разработка за неделю #571 (13 — 19 января)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели780
В новом дайджесте обсуждаем костыли поддержки iOS 15 на SwiftUI и корутины Kotlin, приложения на Go и шаблон на все случаи жизни, 30 уроков от 30 лучших продуктовых лидеров, мест Snap в виде исчезающих фотографий в iMessage, переделку одного устройства и многое другое. Подключайтесь!

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

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

Как я случайно купил последний в мире прототип игрового смартфона и доработал его до ума

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

В своём блоге я время от времени рассказываю о различных устройствах, предназначенных для разработчиков портативных гаджетов - девкитах, инженерных прототипах и т.п. Недавно я ковырял китайские барахолки в поисках интересных девайсов для будущих статей и мой взор привлёк весьма интересный игровой смартфон на очень редком процессоре всего за 1.000 рублей. Изучив информацию в сети, я узнал что устройство было разработано небольшим стартапом для локального рынка Китая, а когда телефон приехал ко мне... оказалось, что это не серийное устройство, а редчайший инженерный прототип, о которых в сети нет никакой информации. В сегодняшней статье мы с вами узнаем: почему этот прототип вероятно последний в мире, что из себя представляет смартфон и что у него "под капотом", а также пофиксим некоторые баги в прошивке, которые не успели поправить разработчики устройства. Интересно? Тогда жду вас под катом!

Читать далее

Альтернатива Firebase Dynamic Links на KMP

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

В этой статье я коротко расскажу как реализовал функционал Firebase Dynamic Links своими силами в KMP.

Читать далее

Go в GUI, я создал

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели8.1K

Идея сделать игру под Android на Go была неоднозначной, но интересной. Я легко мог представить Go не только в привычной для него сервисной нише, но и в прикладной — его кросс-платформенность и близость к системному уровню в сочетании с простотой пришлись бы там очень кстати. И вот мы здесь — игру мечты я пока не создал, но пару игр попроще сделать удалось.

В этой статье я хочу рассказать об инструментах, появившихся по ходу работы. Сами инструменты я объединил в библиотеку Youngine и опубликовал на GitHub. Там же я опубликовал небольшой пример проекта.

Читать далее

Экспорт и импорт File Templates в IDE от Intellij

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели982

Всем привет! На связи Дима Котиков, и это заключительная статья цикла про File Templates. В предыдущих частях мы познакомились с инструментом File Templates, разобрали синтаксис написания шаблонов и написали шаблоны для кода типового экрана SomeFeature мобильного приложения.

В заключительной части разберем, как можно экспортировать и импортировать File Templates в Intellij-IDE, а также подведем общие итоги по циклу статей.

Читать далее

Управление настройками с помощью Jetpack DataStore: Простой подход к сохранению данных разных типов

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели1.8K

Всем здравствуйте. Это моя первая статья на такую публику, поэтому просьба не судить строго! :-)

При разработке Android-приложений часто возникает необходимость сохранять пользовательские настройки, такие как выбор темы, язык или другие данные пользователя. Jetpack DataStore — это современное решение для хранения таких данных, которое заменяет устаревший SharedPreferences. В этой статье мы рассмотрим, как использовать DataStore для хранения различных типов данных (Boolean, Integer, Float и String) и как интегрировать его с архитектурой MVVM, используя StateFlow для обновления UI.

Что такое DataStore?

Jetpack DataStore — это библиотека для хранения данных, поддерживающая асинхронное и безопасное чтение и запись данных. Она предоставляет два типа хранилищ:

1. Preferences DataStore: Используется для хранения пар "ключ-значение" (похож на SharedPreferences).

2. Proto DataStore: Используется для хранения структурированных данных на основе протокольных буферов.

В этой статье мы сосредоточимся на Preferences DataStore, которое идеально подходит для хранения настроек приложения.

Читать далее

Примеры использования File Templates для типовых сценариев, где требуется шаблонный код

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели1.5K

Всем привет! На связи Дима Котиков, и это вторая статья из цикла про File Templates. В предыдущей части мы описали проблему с необходимостью написания шаблонного кода и вариантами решения, познакомились с инструментом шаблонов File Templates и разобрали синтаксис написания шаблонов.

В этой статье перейдем к практике — напишем шаблоны для кода типового экрана SomeFeature мобильного приложения.

Читать далее

Топ-5 популярных вопросов на Android собеседовании [2025]

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

Cобеседования в IT - это всегда вызов и Android тут, конечно же, не исключение. Для успешного прохождения интервью в крупные и востребованные компании современный Android-разработик должен держать в голове огромное количество областей: от "базы" в виде Computer Science (структуры данных, алгоритмы) и навыков проектирования (архитектура, паттерны, System Design) до знания Java, Kotlin и, разумеется Android SDK. Добавим сюда и популярные фреймворки и библиотеки (которые к тому же устаревают каждые пару лет!) вроде RxJava и Kotlin Coroutines и получается совсем уж, на первый взгляд, неподъемный багаж необходимых знаний... К счастью, многие вопросы пересекаются между компаниями, так что наработав некоторую «базу» из них вы сильно повысите свои шансы на положительный результат и заветный оффер :-) Давайте разберем ТОП-5 вопросов, с которыми можно столкнуться в крупных компаниях на российском рынке, поехали!

Читать далее