Android Good Reads
4.06K subscribers
406 photos
17 videos
1 file
2.2K links
Самые интересные статьи, видео и новости, связанные с Android разработкой. Не больше трёх материалов в день.

Размещение рекламы: @tanyasanovna

Автор канала: @Lamprof
Download Telegram
Новый Experimental Styles API в Jetpack Compose

Устали от простыней кода с InteractionSource и animate*AsState просто чтобы поменять цвет кнопки при нажатии? В Compose завозят решение!

👉 Всё в одном блоке: Больше не нужно жонглировать модификаторами и стейтами. Вы создаете единый блок Style, где описываете базовый вид и реакции на различные состояния (hovered, pressed, focused)
👉 Автоматические анимации: Достаточно обернуть изменения в блок animate { ... } (можно передать свой AnimationSpec), и система сама плавно заанимирует переходы
👉 Умная инвалидация под капотом: Свойства стилей хранятся с использованием битовых масок. Если при нажатии меняется только цвет (свойства отрисовки), Compose инвалидирует только фазу draw, полностью пропуская рекомпозицию и layout
👉 Доступ к темам: StyleScope имеет доступ к CompositionLocal, так что можно легко брать цвета из темы прямо внутри стиля, и они будут обновляться при ее смене

ClickableStyleableBox(
onClick = onClick,
style = {
background(Color.Green)
size(150.dp)
hovered {
animate { background(Color.Yellow) }
}
pressed {
animate(tween(100)) { background(Color.Red) }
}
}
)
13👍10🔥4🥱2
Android LLM leaderboard!

Бенчмарк для моделей с уклоном в андроид разработку

Ссылка на Android Bench: https://developer.android.com/bench
👍6😁2
Android Good Reads
Новые метрики в Google Play Store Новые метрики касающие энергопотребления приложений. Планка качества приложений повышается. Пока что метрика в бете, но с Марта 2026 года приложение будет убрано из рекомендаций, если приложение не удовлетворяет следующему:…
Google Play раскатывает это обновление!

Внутри разбирают популярные сценарии и что с ними делать

👉 Некоторые подключаемые библиотеки могут влиять на это, увы, с этим, вы ничего не сделаете, но сможете отследить в Android Vitals
👉 Загрузка или выгрузка файлов
👉 Одноразовые или периодические операции в фоне
👉 Bluetooth соединение
👉 Location трекинг
👉 Частое снятие показаний с сенсоров (всякие гироскопы и прочее)
👉 Remote messaging не через гугловский FCM. Да-да, если у вас собственная реализация слушания ивентов - увы и ах

Внутри статьи рекомендации по тому как избежать проблем
👍4😱2
Исследуем CompositionLocal API

С этим API вы уже знакомы
val LocalUser = compositionLocalOf { "GoodReads" }

@Composable
fun App() {
CompositionLocalProvider(LocalUser provides "AndroidGoodReads") {
UserProfile()
}
}

@Composable
fun UserProfile() {
val name = LocalUser.current
Text("Hello, $name")
}

Внутри статьи рассказывают:

👉 Разбор внутреннего устройства: как связаны CompositionLocal, ProvidableCompositionLocal и их различные вариации
👉 Что на самом деле создают функции compositionLocalOf, staticCompositionLocalOf и compositionLocalWithComputedDefaultOf, и в чем разница между результатами их работы
👉 Механика работы CompositionLocalProvider и свойства .current. Как правильно передавать локальные данные между различными композициями
👉 Внутренняя кухня Compose: работа с Value Holders, использование Persistent Maps и интеграция на уровне Composer
👉 Рекомендации по оптимизации производительности и разбор типичных ошибок, которых следует избегать при использовании CompositionLocal
👍8🔥4😁1
Альфа Room 3.0 Alpha

Обновление одной из флагманских библиотек. Я всегда стараюсь использовать что-то по меньше и шустрее, типа sqldelight, но знаю, что этого монстра многие используют! А чо внутри то?

👉 KMP и WASM
👉 Чтобы избежать конфликтов с Room 2.x, androidx.room теперь стал androidx.room3
👉 Отказ от SupportSQLite: Библиотека теперь полностью работает на драйверах androidx.sqlite. Для постепенного перехода предусмотрен артефакт room3-sqlite-wrapper
👉 Только Kotlin и KSP: Генерация Java-кода, а также поддержка Java Annotation Processing (AP) и KAPT полностью прекращены
👉 Coroutines First: Из-за требований веб-платформ все API стали асинхронными. Блокирующие функции в DAO больше не поддерживаются — они должны быть либо suspend, либо Flow. Наканец-та!
👉 Кастомные типы возвращаемых значений: Добавлена аннотация @DaoReturnTypeConverter. Она позволяет разработчикам создавать собственные интеграции (например, для RxJava, Paging, LiveData)
👉 Текущее поколение Room 2.x переходит в maintenance mode. Новые фичи добавляться не будут, планируются только исправления ошибок и обновления зависимостей до релиза стабильной Room 3.0
👍9🔥3
🔒 Безопасность Android-приложений: углубляемся в тему с Podlodka Android Crew

Современные Android-приложения работают с пользовательскими данными, платежами и приватным контентом. Это буквально мишень для злоумышленников всех мастей.

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

С 30 марта по 3 апреля пройдет новый сезон Podlodka Android Crew — это будет онлайн-конференция, полностью посвящённая безопасности мобильных приложений на Android.

💡Участники сезона разберут:


🔐С чего начинается безопасность приложения

🧩 Как UI может стать точкой взлома

👀 Как выглядит Android-приложение глазами атакующего

🧬 Где реально помогают passkeys и биометрия, а где — нет

