Android Broadcast
14.4K subscribers
3.66K photos
364 videos
11 files
6.07K links
Подборка новостей и статей для Android разработчиков.

Реклама и связь с автором @ab_manager

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
🚀 Вышла SwipeRefreshLayout 1.2.0 — важные исправления для "pull-to-refresh"

Google выпустил обновление библиотеки SwipeRefreshLayout до версии 1.2.0. В основном релиз содержит исправления багов, которые улучшают работу жеста обновления.

Исправление визуальных артефактов
- Иконка обновления теперь полностью убирается после сворачивания (исчезает её тень)
- Сброс всех свойств иконки после сворачивания, чтобы она корректно отображалась при следующем вызове

👍Корректная обработка Touch-событий. Метод requestDisallowInterceptTouchEvent() теперь работает как в обычных ViewGroup. Это важно для вложенных scroll-контейнеров.

Если новое поведение с обработкой touch-событий ломает ваше приложение, можно вернуть старое через:
swipeRefreshLayout.setLegacyRequestDisallowInterceptTouchEventEnabled(true)


#AndroidDev #Jetpack #UI
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍9
🚀 Google выпустила androidx.webgpu:webgpu:1.0.0-alpha01 — WebGPU нативно в Android-приложения.

WebGPU — это новый графический и вычислительный API, который приходит на смену устаревающему WebGL. Его цель — дать разработчикам современный доступ к GPU для тяжёлых визуальных и вычислительных задач как в вебе, так и теперь — в Android, благодаря androidx.webgpu. Если упрощённо — WebGPU открывает дверь к автоматически оптимизированной работе с видеокартой без необходимости использовать низкоуровневые графические движки.

Что даёт WebGPU разработчикам:
🧩 Современная графика уровня Vulkan/Metal/DX12
⚙️ Compute-шейдеры для вычислений прямо на GPU
🚀 Высокую производительность рендеринга и ML-вычислений
🔁 Кроссплатформенность: единый подход Web + Android (и не только)
📦 Потенциально меньше нативного кода на C++/NDK
🧪 Удобный доступ к GPU-фичам для прототипов и экспериментов

Версия для Android пока в alpha, API нестабилен, документации немного. Но это важный шаг: Google фактически легализует WebGPU как будущий GPU-базис на Android.

#AndroidDev #Android #Jetpack #AndroidJetpack #WEB #GPU
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥9
📹 Архитектура, которая не ломается | FlowMVI Часть 2

В этой части Никита @Nek12 разбирает, как FlowMVI применяет архитектурные подходы, позволяющие поддерживать предсказуемое поведение приложения и исключать хаотичные ошибки. Покажет, как инструмент помогает выстраивать MVI архитектуру, ориентированную на устойчивую работу в условиях многопоточности и постоянных изменений данных.

#Android #KMP #MVI #Архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔20👍8🔥3🆒1
🤖 Android 16 QPR2: системный шаринг наконец стал интерактивным

Раньше системный шузер для шаринга был «односторонним»: вы собрали Intent, отдали его в Intent.createChooser(...) — и дальше всё полностью контролирует система.

После открытия sharesheet вы уже не можете:
👉 обновить текст или вложения;
👉 убрать/добавить таргеты;
👉 синхронизировать состояние с продолжающимся действием в приложении.

Если пользователь что-то поменял (например, отредактировал текст или выбор вложений), приходилось закрывать шузер и открывать его заново.

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

В Android 16 QPR2 / API 36.1 появился новый механизм — Interactive Chooser Sessions. Теперь приложение может держать живую сессию шаринга, обновлять её и получать события, пока открыт системный sharesheet. Для этого используются ChooserManager и ChooserSession.

// Базовый пример: запуск интерактивной сессии (Kotlin)
val chooserManager: ChooserManager = context.getSystemService()

val shareIntent = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, "This is a message that will be shared.")
}

val chooserIntent = Intent.createChooser(shareIntent, null)

val session: ChooserSession = chooserManager.startSession(context, chooserIntent)
val token: ChooserSessionToken = session.token


token можно сохранить в ViewModel или savedStateHandle, чтобы потом восстановить сессию после поворота экрана или пересоздания Activity.

val existingToken: ChooserSessionToken = /* restore from state */
val existingSession: ChooserSession = chooserManager.getSession(existingToken) ?: return


Управление сессией через ChooserSession API

val executor: Executor = ContextCompat.getMainExecutor(context)

session.addStateListener(executor, object : ChooserSession.StateListener {
override fun onStateChanged(state: Int) { }

override fun onBoundsChanged(bounds: Rect) { }
})


