TGTGInsighttelegram intelligenceLIVE / telegram public index
Retour aux chaînes
Android Broadcast avatar

TGINSIGHT CHAT

Android Broadcast

@android_broadcast

Technologies

Подборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab#MQRZR

Abonnés1.4万Abonnés actuels de la chaîne
Posts indexés1,000Nombre de posts indexés
Portée récente85,690Somme des vues récentes
Posts récents

Posts récents

Tag : #android · 490 posts

当前筛选 #android清除筛选

🤖В Android 17 нельзя менять `static final` поля через рефлексию или JNI. Звучит логично — static final по определению константа, но на практике это использовалось годами для разных хаков. 👉 Попытка изменить такое поле через рефлексию бросает IllegalAccessException 👉 Попытка через JNI SetStaticLongField() и аналоги — сразу краш приложения 👉 Ограничение включено только для приложений с targetSdk = 37, но в Beta 1 проверка активна для всех приложений, чтобы выловить проблемы раньше Зачем это нужно? Пока static final поле формально могло меняться, рантайм не мог агрессивно оптимизировать код, который к нему обращается. Теперь — может. На практике это чаще всего задевает тесты, которые через рефлексию подменяют константы в production-коде, и старые хаки с логированием или конфигурацией. Где-то жить станет чуть сложнее, но в целом всё закономерно — меньше хаков, честнее код. 🔗 Источник: developer.android.com #android#android17

7,460 views

🤖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#Приватность

6,150 views

🤖Вышла 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#Камера

6,020 views

Оказывается Android Automotive всё ещё жива. Новостей про неё мало, но вот иногда доносится. Подробнее в блоге #Android#Android17#Automotive

5,950 views

🤖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

6,360 views

🤖Google рассказала больше про Contact Picker из Android 17 Вышла отдельная статья в блоге со скриншотами — можно наконец посмотреть как пикер выглядит в живую. Из того, что не было в анонсе: на Android 17 старые ACTION_PICK с контактными типами автоматически апгрейдятся до нового пикера. То есть часть приложений получит приватный выбор контактов вообще без изменений кода. Приятный бонус для тех, кто не торопится мигрировать. В Compose интегрируется через rememberLauncherForActivityResult — код в статье рабочий, можно брать напрямую. 🔗 Источник: android-developers.googleblog.com 📖 Документация: developer.android.com #Android#AndroidDev#Android17

6,700 views

🔥Firebase Crashlytics получил MCP-сервер В экспериментальном режиме Firebase запустили MCP-сервер для Crashlytics. Раньше, чтобы вытащить данные для анализа, нужно было настраивать экспорт в BigQuery, разбираться с Cloud Logging, писать SQL-запросы. Целый пайплайн ради того, чтобы понять что происходит со стабильностью приложения. Теперь всё это стало ощутимо проще. Через MCP агент получает прямой доступ к данным Crashlytics: может вытащить список активных проблем с приоритетами, разобрать конкретный краш по ID со всеми стектрейсами и метаданными, получить агрегированную статистику по событиям и затронутым пользователям. Плюс умеет добавлять заметки к ишью и менять его статус прямо в ходе разговора. Многие крашлитиковские ишью на практике достаточно простые, и агент вполне способен с ними справиться самостоятельно. Можно выстроить полный цикл: агент ночью смотрит новые крашы, разбирает их, создаёт задачи, предлагает или сразу делает фиксы, оставляет комментарии со всем контекстом. Раньше для этого не хватало именно доступа к данным мониторинга — теперь этот кусок закрыт. 🔗 Источник: firebase.google.com #Firebase#Crashlytics#MCP#AndroidDev#Android

7,890 views

🤖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#Производительность#Оптимизация

7,500 views

🤖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#Безопасность🏝

9,260 views

