Android Broadcast – Telegram
Android Broadcast
14.4K subscribers
3.68K photos
367 videos
11 files
6.1K links
Подборка новостей и статей для Android разработчиков.

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

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
🚀 Вышел Jetpack DataStore 1.1.4 и там изменили реализацию хранилища по умолчанию, которая должна уменшить количество ошибок повреждения данных

#jetpack #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🚀 Вышел Jetpack Room 2.7.0 RC03 с важными исправлениями багов перед выходом первой стабильной версии с поддержкой KMP

#android #jetpack #jetpackupdate #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24
🚀 Отличные улучшения в Jetpack Biometric 1.4.0-alpha03

👉 Удалили артефакт ktx, так как библиотека теперь полностью на Kotlin
👉 Представили аналог Activity Result API для обработки, который поддерживает смену конфигурации
👉 Перешли на аннотации JSpecify

#android #jetpack #jetpackupdate #безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
// Пример использования нового API для авторизации по биометрии
class AuthenticationSampleActivity : FragmentActivity() {

private val authResultLauncher = registerForAuthenticationResult(
onAuthFailedCallback = {
Log.i(TAG, "onAuthenticationFailed, try again")
},

resultCallback = { result: AuthenticationResult ->
when(result) {
is AuthenticationResult.Success -> result.authType
is AuthenticationResult.Error -> result.errorCode
}
}
)

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

val authRequest: AuthenticationRequest =
AuthenticationRequest.Biometric.Builder(...)
// Setup build request
.build()

authResultLauncher.launch(authRequest)
}
}
👍20
🚀 Добавили поддержку Android 16 для Jetpack Activity в версии 1.11.0 Alpha02

#android #jetpack #android16 #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🚀 Jetpack Navigation теперь поддерживает тестирование не только на Android в версии 2.9.0-alpha09.

Теперь для тестирования навигации не требуется Android-устройство, эмулятор или использование Robolectric, благодаря тому что артефакт navigation-testing поддерживает JVM Desktop таргет KMP. Также поддерживается iOS.

#android #jvm #desktop #jetpack #jetpackupdate #навигация #ios
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
🚀 Первая альфа-версия DataStore 1.2.0, в которой добавлена поддержка работы в режиме Direct Boot (режим работы приложения до разблокировки устройства пользователем). Кроме того, появился артефакт с поддержкой Guava для Java.

#android #jetpack #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🚀 Первый RC релиз Javanoscript Engine 1.0. Первая альфа появилась еще в августе 2022 🤯 Завершают долгострой

#jetpack #js #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
🚀 Вышел Jetpack Media3 1.6.0

👉 Поддержка HLS interstitials для добавления рекламных вставок в HLS-стримы. Подробности тут.
👉 Экспериментальная поддержка декодеров с предварительным прогревом. Позволяет декодировать видео заранее и сделать переключение между видео плавным.
⚙️ Артефакт с поддержкой Compose UI - media3-ui-compose. Демо с новыми компонентами тут, руководство найдете в официальной документации.
🚀 Оптимизация производительности: системные вызовы происходят на фоновом потоке для уменьшения ANR.
🎉 Новое API MediaExtractorCompat - замена MediaExtractor из фреймворка на основе Media3.
👉 API ExperimentalFrameExtractor для получения кадров из видео на замену MediaMetadataRetriever.getFrameAtTime().
👉 Поддержка работы с Dolby Vision.
🛠 Исправление багов.

Полный Release Notes тут.

#android #jetpack #медиа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23
Вот такие эффекты позволяет наложить Transformer API на видео в Jetpack Media3
👍18
Secure Preference - open source библиотека с оберткой над SharedPreferences c шифрованием данных

Фичи решения: полное шифрование, поддержка Coroutines FLow, простое API, автоматическое обновление, поддержка основных Android типов

val securePrefs by SecurePrefs(context)
securePrefs.put("user_token", token)
val token = securePrefs.get(
key = "user_token",
default = null,
)

securePrefs
.keyResult("user_token", "")
.collect { token ->
println("Current token: $token")
}


Автор библиотеки есть среди подписчиков @android_broadcast и скорее всего ответит на ваши вопросы

#andorid #безопасность
👍38
Ключевые советы для написания тестов: Опыт Сбербанка (15м)

❗️Структурируйте тесты по принципу Arrange-Act-Assert:
Четкое разделение на подготовку, выполнение и проверку помогает создавать понятные и логичные тесты.