Временное отключение таргетов на время долгой операции:
session.setTargetsEnabled(false)

val updatedShareIntent = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, "Updated message generated in runtime")
}

val updatedChooserIntent = Intent.createChooser(updatedShareIntent, null)
session.updateIntent(updatedChooserIntent)

session.setTargetsEnabled(true)

// Завершение сессии, когда шаринг больше не нужен:
session.endSession()


#Android #Android16
Please open Telegram to view this post
VIEW IN TELEGRAM
👍286
🤖 Секреты под защитой: как мы спрятали ключи приложения с помощью Gradle-плагина

Автор статьи показа пример написания Gradle плагина который кладет секретный ключи в код и выполняет их минимальную защиту через побитовый сдвиг. Не панацея, но как минимум стоит делать такое

#Android #Безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔16👍6
🏝 Основы AGSL для android разработчика (17м)

AGSL (Android Graphics Shading Language) — это язык программирования фрагментных шейдеров, представленный в Android 13 (API 33), который позволяет разработчикам создавать сложные графические эффекты, настраивать отрисовку  Canvas  и фильтровать содержимое  View. Он глубоко интегрирован в графический движок Android (Skia), что позволяет применять GPU-ускоренные эффекты напрямую к стандартным элементам интерфейса .


Классная статья, которая описывает простым языком как рабоатет AGSL и какие преимущества дает разработчикам, а также как его начать использовать

#Android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍86
🔨 Вышла стабильная Android Studio Otter 2 Feature Drop

Команда Android Studio выпустила финальный стабильный релиз 2025 года — Otter 2 Feature Drop. Это большое обновление которое в основном строится вокруг AI

Главные нововведения:
⭐️ Прокачали AI функции с Gemini 3
🔁 Бэкап и синхронизация настроек
🤖 Прямо в Android Studio можно получить новости от Android команды про новинки (зачем???)
🛠 Основана на IntelliJ IDEA 2025.2: Kotlin K2 Mode, прокачанный терминал

#AndroidStudio #Android #AndroidDev #AI #ИИ #Gemini
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥4
🤖 Samsung выпустила TriFold - трикладушка с 2 экранами. Снаружи смартфон с вытянутым экраном, а внутри - планшет на 10". Цена - около 2500$ в Кореи

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

Я хочу себе такое устройство в пользование, но вот его стоимость пока меня останавливает 😔

Вам интересно увидеть видео про историю раскладушек и почему они не взлетели и сможет ли iPhone Fold тригернуть покупателей на приобретение такого устройства? Если да - ставь ❤️ под постом
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1136👍10🤯9
🪙 Все кто не считает, что мой труд стоит 300 рублей подписки на Boosty, может первым кинуть мне чек её оплаты 😁

Там действительно много полезного контента для разработчиков и будет только больше как я восстановлюсь. Закрытое сообщество в Telegram вообще топ для решения вопросов работы и жизни

Оформить подписку можно тут
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔43🤝8🤯6👍3🔥2
🤖 Готовьтесь к Android Gradle Plugin 9.0 — грядут большие перемены!

Совсем скоро состоится релиз Android Gradle Plugin 9.0 (AGP), который полностью меняет подход к конфигурации Android‑проектов: удаляет устаревшие API, упрощает настройку и пересматривает организацию конфигурации.

Ключевые изменения:
👉 Переход на Gradle 9.X
👉 Поддержка Kotlin теперь встроена в AGP — подключение org.jetbrains.kotlin.android больше не требуется и даже будет рушить сборку. Из плюсов — минус один плагин.
👉 Плагин org.jetbrains.kotlin.multiplatform больше не будет работать с com.android.library и com.android.application. Используйте com.android.kotlin.multiplatform.library, а для приложения создавайте отдельный модуль.
👉 Массовые изменения в API — множество удалений без прямых альтернатив. В целом идёт отказ от старых публичных интерфейсов, ведь новые уже давно доступны, и авторы плагинов могут их использовать.
👉 Некоторые возможности конфигурации теперь будут доступны только в библиотечном плагине.

Чтобы корректно обновиться до новой версии, нужно, чтобы все плагины, подключённые в проект, поддержали необходимые изменения — или отказаться от них.

Подробнее обо всех изменениях — в документации

Надеюсь, Android Studio добавит ассистента по миграции. А вот авторам плагинов, похоже, прибавится работы 😅

Как вам перемены? Пойдут ли они на пользу скорости сборки и удобству использования AGP?

#Android #AndroidDev #Gradle #AGP #AndroidStudio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍357🔥4
Новый игрок на рынке - Jolla Phone от создателей ОС Sailfish, которая является предком Аврора ОС