💳 Как защищаются платежи и видеоконтент в Android-приложениях и не только — программа обновляется на сайте.

Формат — классический для Podlodka Android Crew: 5 дней, 10+ спикеров, 10 сессий и закрытое комьюнити в Telegram.

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

👉 Early-bird билеты на сезон Podlodka Android Crew доступны до 23 марта
👍2🔥2
Боремся с лишними рекомпозициями в Compose

Если вы хоть раз пытались понять, какого черта ваш экран перерисовывается 10 раз при скролле или вводе текста, то это для вас. Подъехали сразу две годные тулзы, которые подходят к проблеме перфоманса с абсолютно разных сторон:

👉 DejaVu
Мощная библиотека, которая превращает проверки рекомпозиций в полноценные тесты

Под капотом: Это test-only решение, то есть в прод не улетит ни строчки лишнего кода. Подключается максимально просто: инициализируете правило createRecompositionTrackingRule<>() в тестовом классе, вешаете стандартный Modifier.testTag() на нужный Composable и пишете ассерты на количество перерисовок

В чем фишка: Идеально для CI. Библиотека отслеживает счетчики для каждого инстанса отдельно и выдает аналитику. Если кто-то из команды или AI-ассистент сломает стейт, тест упадет и покажет таймлайн проблемы с диффом параметров, из-за которых случилась рекомпозиция

Github (55 ⭐️): https://github.com/himattm/dejavu

👉 Compose Rebound
Инструмент для мониторинга "бюджета рекомпозиций" прямо во время работы приложения

Под капотом: Работает на базе Kotlin Compiler Plugin. Во время компиляции плагин автоматически резолвит имена Composable-функций и назначает им лимиты в зависимости от роли (например, 3 рекомпозиции в секунду для экрана, 30/с для кнопок, 120/с для анимаций)

В чем фишка: У Rebound есть шикарный плагин для IDE. Он не просто считает перерисовки, а отделяет вынужденные рекомпозиции (из-за родителя) от тех, что вызваны изменением параметров самого компонента. Помогает находить реальные спайки и аномалии, а не просто пугать вас большими цифрами в Layout Inspector

Github (37 ⭐️): https://github.com/aldefy/compose-rebound

Такое мы внедряем!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Вступайте в Podlodka AI Engineers Club

Если ваша основная цель на этот год – прокачаться в использовании AI в разработке, то вы не одни. Все пытаются разобраться и в том, как оптимально использовать агентов самому, и в том, а как под это дело перестроить процессы в команде. Но поставить цель легче, чем ее достичь. State-of-the-art модели, инструменты и подходы меняются каждую неделю, лучшие практики ещё не устоялись, а городские сумасшедшие либо хоронят программирование, либо пытаются нафармить просмотры за ваш счет.

Мы в Подлодке хотим помочь опытным инженерам, которые учатся работать с AI – да что там, и самим себе тоже. Поэтому в начале марта мы запустили Podlodka AI Engineers Club – закрытое сообщество для тех, кто уже пробует AI в работе и хочет делать это системно, а не на ощупь.

👉Что внутри. Каждую неделю – воркшопы и лайвкодинги с людьми, которые внедряют AI в реальных продуктах. Разбор конкретных инженерных практик: как строить своих агентов, как работать по Spec-Driven Development, как собирать комбайн, превращающий таски Jira в PRы, как масштабировать это на команду и в бигтехе, и в небольшом стартапе.

Между встречами – сеть закрытых чатов в Telegram, клубные созвоны с шарингом опыта, random coffee, совместные эксперименты с AI.

👉Кто уже в программе. Среди экспертов – инженеры из компаний разного масштаба: Степан Гончаров (xAI), Роман Елизаров (Яндекс), Андрей Бреслав (CodeSpeak), Денис Неклюдов (Google), Алексей Козятинский (Cursor) и много других крутых ребят. Полная программа на март-апрель есть на сайте.

👉А кто в клубе. Мы собрали уже 350 инженеров с медианным опытом 12 лет – российский и зарубежный бигтех, банки, стартапы. Большинство уже активно используют агентов в своей работе, поэтому обсуждаем прямо прикладные вопросы. У кого-то в компаниях AI внедряется очень активно, а кто-то работает в супер зарегулированных отраслях, где запрещено почти все – так что мы собираем весь спектр проблем.

👉Как попасть. Клуб платный, вход через список ожидания с отбором – нам интересно сделать сообщество именно для опытных разработчиков – людей, которые большую часть своей карьеры писали код, решали технические задачи, принимали архитектурные решения, и жили с их последствиями. Мы набираем участников постепенно – нам важно сохранить атмосферу, в которой можно открыто делиться опытом и проблемами.

Подробности, расписание и заявка – на сайте. А если есть какие-то конкретные вопросы, пишите прямо в личку @etolstoy!
🤣5😎43👍3
Делаем жизнь пользователя проще и выводим в топ свои Android-приложения: 26 марта hh.ru проведёт митап по Android-разработке

В программе доклады от экспертов:
• Константин Дубинко (hh.ru) поделится опытом ухода от навигации на базе Fragment и Cicerone в сторону чистого Compose при помощи навигационной библиотеки Modo.
• Денис Конопелькин (Циан) расскажет, как ускорить проверки в Android‑проекте с помощью Impact‑анализа.
• Максим Качинкин (Dodo Engineering) разберет, как проектировать ИИ-фичи в мобильном приложении, когда ИИ живет не на бэкенде, а на клиенте.

Подписывайся на канал Охэхэнные новости и регистрируйся на митап. Встречаемся 26 марта!
3👍3😁3💅1