![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/896/e96/74c/896e9674ce0d810d2050807738783dae.png)
Полгода назад градусник показал 37,2 — с тех пор температура не опускалась. Я сдала несколько литров крови и других жидкостей, потратила огромные деньги на врачей и готовилась умирать молодой.
Android Developer
Полгода назад градусник показал 37,2 — с тех пор температура не опускалась. Я сдала несколько литров крови и других жидкостей, потратила огромные деньги на врачей и готовилась умирать молодой.
Несколько лет назад я увлекся проектированием системы умного дома и создал для себя удобное пространство, в котором не нужно открывать дверь курьеру или включать настольную лампу для работы. Покажу, что подключил и как работает система. Сразу спойлер: умный дом не зависит от наличия интернета или облачных сервисов.
На конференции Google I/O 2022 показали инструмент Baseline Profiles, с помощью которого можно ускорить запуск приложений после установки. Мы попробовали его у себя и получили прирост до 20% при холодном запуске приложения!
В этой статье расскажу, как внедрить инструмент, оценить его работу на production приложении, немного погружу в историю компиляторов в целом и рассмотрю более продвинутые сценарии для генерации Profile.
Демонстрировать это я буду на нашем приложении Дринкит.
Это третья часть из серии статей про компонентный подход. В предыдущей статье мы рассмотрели, как реализовать сложный экран, разбив его на набор простых компонентов. Применим эту же идею, чтобы организовать сложную навигацию.
В статье много практики. Сначала я покажу, как с помощью Decompose и Jetpack Compose создавать отдельные флоу приложения. Далее обсудим реализацию bottom-навигации. И, наконец, объединим несколько флоу воедино, чтоб получить навигацию по всему приложению.
Я покажу примеры из реального приложения. Вы увидите, что предлагаемый подход хорошо подходит для больших приложений с десятками, а то и сотнями экранов.
Я расскажу в этой статье о Kotlin Symbol Processing, также известном как KSP.
Сначала обсудим теоретические основы работы KSP, после, конечно же, перейдём к практике. На примере небольшой задачи, подобной той, что мы решаем с помощью KSP в нашей компании, покажу, как анализировать код с помощью KSP, генерировать файлы, соблюдать контракты, описанные разработчиками KSP.
Сегодня мы поговорим про то, что такое тревога, откуда она берется, какие есть эволюционные предпосылки. Ответим на вопрос "как распознать тревогу?" и узнаем, чем полезная или адаптивная тревога отличается от неполезной, дезадаптивной.
Обожаю запах свежей мобильной разработки по утрам, дням и вечерам ??
Все примеры из статьи можно посмотреть в этом репозитории.
Вот только почему, почему ещё не все используют режим edge2edge? Разве для того я покупал огромный безрамочный телефон, чтобы смотреть на траурные черные полоски с кнопками?!
К сожалению, сейчас все еще встречаются Android-приложения, которые не поддерживают edge-to-edge. Складывается ощущение, что разработчики либо не знают об insets, либо просто не умеют их готовить. На самом деле реализовать edge-to-edge не сложно, а благодаря этой статье вы сможете разобраться с insets в разы быстрее.
Сегодня я надену специальный мобильный фартук и расскажу, что такое режим edge-to-edge в мобильных приложениях и как работать с insets в Android. А ещё мы разберём примеры обработки insets не только во view, но и в compose. Если статьи о работе с insets в view еще можно найти на просторах интернета, то информацию про работу с ними в compose можно найти только в официальной документации.
В этой статье расскажем про инструментарий для анализа мобильных приложений, который мы используем каждый день. Для начала поговорим про то, как запускать мобильные приложения, чем смотреть трафик, и рассмотрим инструменты для статического и динамического анализа мобильного приложения.
Анимации в Jetpack Compose довольно легко понять, применить и кастомизировать под требования дизайна. Но я ещё не видел ни одного туториала по анимациям в Compose на русском языке, поэтому подготовил на эту тему доклад для майского Mobius. А для тех, кто больше любит читать, чем слушать, подготовил статью. В материале мы обсудим виды анимаций, а также пройдём все шаги по способам их создания и кастомизации.
Маленькой команде не составляет труда поддерживать историю изменений приложения в ручном режиме. Но, когда команда начинает расширяться, такой файл как changelog, находящийся в системе контроля версий, становится «узким горлышком» и приводит к постоянным конфликтам и росту напряжения в команде.
На помощь, как всегда, приходит автоматизация. Если интересно узнать о том, как автоматизировать генерацию changelog в gradle проекте, добро пожаловать под кат.
Я тружусь младшим разработчиком в отделе внутренней мобильной разработки VK. Когда я пришел в команду, у нас не было CI. При этом в одном репозитории у нас было семь приложений, и при каждом обновлении приходилось по отдельности их собирать, тратя на это кучу времени и сил. Я решил автоматизировать сборку, написав человеческий CI. И это — его история.
Бывают ситуации, когда у заказчиков есть свои экосистемы и несколько приложений, и они решают упаковать их в SDK и встроить в другие, расширив таким образом функционал. SDK — не единичный Fragment/Activity и не набор утилит — это несколько десятков экранов с кучей бизнес-логики, сетевая прослойка, БД, и пара специфических фич, завязанных на камере смартфона.
Рассказываем, как мы встраивали одно Android-приложение в другое на практике и делимся советами, что делать, если вдруг вам придется столкнуться с подобным случаем разработки SDK
RecyclerView
— это один из самых лучших инструментов для отображения больших списков на Android. Как разработчики, вы, скорее всего понимаете о чем я говорю. У нас есть много дополнительных фич, таких как шаблоны вью холдеров, сложная анимация, Diff-Utils колбек для повышения производительности и т. д. Такие приложения, как WhatsApp и Gmail, используют RecyclerView
для отображения бесконечного количества сообщений.
Жизнь тяжела. Мы заняты делами, которые отнимают время, скучны и часто повторяются. Но ведь жизнь не должна оставаться тяжелой. Она может быть легкой. Вместо того чтобы трудиться над этими ежедневными задачами, найдите способ делегировать их, чтобы кто-то другой делал их за нас. Таким образом, будет больше времени для того, что мы хотим делать. Появится время на отдых.
Если вы когда-нибудь разрабатывали приложение для Android, то знаете, насколько утомительными могут быть некоторые задачи:
С релизом Android 12 приложения, где новая версия операционки будет указана в targetSdkVersion, получат запрет на запуск foreground-сервисов в бэкграунде. В качестве альтернативы Google предлагает WorkManager, который с появлением expedited jobs станет предпочтительным вариантом для запуска высокоприоритетных фоновых задач.
О нём и пойдёт речь в статье — под катом обсудим новые возможности инструмента, подключим его к приложению и реализуем миграцию с foreground-сервиса.
Практически каждая продуктовая компания рано или поздно приходит к мысли, что неплохо бы перестать раз за разом разрабатывать визуальные компоненты для каждого экрана в отдельности, что нужно подойти к этому вопросу более системно. В частности – сделать свою дизайн-систему. Мы в hh не стали исключением, и в этой статье хотим поделиться нашим собственным опытом разработки дизайн-системы, которая сейчас является общей для двух платформ – Android и iOS.
Мы поговорим о балансе между хаосом и системой, переиспользовании и дублировании, пройдемся по отношениям между дизайнерами и разработчиками, а также выясним, фронтенд – это только про покраску кнопок или нет?
Если вам удобнее не читать, а смотреть или слушать, то вы можете посмотреть выпуск о дизайн-системе в нашем видео-блоге “Охэхэнных историй”.
Мы в «Ситимобил», используем статический анализатор кода Detekt. Это инструмент, который при запуске проходит по проекту и показывает допущенные в коде code smell.
Сегодня мы расскажем, как написать свое правило и помочь команде соблюдать уникальные для проекта договоренности написания кода.
Как часто мы задаемся вопросом о том, почему порой так сложно настроить себя на некоторые виды деятельности?
Многие из нас имеют план намеченных дел. Однако, немногим удается хотя бы что-то из этого списка просто начать делать. Причем, в некоторых случаях бывает, что настолько мы не хотим чем-либо заниматься, что в принципе перестаем делать что-либо из того, что определили для себя как нечто обязательное. Как будто кто-то внутри нас сидит, и каждый раз берет верх над нашим желанием заняться чем-то полезным, провоцирует нас на мало значимые и повторяющиеся изо дня в день действия, которые отвлекают от чего-то более важного.
Мы можем часами тратить время на различные и не всегда полезные занятия. И делаем это практически на автомате. А потом ругаем себя за то, что в очередной раз потратили продуктивное время на непродуктивные дела. Сталкиваясь с подобным поведением, мы даем себе обещание, что в следующий раз займемся тем, что запланировали. Вместо этого делаем то, что делали раньше.
Совсем недавно у меня появилась необходимость разработать функционал для взаимодействия между двумя приложениями одной компании, и недолго гуглив я открыл для себя мир межпроцессного взаимодействия в андройд - AIDL.
В этой статье я расскажу о трудностях с которыми пришлось столкнуться и об их решении. А ещё поделюсь полезными кусочками кода, которые помогут вам сохранить пару часов кодинга.