Новая модель устройства позиционируется разработчиками как преемница оригинального телефона Jolla Phone 2013 года и создана с учётом давних тенденций компании к конфиденциальности и контролю пользователей.

Jolla была основана в 2011 году бывшими сотрудниками Nokia. В 2012 году компания представила операционную систему Sailfish, которая поддерживала приложения для ОС Android.
👍174🎉2
🤖 AGP 9.0: Fused Library Plugin — новый способ публикации нескольких модулей как один AAR

В Android Gradle Plugin (AGP) 9.0 и новее появился инструмент, которого ждали многие разработчики SDK и библиотек. Встречайте плагин Fused Library (com.android.fused-library). Пока в экспериментальном режиме.

Раньше, если вы разбивали свой код на много модулей, перед вами вставала дилемма: заставлять пользователя подключать 5 разных зависимостей или использовать неофициальные "fat-aar" скрипты. Теперь Google предлагает нативное решение.

Fused Library плагин позволяет взять несколько Android Library модулей и упаковать их в один AAR [1].

1️⃣ Для включения фичи надо будет добавить флаг в gradle.properties:
android.experimental.fusedLibrarySupport=true


2️⃣ Затем создаем модуль для публикации (например, my-sdk-fused). В его build.gradle.kts добавляем:

plugins {
id("com.android.fused-library")
`maven-publish`
}

androidFusedLibrary {
namespace = "dev.androidbroadcast.mysdk"
minSdk = 23
}

dependencies {
// Указываем модули для "слияния"
include(project(":core"))
include(project(":ui-components"))
// Можно вливать даже внешние либы!
include("dev.androidbroadcast:cool-fonts:1.0")
}

Обратите внимание на include — это ключевая команда для упаковки.

3️⃣ Используем компонент fusedLibraryComponent при публикации артефакта:

publishing {
publications {
register<MavenPublication>("release") {
groupId = "dev.androidbroadcast"
artifactId = "fat-sdk"
version = "1.0.0"
from(components["fusedLibraryComponent"])
}
}
}


Инструмент мощный, но есть особенности:
Data Binding не поддерживается.
⚠️ Ресурсы: При совпадении имен побеждает ресурс из зависимости, указанной первой.
⚠️ Build Types: Нельзя слить debug и release в один проход, нужны разные fused-модули.
🐞 Source JAR: Пока есть известные проблемы с генерацией исходников.

