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

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

Автор канала: @Lamprof
Download Telegram
Why HTTPS Alone Is Not Enough for Sensitive Android Payloads

👉 TLS не тож самое, что и защита данных на уровне самого сообщения. Если до сетевого слоя вы уже плохо реализовали крипту, HTTPS не спасет
👉 Как надо: AES-GCM с fresh IV, AAD и проверкой целостности
👉 Как НЕ надо: ECB, захардкоженные ключи, слабый MAC и особенно Base64 вместо шифрования
👉 Еще есть мини-демо с ECDH: не production-ready, но хорошо показывает, как вообще выглядит договоренность о session key на практике

Вопрос не в том, “мы же зашифровали?”, а в том, какие именно security properties дает ваша схема и что именно сломается, если срезать углы

Android Good Reads
👍6😱4
Android Good Reads
TikTok поделился опытом миграции на Jetpack Compose Главные цифры и профит: 👉 Объем кода уменьшился на 58% по сравнению с реализацией на классических Views 👉 Время загрузки экранов сократилось до 78% на новых или полностью переписанных экранах (и на 20–30%…
Я думал делать разбор еще 3 статей вышедших в Android блоге, но читать самопохвалы от google команды как то грустно, поэтому вот что стоит вынести из:

👉 Monzo boosts performance metrics by up to 35% with a simple R8 update
👉 Instagram and Facebook deliver instant playback and boost user engagement with Media3 PreloadManager
👉 How WHOOP decreased excessive partial wake lock sessions by over 90%

R8 у многих всё ещё работает не в полную силу из-за старого конфига, Baseline Profiles уже давно надо тащить в релизный цикл, для видосов стоит смотреть на Media3 PreloadManager и подгонять стратегию под конкретный UI, а по поводу работы в фоне пора регулярно смотреть в Android vitals, особенно на wake locks и долгоживущие Worker-ы.

production performance — это часто не “переписать всё”, а докрутить то, что Android уже даёт из коробки


Android Good Reads
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Cascade editor

Composable блочный редактор (как Notion/Craft) с возможностью масштабирования. Удобно встроится в проект, где нужно редактирование текста, но не хочется уводить это в вебвью или костылить свое

👉 Независимое состояние и жизненный цикл у каждого блока
👉 Удобное разделение, объединение и преобразование блоков
👉 Поддержка drag-and-drop для изменения порядка блоков
👉 Вставка новых элементов через slash-команды
👉 Возможность делать собственные рендереры блоков
👉 Поддержка rich-text форматирования внутри блоков
👉 Версионируемая сериализация документа, что упрощает сохранение и миграции

GitHub (70 ⭐️): https://github.com/linreal/cascade-editor
Compose 1.10, Kotlin 2.3, minSdk 28, iOS 16+


Android Good Reads
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍3🤯2😨21
Используем @RequireOptIn чтоб пометить Composable для использования только в превью

Собственно говоря, весь код на превьюшке. Будет бодро слать вам ошибку компиляции, пока вы не добавите @Suppress или не уберете помеченную функцию

Android Good Reads
👍4🔥2
Kotlin 2.4.0 Sorted-Order валидация

Добавили новых extension функций в стандартную библиотеку для валидации того как отсортированы коллекции:
.isSorted()
.isSortedDescending()
.isSortedWith(comparator)
.isSortedBy(selector)
.isSortedByDescending(selector)

🔗 Ссылка на документацию

Ну и сразу пример:
data class User(val name: String, val age: Int)

fun main() {
val users = listOf(
User("Alice", 24),
User("Bob", 31),
User("Charlie", 29),
)
println(users.isSortedBy(User::age))
// false
}


Android Good Reads
👍7🔥2😱2
Android: Offline-first system design

Таких статей мы читали и слушали уже миллион. На картинке вы видите конечный результат проектирования, но эта статья неплохо показывает то, как прийти к такому решению последовательно. Такого типа задачки это часть этапа собеседований (system design)

🔗 Freedium link
Внутри: путь от "Апка крашится без доступа к интеренету" к Offline-first

Android Good Reads
👍6🔥6
Android Studio Preview Quail Canary 1

👉 Удобная интеграция App Quality Insight -> Fix with AI
👉 Интеграция LeakCanary в профайлер с новыми фичами
👉 Material Symbol support
👉 Новая считалка рекомпозиций

Android Good Reads
👍3
Тем временем Google активировал Android developer verification, против которого собирали петицию. Хоть и пошел немного на попятную, частично разрешив установку с ОЧЕНЬ херовыми условиями

Все апки пометили галочкой. Весь процесс работы с приложениями превращается в ужас с Apple...

Антоха Разраб
😢11👍2😡21🔥1
Почему используем STOMP c вебсокетами?

Когда у тебя в одном соединении живут входящие звонки, call events и WebRTC signaling, raw WebSocket быстро превращается в ручной роутинг JSON-пакетов.

STOMP решает это за счет:
👉 destination-based routing
👉 подписок на нужные топики
👉 structured frames
👉 heartbeat из коробки

Итог простой: меньше самописной магии, чище обработчики, легче дебажить и расширять real-time фичи
4👍3👏2👎1
Strong Skipping Mode не делает типы stable, лишь позволяет skip’ать composable с unstable параметрами, если передан тот же самый объект по ссылке ===, тогда как stable типы по-прежнему сравниваются через equals() из-за этого он не помогает, если создаются новые инстансы (типа listOf(), copy()), и рекомпозиция всё равно происходит, поэтому stability позволяет пропускать перерисовку для разных объектов с одинаковыми данными, а Strong Skipping - это оптимизация для случаев с переиспользованием одной и той же ссылки, а не замена пониманию стабильности

Внутри много кода, а не воды для самопроверки
🔥82😁2
Dagger, Yatagan или Metro DI?

Android-команда Яндекс Путешествий сравнила DI-фреймворки, чтобы узнать, как ускорить сборку. Что из этого вышло, на чём остановились ребята и как прошла миграция — смотрите в канале Яндекс Вертикалей.

Кстати, сейчас там проходит розыгрыш промокодов на 10 и 20 тысяч рублей на ваши путешествия. Успевайте поучаствовать😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Compose анимации без пересборки

Дебажить анимации трудно и долго. Hot reload помогает и тут. Внутри анимация Grid, кастомная анимация волны на Canvas, изменение типа анимации tween -> spring, изменение animateContentSize
HotSwan обновляет примитивы в обход компиляции Gradle, за счет этого и получается такой результат
🔥8😱4👍3
Android CLI зацикливает на себе весь цикл разработки для андроид c агентами. Вам не нужно прыгать и искать какие скилы подтянуть в проект, какой контекст по андроид разработке предоставить. All-in-one от гугла (sdk, эмуляторы, запуск билдов ... )

Ни для чего другого, кроме как мобильной разработке, это не подходит, так что поставить точно рекомендую!
🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Все идет по пути к тому что у каждого тула будет CLI версия. Обсидиан запустил пару месяцев назад, а вот и Google (Пере)представляет Android CLI

По ощущениям оч кастрированный и является надстройкой над adb

(c) Антоха Разраб про AI
😍3💯2🔥1🥴1
Если вы используете Metro, в качестве DI, то знайте что оно стало стабильным. Свеженаписанный легковесный DI для android

Релиз ноутс: https://github.com/ZacSweers/metro/releases/tag/1.0.0
🔥95
Что нового в Compose в Апреле

compose-bom:2026.04.01 или Compose 1.11.0
👉 v2 API тестирования стал дефолтным, StandardTestDispatcher вместо UnconfinedTestDispatcher. Коррутины в тестах больше не выполняются сразу — очередь, пока виртуальные часы не продвинутся
👉 Shared Elements: новый composable LookaheadAnimationVisualDebugging показывает границы анимаций, траектории и несовпадения
👉 Поддержка трекпадов: теперь трекпады распознаются как PointerType.Mouse, а не Touch. Исправляет скролл вместо выделения, добавляет поддержку жестов и десктопных контекстных меню
👉 Compose runtime: новый HostDefaultProvider позволяет библиотекам (особенно KMP) получать сервисы без зависимости от compose-ui
👉 Аннотация @PreviewWrapper для переиспользуемых обёрток превью:
class ThemeWrapper: PreviewWrapper {
@Composable
override fun Wrap(content: @Composable (() -> Unit)) {
JetsnackTheme {
content()
}
}
}

@PreviewWrapperProvider(ThemeWrapper::class)
@Preview
@Composable
private fun ButtonPreview() {
// JetsnackTheme in effect
}

👉 Готовимся что в 1.12.0 compileSdk обновится до 37. Будет много боли потому что 37 Sdk тянет за собой AGP 9

Android Good Reads
2👍1🔥1
Что нового в Compose в Апреле Часть 2

Экспериментальные API:

👉 Styles API: декларативные стили компонентов с автоматическими анимациями. Судя по бенчмаркам, быстрее модификаторов
👉 MediaQuery: адаптация под окружение (размер окна, тип клавиатуры, режим стола и т.д.)
👉 Grid: 2D-раскладка с треками, фракциями (fr) и авто-размерами
👉 FlexBox: мощный контейнер с гибким распределением пространства, wrap'ом и выравниванием. Замена Row/Column/Flow
👉 Новый SlotTable: ускорение случайных правок в дереве композиции (пока опционально через флаг)

Android Good Reads
👍2🔥21