❗️Не используйте моки там, где это не нужно:
Моки — мощный инструмент для тестирования, но их неправильное использование может существенно ухудшить производительность.

❗️Пишите читаемые и поддерживаемые тесты:
Тесты должны быть самодокументируемыми, чтобы их мог понять любой разработчик, и легко адаптироваться под изменения кода.

❗️Изолируйте тесты друг от друга:
Независимость тестов гарантирует, что один тест не повлияет на результаты другого, что критично для стабильности автоматизированного тестирования.

❗️Избегайте дублирования кода:
Используйте общие фикстуры и утилиты для подготовки тестовых данных, чтобы сократить повторение и упростить поддержку.

❗️Покрывайте негативные и граничные сценарии:
Необходимо тестировать не только «счастливые» случаи, но и всевозможные ошибки и исключительные ситуации, что повышает надежность приложения.

❗️Регулярный анализ производительности:
Регулярный анализ производительности unit-тестов играет ключевую роль в нашем проекте для поддержания их эффективности и минимизации влияния на общий процесс разработки.

❗️Интегрируйте тестирование в CI/CD:
Автоматизация запуска тестов позволяет быстро получать обратную связь и оперативно обнаруживать проблемы на ранних этапах разработки.

#тестирование
👍20
Вышел scrcpy 3.2 в котором добавили новые аудиосточники и исправили работу на Android 15 и 16

#android #интсрументы
👍27
Context, который приходит в BroadcastReceiver.onReceive() не сможет выполнить (будет выброшено исключение) следующие методы
Anonymous Quiz
21%
bindService
20%
startForegroundService
38%
startActivity
21%
Нет правильного ответа
3👍17
Forwarded from Compose Broadcast
⚙️ Как работать с Custom Layout в Jetpack Compose (21м)

В этой статье вы найдете:
👉 как работают layout-ы в Compose;
👉 изменение layout-а отдельного компонента;
👉 создание кастомных Layout и LazyLayout;
👉 отложенную композицию.

Всё это на примерах, в том числе из дизайн-системы Авито.

#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍47
Разработчик из Ozon делится опытом, как организовали с помощью фич языка Kotlin хранилище Dagger-компонентов, доступное из любого модуля, управляющее их жизненным циклом и забравшее другую рутину на себя.

#android #dagger #di
👍34
🤖 Как обойти запрет на получение списка установленных приложений 🤯

Знали ли вы, что приложениям теперь недоступно получать список установленных приложений без специального разрешения - QUERY_ALL_PACKAGES?

Ловите статью о том, как это легко обходится реальными приложениями, опубликованными в Google Play, и у модерации магазина нет вопросов.

#android #безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍36
🤖 Как ускоряли скорость сборки в Android-приложении для продавцов Ozon (11 мин)

Для любого ускорения важно на первом этапе определить, как измерять результат, и уже потом применять улучшения.

Какие практики применялись:
👉 Включение Gradle Build и Configuration Cache
👉 Разделение тяжелых для сборки модулей на более мелкие, чтобы можно было выполнять работу параллельно
👉 Выделение API-модулей и превращение их в JVM/Kotlin-модули без Android-плагинов
👉 Замена KAPT на KSP
👉 Удаление неиспользуемых зависимостей с помощью анализа от Dependency Analysis Gradle Plugin
👉 Использование нетранзитивных R-классов
👉 Базовые рекомендации от Android-команды
👉 Включение всех опций Gradle для ускорения сборки

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

#android #производительность #gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
Media is too big
VIEW IN TELEGRAM
📹 Почему вам стоит включить Gradle Configuration Cache (46 мин)

Кэширование фазы конфигурации (configuration cache, СС) — одна из самых ожидаемых и очевидных оптимизаций в процессе Gradle-сборки. Однако стабильной эта оптимизация была объявлена относительно недавно — в Gradle 8.1.

Спикер рассказал о сложностях реализации CC и о «неожиданных» улучшениях производительности, которые может принести СС в вашу сборку. Если вы сомневались, поддерживать ли CC в своих сборках, — эти инсайты помогут вам ответить утвердительно.

Чтобы снять магический ореол с реализации Gradle и воодушевить вас на возможные open source-контрибуции, слайды сопровождаются ссылками на open source кодовую базу Gradle.

🔗 Скачать презентацию с сайта Mobius

#gradle #mobius
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29