Оптимизируй или сдохни: профилирование и оптимизация Jetpack Compose
Статья с громким заголовком, Jetpack Compose не оставляет шансов 😀
Как профилировать и оптимизировать Jetpack Compose.
👉 Recomposition Counts: локализуем лишние рекомпозиции
👉 Compose Compiler Metrics: ищем причины лишних рекомпозиций
👉 Профилирование CPU: находим «тяжелые» методы и разгружаем процессор
👉 Профилирование GPU: узнаем, какие компоненты долго отрисовываютс
👉 Советы по устранению ошибок
Читать (Ru)
Статья с громким заголовком, Jetpack Compose не оставляет шансов 😀
Как профилировать и оптимизировать Jetpack Compose.
👉 Recomposition Counts: локализуем лишние рекомпозиции
👉 Compose Compiler Metrics: ищем причины лишних рекомпозиций
👉 Профилирование CPU: находим «тяжелые» методы и разгружаем процессор
👉 Профилирование GPU: узнаем, какие компоненты долго отрисовываютс
👉 Советы по устранению ошибок
Читать (Ru)
👍12🔥2😁2
Navigation with ViewModel when Jetpack Compose is the actor
Еще одна статья про навигацию в Jetpack Compose через ViewModel.
Код на GitHub → Сompose Nav Model
Читать (En)
Еще одна статья про навигацию в Jetpack Compose через ViewModel.
Код на GitHub → Сompose Nav Model
Читать (En)
👍12👎4🤔3🔥1
Как я несколько лет боролся с прокрастинацией и победил: полное практическое руководство
Решил я тут статью почитать и отложил на потом 😁
А если серьезно, не знаю насколько будет актуально кому-то из вас, но статья интересная и с полезными советами.
Читать (Ru)
Решил я тут статью почитать и отложил на потом 😁
А если серьезно, не знаю насколько будет актуально кому-то из вас, но статья интересная и с полезными советами.
Читать (Ru)
👍20😁6🤨2👎1
Как можно хранить стабы для MockWebServer в Android-тестах
QA Automation Engineer из мобильной платформенной команды Delivery Club поделился опытом подмены и хранения ответов бэкенда при UI-автоматизации тестирования курьерского Android-приложения.
В статье рассматриваются известные способы создания сетевых заглушек в Android-тестах, а также как их подключать и в чем плюсы и недостатки каждого из них.
Читать (Ru)
QA Automation Engineer из мобильной платформенной команды Delivery Club поделился опытом подмены и хранения ответов бэкенда при UI-автоматизации тестирования курьерского Android-приложения.
В статье рассматриваются известные способы создания сетевых заглушек в Android-тестах, а также как их подключать и в чем плюсы и недостатки каждого из них.
Читать (Ru)
👍7🔥3⚡1
Как настроить Charles
Подробный гайд по настройке и подключению Charles Proxy.
Если вдруг кто-то не занет или не пользовался, рекомендую попробовать. Из наиболее популярных функций, которыми чаще всего пользуются: подмена сертификата, моки ответов с бэка и мониторинг трафика.
Полезно как тестировщикам, так и разработчикам.
Читать (Ru)
Подробный гайд по настройке и подключению Charles Proxy.
Если вдруг кто-то не занет или не пользовался, рекомендую попробовать. Из наиболее популярных функций, которыми чаще всего пользуются: подмена сертификата, моки ответов с бэка и мониторинг трафика.
Полезно как тестировщикам, так и разработчикам.
Читать (Ru)
👍24🔥7⚡1
Игра в маляра, или Content-based color scheme: как цветовая схема приложения может меняться в зависимости от контента
А вот интересный пример, как можно сделать динамическую тему в приложении с генерацией цветовой схемы на основе контента (картинки) – аля Dynamic Colors из Material Design 3.
"Неожиданный плюс, который мы получили от нашей реализации, — она работает и на версиях младше Android 12 — в отличие от Dynamic Сolors на основании wallpapers" 🤘
Код на GitHub → Dynamic Theme Sample
Читать (Ru)
А вот интересный пример, как можно сделать динамическую тему в приложении с генерацией цветовой схемы на основе контента (картинки) – аля Dynamic Colors из Material Design 3.
"Неожиданный плюс, который мы получили от нашей реализации, — она работает и на версиях младше Android 12 — в отличие от Dynamic Сolors на основании wallpapers" 🤘
Код на GitHub → Dynamic Theme Sample
Читать (Ru)
👍10🔥2🤔1
Вам нужен чистый код? Используйте правило шести
Еща одна интересная статья, не совсем на профильную тему, но не менее актуальную. В статье на простом примере показывается (в контексте строк), как с помощью "правила шести" сделать код более чистым и понятным для восприятия.
Читать (Ru)
Еща одна интересная статья, не совсем на профильную тему, но не менее актуальную. В статье на простом примере показывается (в контексте строк), как с помощью "правила шести" сделать код более чистым и понятным для восприятия.
Читать (Ru)
👍8⚡1🔥1
Reorder items with Drag and Drop using SwiftUI
Простой пример реализации Drag and Drop в списке на SwiftUI.
Читать (En)
Простой пример реализации Drag and Drop в списке на SwiftUI.
Читать (En)
👍5🔥3👨💻1
This media is not supported in your browser
VIEW IN TELEGRAM
AutoSizing TextField in Jetpack compose
Пример реализации динамичного размера текста, подгоняемого под размеры поля ввода в Jetpack compose.
Читать (En)
Пример реализации динамичного размера текста, подгоняемого под размеры поля ввода в Jetpack compose.
Читать (En)
👍11🔥5⚡3
Introducing the Architecture Templates
Тут Гугл выпустил репозиторий с набором шаблонов, которые могут помочь стартануть проект с нуля или быстро проводить эксперименты.
Все проекты используют лучшие практики и соответствуют архитектурным рекомендациям от Гугла.
👉 Room Database
👉 Dependency injection with Hilt
👉 Jetpack ViewModel
👉 Jetpack Compose and Material3
👉 Jetpack Navigation
👉 Reactive data layer
👉 Kotlin Coroutines and Flow
👉 Unit tests
👉 UI tests with Hilt
👉 KTS gradle files
👉 Version catalog
Код на GitHub → Android Architecture Starter Templates
Читать (En)
Тут Гугл выпустил репозиторий с набором шаблонов, которые могут помочь стартануть проект с нуля или быстро проводить эксперименты.
Все проекты используют лучшие практики и соответствуют архитектурным рекомендациям от Гугла.
👉 Room Database
👉 Dependency injection with Hilt
👉 Jetpack ViewModel
👉 Jetpack Compose and Material3
👉 Jetpack Navigation
👉 Reactive data layer
👉 Kotlin Coroutines and Flow
👉 Unit tests
👉 UI tests with Hilt
👉 KTS gradle files
👉 Version catalog
Код на GitHub → Android Architecture Starter Templates
Читать (En)
👍25⚡3🔥3
Kotlin Abstraction
Неплохая статья с примерами про абстрактные классы в Kotlin, да и в целом про абстракцию. Полезно может быть начинающим.
Читать (En)
Неплохая статья с примерами про абстрактные классы в Kotlin, да и в целом про абстракцию. Полезно может быть начинающим.
Читать (En)
🔥12👍4👎1👏1
Ангелы Charles: Как сниффер поможет разработчикам мобильных приложений
Вторая часть про Charles, в которой детально рассматриваются его популярные функции с примерами и кейсы, в которых он может пригодиться разработчикам и тестировщикам.
Читать (Ru)
Вторая часть про Charles, в которой детально рассматриваются его популярные функции с примерами и кейсы, в которых он может пригодиться разработчикам и тестировщикам.
Читать (Ru)
👍8🔥3👏1
7 Android Resources To Level Up As a Developer
Несколько полезных ресурсов для Android-разработчиков. От официальной документации до различных сервисов с рассылками, блогов на Medium, Android Arsenal и т.д.
Читать (En)
Несколько полезных ресурсов для Android-разработчиков. От официальной документации до различных сервисов с рассылками, блогов на Medium, Android Arsenal и т.д.
Читать (En)
👍15👎2🔥2🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
Делаем кастомный Collapsing Toolbar на Jetpack Compose
Статья от hh про то, как они делали кастомный компонент в Jetpack Compose аналогичный CollapsingToolbarLayout из привычного View-мира.
Читать (Ru)
Статья от hh про то, как они делали кастомный компонент в Jetpack Compose аналогичный CollapsingToolbarLayout из привычного View-мира.
Читать (Ru)
👍35⚡4🔥2👎1
Bottom sheet: Scrolling and interactions
Завершающая статья в серии про bottom sheet. Структура проекта и базовые классы описаны в первой статье, а во втором материале разобрано, как воссоздать полноценную навигацию в рамках bottom sheet отображения, основанного на autolayout.
Читать (Ru)
Завершающая статья в серии про bottom sheet. Структура проекта и базовые классы описаны в первой статье, а во втором материале разобрано, как воссоздать полноценную навигацию в рамках bottom sheet отображения, основанного на autolayout.
Читать (Ru)
👍14🔥2⚡1
This media is not supported in your browser
VIEW IN TELEGRAM
Utilising the Canvas in Jetpack Compose to build a SquareSegmentedProgressIndicator
Реализация кастомного прогресcа на канвасе в Jetpack Compose.
Читать (En)
Реализация кастомного прогресcа на канвасе в Jetpack Compose.
Читать (En)
🔥12👍4👏2
Не обманывайте себя: вы не «исправите это потом»
А вот прикольная статья про костыли в проде, которые мы иногда пишем из-за нехватки времени или еще по каким-либо причинам, с надеждой сделать красиво когда-то потом.
Вывод: нужно стараться писать сразу нормально (что не всегда получается), заводить таски на техдолг и в каждом спринте выделять время на техдолги.
Если что, оригинал статьи тут.
Читать (Ru)
А вот прикольная статья про костыли в проде, которые мы иногда пишем из-за нехватки времени или еще по каким-либо причинам, с надеждой сделать красиво когда-то потом.
Вывод: нужно стараться писать сразу нормально (что не всегда получается), заводить таски на техдолг и в каждом спринте выделять время на техдолги.
Если что, оригинал статьи тут.
Читать (Ru)
👍8🔥2🤔1
Principles & Practice in Repository Layer
Еще одна статья про архитектуру, а именно про принципы и практики в data слое (репозиторий).
👉 Mapping
👉 Cache
👉 Concurrency
👉 Single Source-of-truth
Читать (En)
Еще одна статья про архитектуру, а именно про принципы и практики в data слое (репозиторий).
👉 Mapping
👉 Cache
👉 Concurrency
👉 Single Source-of-truth
Читать (En)
👍21👎2❤🔥1🔥1
Lessons learned while modularizing an application
Большая статья, в которой автор делится опытом масштабирования приложения, а именно разделением на модули (опыт, сложности, как разбивать на модули, структура проекта, абстракции и т.д.).
На Хабре есть перевод в 2-ух частях
👉 Часть 1 (Ru)
👉 Часть 2 (Ru)
Читать (En)
Большая статья, в которой автор делится опытом масштабирования приложения, а именно разделением на модули (опыт, сложности, как разбивать на модули, структура проекта, абстракции и т.д.).
На Хабре есть перевод в 2-ух частях
👉 Часть 1 (Ru)
👉 Часть 2 (Ru)
Читать (En)
👍13🔥2⚡1
Injecting SavedStateHandle into ViewModel using Dagger 2 and Jetpack Compose
Статья с примером, как можно заинжектить SavedStateHandle во ViewModel через Dagger 2
Код на GitHub → ComposeViewModelDagger
Читать (En)
Статья с примером, как можно заинжектить SavedStateHandle во ViewModel через Dagger 2
@AssistedInject для Jetpack Compose.Код на GitHub → ComposeViewModelDagger
Читать (En)
👍11🤔2👎1🔥1🥱1
Яндекс выпускает Yatagan — опенсорс-фреймворк для внедрения зависимостей, позволяющий ускорить сборку Android-приложений
Интересная статья от Яндекса об их новом опенсорс-фреймворке Yatagan. Можно узнать о технических моментах, которые всплыли в процессе реализации, отличиях от Dagger и о том, какие условия идеальны для применения библиотеки.
Код на GitHub → Yatagan
Читать (Ru)
Интересная статья от Яндекса об их новом опенсорс-фреймворке Yatagan. Можно узнать о технических моментах, которые всплыли в процессе реализации, отличиях от Dagger и о том, какие условия идеальны для применения библиотеки.
Код на GitHub → Yatagan
Читать (Ru)
🤮22👍20🤔5🔥2🤡2