🤖Google опубликовал обновлённые дизайн-ресурсы для Android — и там есть кое-что полезное Компания активно продвигает адаптацию Android-приложений под ноутбуки и десктопы, где управление происходит мышью и клавиатурой. Неудивительно, ведь скоро появится Android-ноутбук, есть Chromebook'и, да и телефоны уже давно предлагают подключать к большому монитору. 1️⃣ Появилось новое руководство по Desktop Experience. Это про то, как ваше приложение должно выглядеть и работать, когда пользователь запускает его в desktop-режиме. Там разобраны принципы компоновки под большие экраны, работа с курсором (включая кастомные иконки), windowing с header bar и подход к более высокой плотности информации в UI. Всё это логично вытекает из того, что Android всё активнее движется в сторону десктопа через функцию connected display. 2️⃣ Запустили Android Design Gallery — живой каталог с примерами хорошего дизайна под разные форм-факторы и паттерны UX. Обещают пополнять регулярно. Полезно хотя бы как источник вдохновения, когда застреваешь на том, как должен выглядеть адаптивный экран. Честно говоря, руководство давно напрашивалось — адаптивная разработка под Android остаётся одним из самых недооценённых направлений. Большинство приложений на планшетах и десктопах до сих пор выглядят как растянутый телефон. Особенно что в Andorid 17 система будет игнорировать ограничения приложений на размеры окна и ориентацию, картина будет интересной. 🔗 Источник: Android Developers Blog #Android#AndroidDev#Дизайн#UI

6,440 views

🤖Google ускорила ядро Android, скормив компилятору профили реального использования Команда LLVM toolchain в Google рассказала, как они применили AutoFDO (Automatic Feedback-Directed Optimization) к ядру Android — и результаты интересные. Идея простая: обычный компилятор принимает решения об оптимизациях на основе статических эвристик. Встроить функцию или нет, какая ветка условия чаще выполняется — всё это угадывается без реальных данных из приложений и пользовательских сценариев. AutoFDO меняет подход: компилятор получает профили реального выполнения кода и на их основе принимает куда более точные решения. Эта техника Google уже давно применяется к своей серверной инфраструктуре и ChromeOS, так что подход обкатанный и зарекомендовавший себя. Кто знаком с ART Profiles — идея покажется знакомой. Там тот же принцип: собираем данные о реальном выполнении, отдаём компилятору, получаем более точный нативный код. Только ART Profiles работают на уровне ART для Java/Kotlin-кода конкретного приложения, а AutoFDO — на уровне ядра, C/C++ и LLVM. Разные слои, одна философия. Для ядра профили собирают не с реальных устройств, а в лабораторных условиях: запускают топ-100 самых популярных приложений, используют simpleperf и аппаратные возможности ARM для записи истории ветвлений. Собранные данные показывают 85% совпадение с профилями реального парка устройств — этого достаточно, чтобы считать подход рабочим. Результаты на ядрах 6.1, 6.6 и 6.12: 👉 холодный старт приложений стал быстрее на ~4% 👉 время загрузки сократилось на ~1% 👉 ядро занимает ~40% CPU-времени на Android, так что любая оптимизация здесь ощутима Важный момент: AutoFDO не меняет логику кода, только влияет на решения компилятора — инлайнинг, раскладку кода. Функции, которые не попали в профили («холодные»), компилируются стандартным образом, без изменений. Сейчас это уже в проде — профили включены в ветки android15-6.6 и android16-6.12, так что устройства на этих ядрах уже собираются с AutoFDO. Pixel-устройства точно попадают в эту категорию. С другими производителями сложнее: многие используют сильно модифицированное ядро и не переходят на GKI из AOSP, так что там это может быть не применено вовсе. В планах — GKI-модули, вендорные модули через DDK и поддержка новых версий ядра. 🔗 Источник - блог Android Developers #Android#AndroidDev#Производительность#LLVM#Native

7,530 views

🚀Начали разработку Room 3.0, который станет полностью KMP-библиотекой с поддержкой JS и WASM, а также избавится от легаси. Разработчики популярного ORM для Android и KMP решили выпустить мажорную версию, чтобы отразить всю важность изменений: 👉 Полный переход на androidx.sqlite driver API. 👉 Генерация кода будет только на Kotlin, никакой больше Java. 👉 APT и KAPT больше не будут поддерживаться. Остается только KSP. 👉 Room API теперь будет делаться в подходе "Kotlin Coroutines first", делая весь ORM асинхронным по умолчанию. Что нас ждет из новых фичей и возможностей: 👉 Появится полноценная поддержка JS и WASM-таргетов. 👉 Можно будет добавить собственные возвращаемые типы в Room. Например, Room, RxJava, Paging и пр. Новая версия Room будет выпущена под новым пакетом androidx.room3. Room 2.X не получит новых фичей, только багфиксы. 🔗 Источник - блог Android Developers. 🔗Release Notes Room 3.0.0-alpha01 #Android#AndroidDev#Room#SQLite#Jetpack#AndroidJetpack#KMP

8,430 views
12345•••10•••20•••30•••4041