Как стать автором
Обновить
2
0
Дмитрий @qoj

Android Developer

Отправить сообщение

Как я искала у себя все болезни мира, а нашла выгорание

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

Полгода назад градусник показал 37,2 — с тех пор температура не опускалась. Я сдала несколько литров крови и других жидкостей, потратила огромные деньги на врачей и готовилась умирать молодой. 

Читать далее
Всего голосов 31: ↑21 и ↓10+19
Комментарии48

Как я победил хаос умных устройств, или Цифровая трансформация жилого пространства

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

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

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

Как сделать тесты на Espresso более читабельными и стабильными

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров3.2K
Если вы писали тесты на Espresso — тестовом фреймворке от Google с открытым исходным кодом, — то вы знаете, что они не всегда стабильны и легко читаемы. Меня зовут Ксения Никитина, я являюсь Android-разработчиком в мобильной команде «Лаборатории Касперского». В этой статье я предложу вам способ, как сделать так, чтобы ваши автотесты отвечали всем ключевым качествам: были хорошо читаемы, стабильны, логируемы, давали возможность делать скриншоты, работали с AndroidOS и, наконец, имели продуманную и понятную архитектуру.



Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

Как мы на 20% повысили скорость запуска приложения с помощью Baseline Profiles

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

На конференции Google I/O 2022 показали инструмент Baseline Profiles, с помощью которого можно ускорить запуск приложений после установки. Мы попробовали его у себя и получили прирост до 20% при холодном запуске приложения!

В этой статье расскажу, как внедрить инструмент, оценить его работу на production приложении, немного погружу в историю компиляторов в целом и рассмотрю более продвинутые сценарии для генерации Profile.

Демонстрировать это я буду на нашем приложении Дринкит.

Поехали!
Всего голосов 16: ↑15 и ↓1+20
Комментарии16

Компонентный подход. Организуем навигацию с помощью библиотеки Decompose

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

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

В статье много практики. Сначала я покажу, как с помощью Decompose и Jetpack Compose создавать отдельные флоу приложения. Далее обсудим реализацию bottom-навигации. И, наконец, объединим несколько флоу воедино, чтоб получить навигацию по всему приложению.

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

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

Kotlin Symbol Processing. От теории до практики

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

Я расскажу в этой статье о Kotlin Symbol Processing, также известном как KSP.

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

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

Ликбез по тревоге: узнаем ее в лицо

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

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

Читать далее
Всего голосов 11: ↑7 и ↓4+6
Комментарии9

Готовим Window Inset под соусом Jetpack Compose и щепоткой View

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

Обожаю запах свежей мобильной разработки по утрам, дням и вечерам ??

Все примеры из статьи можно посмотреть в этом репозитории.

Вот только почему, почему ещё не все используют режим edge2edge? Разве для того я покупал огромный безрамочный телефон, чтобы смотреть на траурные черные полоски с кнопками?!

К сожалению, сейчас все еще встречаются Android-приложения, которые не поддерживают edge-to-edge. Складывается ощущение, что разработчики либо не знают об insets, либо просто не умеют их готовить. На самом деле реализовать edge-to-edge не сложно, а благодаря этой статье вы сможете разобраться с insets в разы быстрее.

Сегодня я надену специальный мобильный фартук и расскажу, что такое режим edge-to-edge в мобильных приложениях и как работать с insets в Android. А ещё мы разберём примеры обработки insets не только во view, но и в compose. Если статьи о работе с insets в view еще можно найти на просторах интернета, то информацию про работу с ними в compose можно найти только в официальной документации.

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

Что мы используем для анализа Android-приложений

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

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

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

Как создавать анимации в Jetpack Compose

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

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

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

Автоматизация changelog в системе сборки Gradle

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


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


На помощь, как всегда, приходит автоматизация. Если интересно узнать о том, как автоматизировать генерацию changelog в gradle проекте, добро пожаловать под кат.

Читать дальше →
Всего голосов 4: ↑3 и ↓1+2
Комментарии4

Как мы настраивали CI в два захода

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

Я тружусь младшим разработчиком в отделе внутренней мобильной разработки VK. Когда я пришел в команду, у нас не было CI. При этом в одном репозитории у нас было семь приложений, и при каждом обновлении приходилось по отдельности их собирать, тратя на это кучу времени и сил. Я решил автоматизировать сборку, написав человеческий CI. И это — его история.

Читать далее
Всего голосов 13: ↑10 и ↓3+16
Комментарии0

Как и зачем мы встраивали одно Android-приложение в другое

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

Бывают ситуации, когда у заказчиков есть свои экосистемы и несколько приложений, и они решают упаковать их в SDK и встроить в другие, расширив таким образом функционал. SDK — не единичный Fragment/Activity и не набор утилит — это несколько десятков экранов с кучей бизнес-логики, сетевая прослойка, БД, и пара специфических фич, завязанных на камере смартфона.

Рассказываем, как мы встраивали одно Android-приложение в другое на практике и делимся советами, что делать, если вдруг вам придется столкнуться с подобным случаем разработки SDK

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

Android RecyclerView с использованием котлиновских sealed классов

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

RecyclerView — это один из самых лучших инструментов для отображения больших списков на Android. Как разработчики, вы, скорее всего понимаете о чем я говорю. У нас есть много дополнительных фич, таких как шаблоны вью холдеров, сложная анимация, Diff-Utils колбек для повышения производительности и т. д. Такие приложения, как WhatsApp и Gmail, используют RecyclerView для отображения бесконечного количества сообщений.

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

Автоматизация разработки для Android с помощью GitHub Actions

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

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

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

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

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

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

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

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

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

О дизайн-системе замолвите слово

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

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

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

Если вам удобнее не читать, а смотреть или слушать, то вы можете посмотреть выпуск о дизайн-системе в нашем видео-блоге “Охэхэнных историй”

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

Detekt — пишем свои правила

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

Мы в «Ситимобил», используем статический анализатор кода Detekt. Это инструмент, который при запуске проходит по проекту и показывает допущенные в коде code smell.
Сегодня мы расскажем, как написать свое правило и помочь команде соблюдать уникальные для проекта договоренности написания кода.

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

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

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

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

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

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

Читать далее
Всего голосов 15: ↑11 и ↓4+10
Комментарии40

Работа с AIDL в Android

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

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

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

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

Информация

В рейтинге
Не участвует
Откуда
Беларусь
Дата рождения
Зарегистрирован
Активность