Стандартный LRU-кэш не знает ничего о времени — он выбрасывает записи только когда заканчивается место. Поэтому в дисковом кэше Glide могут месяцами лежать устаревшие изображения, пока не будет достигнут лимит размера.
Команда Grab описала подход TLRU (Time-Aware LRU) — форк DiskLruCache с тремя дополнительными параметрами:
1️⃣ TTL — время жизни записи. Если
(текущее_время - время_последнего_доступа) > TTL, запись удаляется2️⃣ Минимальный порог — защита от полного сброса. Если пользователь долго не заходил и все записи устарели, кэш всё равно не очищается полностью — иначе при возвращении все изображения загружались бы заново
3️⃣ Максимальный размер — наследуется от LRU без изменений
Реализация аккуратная: метка времени последнего доступа хранится прямо в journal-файле, переживает перезапуски. Алгоритм оптимизирован — если самая старая запись ещё не устарела, остальные не проверяются.
Миграция со старого LRU безопасна в обе стороны: оригинальный
DiskLruCache читает TLRU journal, просто игнорируя временны́е суффиксы.Мне нравятся такие решения, когда не надо переписывать с нуля, а точечно расширить проверенную реализацию. Три параметра поверх существующего механизма — и кэш наконец умеет забывать ненужное. Ну и честно - решение лежало на поверхности и вполне логичное.
🔗 Источник: engineering.grab.com
#Android #AndroidDev #Производительность #Оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍39❤15👎6🔥3🤔1👌1
🔥 Firebase Crashlytics получил MCP-сервер
В экспериментальном режиме Firebase запустили MCP-сервер для Crashlytics. Раньше, чтобы вытащить данные для анализа, нужно было настраивать экспорт в BigQuery, разбираться с Cloud Logging, писать SQL-запросы. Целый пайплайн ради того, чтобы понять что происходит со стабильностью приложения. Теперь всё это стало ощутимо проще.
Через MCP агент получает прямой доступ к данным Crashlytics: может вытащить список активных проблем с приоритетами, разобрать конкретный краш по ID со всеми стектрейсами и метаданными, получить агрегированную статистику по событиям и затронутым пользователям. Плюс умеет добавлять заметки к ишью и менять его статус прямо в ходе разговора.
Многие крашлитиковские ишью на практике достаточно простые, и агент вполне способен с ними справиться самостоятельно. Можно выстроить полный цикл: агент ночью смотрит новые крашы, разбирает их, создаёт задачи, предлагает или сразу делает фиксы, оставляет комментарии со всем контекстом. Раньше для этого не хватало именно доступа к данным мониторинга — теперь этот кусок закрыт.
🔗 Источник: firebase.google.com
#Firebase #Crashlytics #MCP #AndroidDev #Android
В экспериментальном режиме Firebase запустили MCP-сервер для Crashlytics. Раньше, чтобы вытащить данные для анализа, нужно было настраивать экспорт в BigQuery, разбираться с Cloud Logging, писать SQL-запросы. Целый пайплайн ради того, чтобы понять что происходит со стабильностью приложения. Теперь всё это стало ощутимо проще.
Через MCP агент получает прямой доступ к данным Crashlytics: может вытащить список активных проблем с приоритетами, разобрать конкретный краш по ID со всеми стектрейсами и метаданными, получить агрегированную статистику по событиям и затронутым пользователям. Плюс умеет добавлять заметки к ишью и менять его статус прямо в ходе разговора.
Многие крашлитиковские ишью на практике достаточно простые, и агент вполне способен с ними справиться самостоятельно. Можно выстроить полный цикл: агент ночью смотрит новые крашы, разбирает их, создаёт задачи, предлагает или сразу делает фиксы, оставляет комментарии со всем контекстом. Раньше для этого не хватало именно доступа к данным мониторинга — теперь этот кусок закрыт.
🔗 Источник: firebase.google.com
#Firebase #Crashlytics #MCP #AndroidDev #Android
👍58👎9
Вышла отдельная статья в блоге со скриншотами — можно наконец посмотреть как пикер выглядит в живую.
Из того, что не было в анонсе: на Android 17 старые
ACTION_PICK с контактными типами автоматически апгрейдятся до нового пикера. То есть часть приложений получит приватный выбор контактов вообще без изменений кода. Приятный бонус для тех, кто не торопится мигрировать.В Compose интегрируется через
rememberLauncherForActivityResult — код в статье рабочий, можно брать напрямую.🔗 Источник: android-developers.googleblog.com
📖 Документация: developer.android.com
#Android #AndroidDev #Android17
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍45👎9
Нужны твои навыки в работе с ИИ на МТС True Tech Hack 2026!
Тебе сюда, если ты инженер данных, разработчик или системный аналитик. 1 500 000 рублей — общий призовой фонд ИТ-соревнования.
Формат: командное онлайн-соревнование с финалом в Москве. Если нет команды — поможем найти на платформе мероприятия.
Тебя ждут три задачи на выбор — каждая с уникальной технической фишкой.
Для всех финалистов — приглашение на закрытую вечеринку, а лучших участников позовут на стажировку.
Успей зарегистрироваться до 9 апреля
Тебе сюда, если ты инженер данных, разработчик или системный аналитик. 1 500 000 рублей — общий призовой фонд ИТ-соревнования.
Формат: командное онлайн-соревнование с финалом в Москве. Если нет команды — поможем найти на платформе мероприятия.
Тебя ждут три задачи на выбор — каждая с уникальной технической фишкой.
Для всех финалистов — приглашение на закрытую вечеринку, а лучших участников позовут на стажировку.
Успей зарегистрироваться до 9 апреля
👎19👍6
В Android 17 появилось новое ограничение, которое затронет авторов музыкальных плееров, подкаст-приложений и всего, что воспроизводит звук в фоне без видимого UI.
Суть в следующем: теперь аудио фреймворк проверяет, имеет ли приложение право взаимодействовать с аудио в фоне. Без корректно запущенного foreground service с While-In-Use (WIU) возможностями звук просто отключится.
WIU — это условие, при котором Foreground Service запущен из видимого UI или в ответ на
MediaSessionEvent. Если FGS запущен, например, по BOOT_COMPLETE и лезет в аудио — он будет заблокирован.Рекомендуемый путь — использовать Jetpack Media3
MediaSessionService, который сам управляет жизненным циклом и не требует дополнительных телодвижений. Если media3 не используется, нужно вручную следить за тем, чтобы mediaPlayback FGS запускался из foreground и оставался живым на время транзиентных сбоев (не дольше 10 минут).На мой взгляд, изменение правильное. Баги, когда приложение просыпается через несколько часов после заморозки и неожиданно начинает воспроизведение — реальная проблема. Другой вопрос, что тихая блокировка без каких-либо ошибок в API сделает диагностику неочевидной. Инструменты вроде `adb dumpsys audio` и logcat помогут, но разработчики, которые не читают changelog, узнают об этом только от пользователей.
🔗 Источник developer.android.com
#Android #AndroidDev #Android17
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41👎14
Android Developers Blog
Beyond Infotainment: Extending Android Automotive OS for Software-defined Vehicles
News and insights on the Android platform, developer tools, and events.
Оказывается Android Automotive всё ещё жива. Новостей про неё мало, но вот иногда доносится. Подробнее в блоге
#Android #Android17 #Automotive
#Android #Android17 #Automotive
👎11👍4
Вышел стабильный релиз CameraX 1.6.0. Цикл разработки был долгим, зато список изменений получился весомым.
👉 Переход на CameraPipe — CameraX теперь работает на том же стеке, что и приложение камеры Pixel. Все оптимизации и новые computational photography фичи отныне приходят в CameraX автоматически.
👉 Media3 Muxer по умолчанию — видеозапись через
VideoCapture теперь использует Media3 Muxer. Если приложение упадёт во время записи, файл не повредится. Плюс более эффективный процессинг в целом.👉 Feature Group обновился —
GroupableFeatures пополнился константами VIDEO_STABILIZATION и UHD_RECORDING. Теперь их можно комбинировать с другими фичами в одном SessionConfig, туда же вписываются CameraEffect и ImageAnalysis.👉 SessionConfig стал стабильным API — вышел из experimental вместе с
HighSpeedVideoSessionConfig. Появился isSessionConfigSupported для проверки совместимости конкретной комбинации фич до биндинга к lifecycle. Также появился ExtensionSessionConfig для работы с CameraX Extensions.Также исправили баг на Android 17. Версия 1.5.2 падает.
🔗 Источник - developer.android.com
#Android #AndroidDev #CameraX #Jetpack #Камера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍39👎6
Вышла Android 17 Beta 3 и все изменения там касаются геолокациии
👉 Location Button — разовый доступ к точной геолокации
Новый UI-элемент из Jetpack, который даёт доступ к точным координатам прямо в момент нажатия, без постоянного разрешения. Пользователь нажал кнопку "поделиться местоположением" в вашем приложении — получил данные один раз в рамках сессии. Никаких диалогов с выбором "разрешить всегда / только сейчас". Кнопку можно кастомизировать: цвет, форма, текст из предопределённого списка. Иконка местоположения остаётся обязательной и неизменной. На Android 16 и ниже Jetpack автоматически откатывается к стандартному диалогу разрешений.
👉 Примерная геолокация стала умнее
До этого "приблизительный" режим использовал фиксированную сетку 2×2 км. В малонаселённых районах это фактически деанонимизирует пользователя, потому что в квадрате 2 км может быть буквально несколько человек. В Android 17 размер ячейки теперь зависит от плотности населения — чем меньше людей, тем больше область. Логично, что давно должно было быть так.
👉 Индикатор использования геолокации
По аналогии с микрофоном и камерой, при любом обращении к геолокации теперь будет появляться системный индикатор. Плюс — диалог с историей последних обращений с возможностью сразу перейти в настройки разрешений.
👉 Переработанный диалог разрешений
"Точное" и "Приблизительное" местоположение теперь визуально сильнее разделены, чтобы пользователь осознанно выбирал нужный уровень доступа.
🔗 Источник: android-developers.googleblog.com
#Android #AndroidDev #Android17 #Приватность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64👎8
Да уж... Новинка Android 17 - кнопка для быстрого получения локации с минимальным написанием кода. Куда-то мы идем не туда. Уже все разработчики всё сделали что надо и выдать локацию можно на 1 раз, но вот она новинка, которой так всем не хватало!
👎41👍5
static final по определению константа, но на практике это использовалось годами для разных хаков.👉 Попытка изменить такое поле через рефлексию бросает
IllegalAccessException 👉 Попытка через JNI
SetStaticLongField() и аналоги — сразу краш приложения 👉 Ограничение включено только для приложений с
targetSdk = 37, но в Beta 1 проверка активна для всех приложений, чтобы выловить проблемы раньшеЗачем это нужно? Пока
static final поле формально могло меняться, рантайм не мог агрессивно оптимизировать код, который к нему обращается. Теперь — может. На практике это чаще всего задевает тесты, которые через рефлексию подменяют константы в production-коде, и старые хаки с логированием или конфигурацией. Где-то жить станет чуть сложнее, но в целом всё закономерно — меньше хаков, честнее код.🔗 Источник: developer.android.com
#android #android17
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54👎7
‼️ Есть 2 проходки на Podlodka Android Crew, которая стартует завтра. Отдам за интересный рассказ про ваш кейс с безопасностью Android приложения: как защищаетесь, какие были факапы и все что по теме безопасности в мобильной разработке.
Отдам билеты вечером сегодня, чья история зацепит меня большего всего.
Считается только то, что комментарием под постом
UPD. Билеты разыграны
Отдам билеты вечером сегодня, чья история зацепит меня большего всего.
Считается только то, что комментарием под постом
UPD. Билеты разыграны
32👎46👍20
Android 17 добавляет поддержку гибридной схемы подписи APK с постквантовым алгоритмом ML-DSA. Классический ключ подписи комбинируется с постквантовым и подпись становится устойчивой к атакам с использованием квантовых вычислений.
Схема гибридная, а не замена старому подходу, поэтому обратная совместимость сохраняется. Старые устройства верифицируют подпись через классический ключ, новые получают дополнительный слой защиты через ML-DSA.
apksigner.Квантовые компьютеры, способные реально угрожать текущим подписям,появятся не скоро, да и натравливать его на взлом APK - странный сценарий использования такой машины. Но инфраструктурные вещи лучше внедрять заранее, и хорошо, что Play App Signing снимает эту задачу с большинства из нас.
🔗 Источник: developer.android.com
#Android #Android17 #Безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38👎5
Обучение в Школе включает теорию и практику: оба этапа проходят очно в московских офисах Яндекса. Доступно два трека:
Погрузитесь в Swift на продвинутом уровне, научитесь строить современный UI, обеспечивать качество кода и работать с архитектурой приложений, многопоточностью и CI/CD.
Поработайте с Jetpack Compose, разберётесь в основах многопоточности и познакомитесь с современным подходом к работе через KotlinX Coroutines.
Что ещё в программе?
• Интеграция AI в разработку.
• Факультативы по Flutter.
• Лекции по алгоритмам и UI.
Please open Telegram to view this post
VIEW IN TELEGRAM
👎34👍17
В Swift 6.3 вышел первый официальный Swift SDK для Android. До этого поддержка была только в nightly-сборках, теперь это стабильный релиз.
Я делал про это видео на 📹 YouTube и на
Кому это реально пригодится? iOS-разработчикам, у которых есть Swift-библиотеки с бизнес-логикой и которые хотят переиспользовать их на Android без переписывания на Kotlin. Через Swift Java и Swift Java JNI Core Swift-код встраивается в существующее Kotlin/Java-приложение — не нужно всё переписывать с нуля.
🔗 Источник: swift.org
#Swift #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25👎14
Сайдлоадинг умрёт?
Нет. Верификация направлена против мошенников, а не против свободы установки. Верифицированные разработчики распространяют APK через любые каналы как раньше.
Что будет с установкой по ADB?
Нет. Сборка, отладка и деплой через ADB работают как прежде без регистрации. Регистрация нужна только если тестирование идёт через Firebase App Distribution, Play Internal Testing или APK отдаётся тестировщикам вне ADB.
Я занимаюсь разработкой как хобби, мне нужно будет пройти верификацию?
Нет. Для студентов и хобби-разработчиков вводится бесплатный аккаунт с ограниченным числом устройств без идентификации.
Зачем это вообще нужно?
На Play Store аналогичная схема уже дала двузначное снижение активности мошенников. Создать тысячи верифицированных аккаунтов с реальными документами несравнимо дороже, чем сделать это один раз как честному разработчику. Это не убирает всех, но делает порог выше. Плюс опыт пользователей с мошенничеством в разных странах разный, как и схемы обмана.
Ранний доступ стартует в октябре 2025 года, можно записаться уже сейчас.
#Android #AndroidDev #Безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👎35👍6
🤯 @android_broadcast в Max. Этого не будет
Привет. На фоне приближающейся даты 1 апреля решил что важно расскзаать про то, что будет с каналами при блокировке Telegram в России.
В первую очередь, я надеюсь, что Telegram на станут ограничивать, но принял решение, что не хочу проходить путь с построением канала на другой платформе, когда не могу себе объяснить "зачем", так еще и сражаться с оформлением постов. Продолжу вести канал только в Telegram.
На случай блокировки, как мне кажется, проще уже будет сделать свое приложение, где будет всё и сразу из коробки и так как удобно мне, чем постоянно искать какая площадка лучше.
Каналы @kotlin_broadcast, @ai_dev_broadcast и @compose_broadcast остаются в Telegram полностью.
#AndroidBroadcast
Привет. На фоне приближающейся даты 1 апреля решил что важно расскзаать про то, что будет с каналами при блокировке Telegram в России.
В первую очередь, я надеюсь, что Telegram на станут ограничивать, но принял решение, что не хочу проходить путь с построением канала на другой платформе, когда не могу себе объяснить "зачем", так еще и сражаться с оформлением постов. Продолжу вести канал только в Telegram.
На случай блокировки, как мне кажется, проще уже будет сделать свое приложение, где будет всё и сразу из коробки и так как удобно мне, чем постоянно искать какая площадка лучше.
Каналы @kotlin_broadcast, @ai_dev_broadcast и @compose_broadcast остаются в Telegram полностью.
#AndroidBroadcast
69👍460👎10
Google начала глобальный роллаут верификации разработчиков в Play Console и новом Android Developer Console.
В Android Studio через пару месяцев прямо при сборке подписанного App Bundle или APK будет видно статус регистрации приложения. Для студентов и энтузиастов готовят бесплатный аккаунт с ограниченным распространением до 20 устройств — без паспорта, только email. Ранний доступ открывается в июне.
С 30 сентября 2026 года в Бразилии, Индонезии, Сингапуре и Таиланде незарегистрированные приложения можно будет установить только через ADB или специальный Advanced Flow. С 2027 года это распространится на весь мир.
🔗 android-developers.googleblog.com
#Android #GooglePlay
Please open Telegram to view this post
VIEW IN TELEGRAM
👎69👍6
Вышла новая версия Media3, и там заметное обновление для тех, кто строит плеерный UI на Compose. Главное в этом релизе — продолжение развития модуля
media3-ui-compose-material3. Добавили готовый Player composable, который объединяет ContentFrame с настраиваемыми элементами управления сверху, по центру и снизу. Рядом появился ProgressSlider для перемотки через жесты и PlaybackSpeedControl с кнопкой переключения скорости. На мой взгляд, это уже почти полноценный out-of-the-box плеер на Compose Material3.Breaking changes:
👉
FrameExtractor вынесен в отдельный модуль media3-inspector-frame 👉
LottieOverlay переехал в media3-effect-lottie🔗 Источники: android-developers.googleblog.com
#Android #AndroidDev #Jetpack #Медия
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24👎6