Подробнее читайте в [документации](https://developer.android.com/build/publish-library/fused-library)

#Android #AndroidDev #Gradle #AGP #Maven
Please open Telegram to view this post
VIEW IN TELEGRAM
👍36🔥155
🤖 Списки в Compose — источник и силы, и проблем.
Именно они чаще всего начинают тормозить, расходовать ресурсы и портить UX. Готовы управлять их производительностью так же уверенно, как архитектурой?

📖 На открытом уроке разберём подкапотную механику:
🔵как работает список в Compose;
🔵что делает LazyColumn;
🔵зачем нужен key;
🔵почему одни реализации плавные, а другие — нет.
Вы увидите подход, который используют опытные Android-разработчики в продакшене.

❗️ Это шанс понять оптимизацию UI не по шаблонам, а на уровне механики. Если вы уже пишете на Compose — урок поможет выйти на профессиональный уровень, где производительность становится преимуществом.

🗓 18 декабря в 20:00 МСК. Открытый урок перед стартом курса «Android Developer. Professional».
🚀 Регистрация уже доступна.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🚀 Cash App перевел Android-приложение на Metro — новый DI фреймворк для Kotlin

Команда Cash App (Block) успешно мигрировала своё Android-приложение с Anvil/Dagger на Metro — современный фреймворк для dependency injection, разработанный Zac Sweers.

Metro — это compile-time DI фреймворк, вдохновленный Dagger и Anvil, но реализованный как Kotlin compiler plugin. Он Kotlin-first, поддерживает K2 и работает значительно быстрее традиционных решений. Вобрал в себя всё лучшее от Dagger, Anvil и Kotlin-Inject

Почему перешли на Metro?
- Скорость сборки — ускорение инкрементальных сборок на ~60%
- Поддержка Kotlin K2 — возможность использовать новейший компилятор Kotlin
- Упрощение стека — отказ от kapt и Java-ориентированных инструментов
- Современный подход — Kotlin-first дизайн и улучшенный DX
- Более строгая валидация DI-графа
- Улучшена безопасность типов (нуллабельность)
- Поддержка KMP

📊 Результаты по скорости сборки:
- Инкрементальные сборки → ускорение на 58-60%
- Чистые сборки → ускорение на 17%
- ABI-изменения → сборка за 11.9s вместо 28.8s

Миграция 1500 модулей проводилась постепенно с двойной поддержкой двух DI фреймворков для безопасного перехода. В зависимости от настройки Gradle менялся DI и генерация кода.

Впервые вижу подход, когда был описан граф для 2 разных DI с целью постепенной миграции. Миграцию с Koin на Metro так не сделать, но вот с Koin Annotations на Metro вполне может получится.

#DI #KMP #Dagger #Metro #Android #AndroidDev #Anvil
👍38🔥165
📹 Его уволили за гонки состояний... | FlowMVI Часть 3

Никита @nek_12 случайно сделал скам-приложение, которое снимает все деньги с кошельков пользователей и чуть не оказался уволен, после чего первым делом записал видос о том, как избавиться от гонок данных во вьюмоделях. В третьей части курса по FlowMVI начнем с того, как настраивать вашу бизнес логику, а потом на горьком опыте Никитоса разбираем, как базы данных связаны со State Flow, как забыть про ANR, и откуда взялись баги в продакшене и плохие отзывы, которые НЕ воспроизводятся у тестировщиков.

#FlowMVI #Архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
18🔥9👍7🎉2
🎓Систематизируйте знания о мобильном тестировании с бесплатным курсом

Практикующие эксперты из Selectel, Ozon, Спортс” и других компаний подготовили бесплатный курс по мобильному тестированию. Он будет полезен для изучения основ и для прокачки карьеры в мобильной разработке.

На курсе вы узнаете или освежите в памяти, как:
▫️ проверять мобильные приложения с учетом специфики разных платформ;
▫️ работать с API, логами и трафиком на эмуляторах и реальных устройствах;
▫️ автоматизировать тестирование через Jenkins или GitHub Actions.
👉Смотрите полную программу и начинайте обучение

Реклама. АО "Селектел". erid:2W5zFJBY5s6
2👍1
🏝 Play Integrity API: Защита вашего приложения от злоумышленников

Play Integrity API — это сервис Google Play для верификации подлинности и целостности вашего приложения. Простыми словами, это инструмент безопасности, который позволяет убедиться, что взаимодействие пользователя с вашим приложением происходит честно и легитимно


Суть работы API - на запрос из приложения вернуть вердикт о различных типах рисков:
👉 Несанкционированный доступ — проверяет, был ли установлено или оплачено через Google Play.
👉 Модификация кода — убеждается, что код приложения не был изменен. Поддельные устройства — проверяет, работает ли приложение на подлинном, сертифицированном Android-устройстве.
👉 Кроме того, API обнаруживает непатченные устройства — проверяет, установлены ли на девайсе свежие обновления безопасности.
👉 Опасные приложения — выявляет программы, которые могут контролировать экран или перехватывать данные.
👉 Автоматизированные атаки — определяет, не генерирует ли устройство аномально много запросов. И повторные попытки — проверяет, не пытается ли это же устройство совершить злоупотребление еще раз.

С помощью Play Integrity API вы можете предотвращать мошенничество — блокировать несанкционированные платежи и финансовые операции. Можно защищать от взлома — обнаруживать модифицированные версии приложения, распространяемые пиратами. API помогает бороться с читингом — предотвращать использование взломанных версий в играх. И, наконец, защищать пользователей — выявлять опасные приложения на устройстве, которые могут украсть данные.

По данным Google, приложения, использующие Play Integrity API, видят на 80% ниже несанкционированное использование по сравнению с другими приложениями. Крупные компании вроде Uber, TikTok, Stripe, Paytm уже интегрировали его себе.

⚠️ Play Integrity API работает не только на сертифицированных Google устройствах на базе Android, а значит там точно должны быть Google Play Services.

‼️ВАЖНО Никакая защита не может дать абсолютной гарантии безопасности, но это не значит что не нужно интегрировать решения, а то что надо следить за безопасностью вашего продукта, вовремя обновлять его защиту и предотвращать небезопасное использование, позвляющее украсть данные и имущество пользователя

#GooglePlay #Безопасность #GMS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2🎉1
🎉 Rust теперь официально в Linux!

Android ведь на ядре Linux, которое пишут на C/C++. Эти языки сложные — баги сами лезут, потому что средний скилл разработчика уменьшается 🥲. А Rust упрощает жизнь и делает код безопаснее.

Надеюсь, ядро от этого выиграет. Хотя знаю: староверы будут стоять на C/C++, а новички — мечтать о доработке ядра через AI 😏

🔗 Источник тут

#Linux #Rust
19🔥5👍2