TGINSIGHT CHAT
Android Broadcast
@android_broadcast
TechnologiesПодборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab#MQRZR
Posts récents
Page 5 sur 84 · 1,000 posts
Publié 28 mars
🤖В Android 17 нельзя менять `static final` поля через рефлексию или JNI. Звучит логично — static final по определению константа, но на практике это использовалось годами для разных хаков. 👉 Попытка изменить такое поле через рефлексию бросает IllegalAccessException 👉 Попытка через JNI SetStaticLongField() и аналоги — сразу краш приложения 👉 Ограничение включено только для приложений с targetSdk = 37, но в Beta 1 проверка активна для всех приложений, чтобы выловить проблемы раньше Зачем это нужно? Пока static final поле формально могло меняться, рантайм не мог агрессивно оптимизировать код, который к нему обращается. Теперь — может. На практике это чаще всего задевает тесты, которые через рефлексию подменяют константы в production-коде, и старые хаки с логированием или конфигурацией. Где-то жить станет чуть сложнее, но в целом всё закономерно — меньше хаков, честнее код. 🔗 Источник: developer.android.com #android#android17
Hashtags
Publié 27 mars
Да уж... Новинка Android 17 - кнопка для быстрого получения локации с минимальным написанием кода. Куда-то мы идем не туда. Уже все разработчики всё сделали что надо и выдать локацию можно на 1 раз, но вот она новинка, которой так всем не хватало!
Publié 27 mars
🤖Android 17 меняет подход к приватности геолокации. Вышла Android 17 Beta 3 и все изменения там касаются геолокациии 👉Location Button — разовый доступ к точной геолокации Новый UI-элемент из Jetpack, который даёт доступ к точным координатам прямо в момент нажатия, без постоянного разрешения. Пользователь нажал кнопку "поделиться местоположением" в вашем приложении — получил данные один раз в рамках сессии. Никаких диалогов с выбором "разрешить всегда / только сейчас". Кнопку можно кастомизировать: цвет, форма, текст из предопределённого списка. Иконка местоположения остаётся обязательной и неизменной. На Android 16 и ниже Jetpack автоматически откатывается к стандартному диалогу разрешений. 👉Примерная геолокация стала умнее До этого "приблизительный" режим использовал фиксированную сетку 2×2 км. В малонаселённых районах это фактически деанонимизирует пользователя, потому что в квадрате 2 км может быть буквально несколько человек. В Android 17 размер ячейки теперь зависит от плотности населения — чем меньше людей, тем больше область. Логично, что давно должно было быть так. 👉Индикатор использования геолокации По аналогии с микрофоном и камерой, при любом обращении к геолокации теперь будет появляться системный индикатор. Плюс — диалог с историей последних обращений с возможностью сразу перейти в настройки разрешений. 👉Переработанный диалог разрешений "Точное" и "Приблизительное" местоположение теперь визуально сильнее разделены, чтобы пользователь осознанно выбирал нужный уровень доступа. 🔗 Источник: android-developers.googleblog.com #Android#AndroidDev#Android17#Приватность
Publié 26 mars
🤖Вышла CameraX 1.6.0 с крутыми улучшениями Вышел стабильный релиз 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 🐱Примеры на Github #Android#AndroidDev#CameraX#Jetpack#Камера
Publié 25 mars
Оказывается Android Automotive всё ещё жива. Новостей про неё мало, но вот иногда доносится. Подробнее в блоге #Android#Android17#Automotive
Hashtags
Publié 25 mars
🤖Android 17 закручивает гайки для фонового аудио В 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
Hashtags
Publié 25 mars
🤖Google рассказала больше про Contact Picker из Android 17 Вышла отдельная статья в блоге со скриншотами — можно наконец посмотреть как пикер выглядит в живую. Из того, что не было в анонсе: на Android 17 старые ACTION_PICK с контактными типами автоматически апгрейдятся до нового пикера. То есть часть приложений получит приватный выбор контактов вообще без изменений кода. Приятный бонус для тех, кто не торопится мигрировать. В Compose интегрируется через rememberLauncherForActivityResult — код в статье рабочий, можно брать напрямую. 🔗 Источник: android-developers.googleblog.com 📖 Документация: developer.android.com #Android#AndroidDev#Android17
Hashtags
Publié 24 mars
🔥Firebase Crashlytics получил MCP-сервер В экспериментальном режиме Firebase запустили MCP-сервер для Crashlytics. Раньше, чтобы вытащить данные для анализа, нужно было настраивать экспорт в BigQuery, разбираться с Cloud Logging, писать SQL-запросы. Целый пайплайн ради того, чтобы понять что происходит со стабильностью приложения. Теперь всё это стало ощутимо проще. Через MCP агент получает прямой доступ к данным Crashlytics: может вытащить список активных проблем с приоритетами, разобрать конкретный краш по ID со всеми стектрейсами и метаданными, получить агрегированную статистику по событиям и затронутым пользователям. Плюс умеет добавлять заметки к ишью и менять его статус прямо в ходе разговора. Многие крашлитиковские ишью на практике достаточно простые, и агент вполне способен с ними справиться самостоятельно. Можно выстроить полный цикл: агент ночью смотрит новые крашы, разбирает их, создаёт задачи, предлагает или сразу делает фиксы, оставляет комментарии со всем контекстом. Раньше для этого не хватало именно доступа к данным мониторинга — теперь этот кусок закрыт. 🔗 Источник: firebase.google.com #Firebase#Crashlytics#MCP#AndroidDev#Android
Publié 23 mars
🤖TLRU — эволюция LRU-кэша с учётом времени Стандартный LRU-кэш не знает ничего о времени — он выбрасывает записи только когда заканчивается место. Поэтому в дисковом кэше Glide могут месяцами лежать устаревшие изображения, пока не будет достигнут лимит размера. Команда Grab описала подход TLRU (Time-Aware LRU) — форк DiskLruCache с тремя дополнительными параметрами: 1️⃣TTL — время жизни записи. Если (текущее_время - время_последнего_доступа) > TTL, запись удаляется 2️⃣Минимальный порог — защита от полного сброса. Если пользователь долго не заходил и все записи устарели, кэш всё равно не очищается полностью — иначе при возвращении все изображения загружались бы заново 3️⃣Максимальный размер — наследуется от LRU без изменений Реализация аккуратная: метка времени последнего доступа хранится прямо в journal-файле, переживает перезапуски. Алгоритм оптимизирован — если самая старая запись ещё не устарела, остальные не проверяются. Миграция со старого LRU безопасна в обе стороны: оригинальный DiskLruCache читает TLRU journal, просто игнорируя временны́е суффиксы. Мне нравятся такие решения, когда не надо переписывать с нуля, а точечно расширить проверенную реализацию. Три параметра поверх существующего механизма — и кэш наконец умеет забывать ненужное. Ну и честно - решение лежало на поверхности и вполне логичное. 🔗 Источник: engineering.grab.com #Android#AndroidDev#Производительность#Оптимизация
Publié 22 mars
🤯 Fortnite вернулась в Google Pla После 6 лет долгих сражений с Google. Это привело к переменам политики Google Play в США и по всему миру. Недавние перемены магазина от Google - результат сделки между компаниями 🔗 Источник: www.fortnite.com
Publié 20 mars
Не только Google слушает разработчиков, но и я вижу, как тема AI-кодинга раскалывает сообщество. Мне очень интересна эта тема и я активно в неё погружаюсь. Встречайте новый канал - @ai_dev_broadcast В канале НЕ будет потока новостей: "Вышла новая модель A, которая стала быстрее на N% и уступила всех конкурентов" Освещать буду то, что реально интересно мне в разработке с помощью ИИ и мой опыт: 👉 как применяю AI в разработке и управлении командой 👉 что попробовал, что зашло, что нет 👉 находки и кейсы, которые не влезают в @android_broadcast 👉 эволюцию взгляда для решения различных задач с ИИ #AndroidBroadcast#ИИ
Hashtags
Publié 20 mars
🤖Google отступил — сайдлоадинг остаётся, но теперь со "взрослым режимом" Помните историю с обязательной верификацией разработчиков за пределами Google Play? Ту, где сообщество буквально взорвалось возмущением — мол: Google закрывает открытую платформу, прощай сайдлоадинг для всех, кто не хочет светить паспорт и платить регистрационный взнос. Google тогда обещал прислушаться к обратной связи и решил понизить градус требований. Теперь у пользователей будет так называемый advanced flow для установки приложений от неверифицированных разработчиков. Выглядит это как небольшой квест: 1️⃣ Включить режим разработчика в настройках системы 2️⃣ Подтвердить, что вас никто не принуждает это делать 3️⃣ Перезагрузить телефон и пройти повторную аутентификацию 4️⃣ Подождать один день (защитный период!) 5️⃣ Подтвердить намерение через биометрию или PIN ✔️ Всё — можно устанавливать, причём сразу на 7 дней или бессрочно Официальная причина такой сложности — борьба с мошенниками. По данным GASA, в 2025 году 57% взрослых пользователей в мире столкнулись с мошенничеством, а суммарные потери составили $442 млрд (информация из анонса). Типичная схема: звонок с угрозами, давление и просьба срочно отключить защиту и установить "нужное" приложение. Многоэтапный флоу с ожиданием сутки как раз ломает эту цепочку — дать человеку время подумать. Ещё одна приятная деталь — бесплатные аккаунты с ограниченным распространением для студентов и энтузиастов. До 20 устройств, без ID, без оплаты. Для тех, кто просто хочет поделиться своей поделкой с друзьями. Google реально постарался найти баланс. Угроза мошенничества через сайдлоадинг — не выдуманная, суммы потерь говорят сами за себя. При этом hardcore-разработчики и опытные пользователи ничего принципиально не теряют, просто теперь нужно пройти однократный ритуал. Другой вопрос — насколько этот "ритуал" будет раздражать тех, кто устанавливает сторонние приложения регулярно. Я вижу два лагеря: одни скажут "ну наконец-то хоть что-то для безопасности обычных людей", другие — "очередное закручивание гаек под видом заботы". И честно — оба правы по-своему. Вступает в действие в августе 2026 с разворачиванием новый системы верификации разработчиков 💬 Ну как вам уступка Google или всётаки верните наш 2025? 🔗 Источник - Блог Android Developers #Android#AndroidDev#GooglePlay#Безопасность🏝