#android #jetpack #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
#jetpack #jetpackupdate #производительность #gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
#jetpack #js #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
👉 Поддержка HLS interstitials для добавления рекламных вставок в HLS-стримы. Подробности тут.
👉 Экспериментальная поддержка декодеров с предварительным прогревом. Позволяет декодировать видео заранее и сделать переключение между видео плавным.
🚀 Оптимизация производительности: системные вызовы происходят на фоновом потоке для уменьшения 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
Secure Preference - open source библиотека с оберткой над SharedPreferences c шифрованием данных
Фичи решения: полное шифрование, поддержка Coroutines FLow, простое API, автоматическое обновление, поддержка основных Android типов
Автор библиотеки есть среди подписчиков @android_broadcast и скорее всего ответит на ваши вопросы
#andorid #безопасность
Фичи решения: полное шифрование, поддержка 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:
Автоматизация запуска тестов позволяет быстро получать обратную связь и оперативно обнаруживать проблемы на ранних этапах разработки.
#тестирование
❗️Структурируйте тесты по принципу Arrange-Act-Assert:
Четкое разделение на подготовку, выполнение и проверку помогает создавать понятные и логичные тесты.
❗️Не используйте моки там, где это не нужно:
Моки — мощный инструмент для тестирования, но их неправильное использование может существенно ухудшить производительность.
❗️Пишите читаемые и поддерживаемые тесты:
Тесты должны быть самодокументируемыми, чтобы их мог понять любой разработчик, и легко адаптироваться под изменения кода.
❗️Изолируйте тесты друг от друга:
Независимость тестов гарантирует, что один тест не повлияет на результаты другого, что критично для стабильности автоматизированного тестирования.
❗️Избегайте дублирования кода:
Используйте общие фикстуры и утилиты для подготовки тестовых данных, чтобы сократить повторение и упростить поддержку.
❗️Покрывайте негативные и граничные сценарии:
Необходимо тестировать не только «счастливые» случаи, но и всевозможные ошибки и исключительные ситуации, что повышает надежность приложения.
❗️Регулярный анализ производительности:
Регулярный анализ производительности unit-тестов играет ключевую роль в нашем проекте для поддержания их эффективности и минимизации влияния на общий процесс разработки.
❗️Интегрируйте тестирование в CI/CD:
Автоматизация запуска тестов позволяет быстро получать обратную связь и оперативно обнаруживать проблемы на ранних этапах разработки.
#тестирование
👍20
Вышел scrcpy 3.2 в котором добавили новые аудиосточники и исправили работу на Android 15 и 16
#android #интсрументы
#android #интсрументы
👍27
Context, который приходит в BroadcastReceiver.onReceive() не сможет выполнить (будет выброшено исключение) следующие методы
Anonymous Quiz
21%
bindService
20%
startForegroundService
38%
startActivity
21%
Нет правильного ответа
3👍17
Forwarded from Compose Broadcast
В этой статье вы найдете:
👉 как работают layout-ы в Compose;
👉 изменение layout-а отдельного компонента;
👉 создание кастомных Layout и LazyLayout;
👉 отложенную композицию.
Всё это на примерах, в том числе из дизайн-системы Авито.
#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍47
Знали ли вы, что приложениям теперь недоступно получать список установленных приложений без специального разрешения - QUERY_ALL_PACKAGES?
Ловите статью о том, как это легко обходится реальными приложениями, опубликованными в Google Play, и у модерации магазина нет вопросов.
#android #безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍36
Для любого ускорения важно на первом этапе определить, как измерять результат, и уже потом применять улучшения.
Какие практики применялись:
👉 Включение 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
Кэширование фазы конфигурации (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
#android #rustore
Please open Telegram to view this post
VIEW IN TELEGRAM
👍47
Media is too big
VIEW IN TELEGRAM
Видео с Gradle DPE Summit про основные советы по Gradle для Android разработчиков
00:00 Introduction
00:48 About Toast
03:09 Build Growth Challenges
05:21 Reducing Build Times
06:28 Hardware Solutions
08:08 Gradle Properties
11:36 Memory Management
16:05 Dependency Handling
19:40 CI Optimization
23:35 Agent Configuration
25:38 Conclusion
#android #gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20
Чтобы добавить поддержку других платформ в Jetpack Room, необходимо было обеспечить совместимость с различными версиями SQLite, встроенными в ОС, а также с теми, которые могут подключаться отдельно. Результатом стал BundledSQLiteDriver, который позволяет использовать актуальную версию SQLite, поставляемую отдельно, и применять её на всех платформах.
В статье подробно рассматриваются особенности этого подхода к работе с SQLite в Room.
#kotlin #kmp #android #jetpack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
🔥 В поисках Senior Mobile App Developer
Стек: Kotlin, Swift
Формат работы: удаленка (работа из РФ и Беларуси невозможна)
Требование: опыт работы от 5 лет, English B1+
💡 Вы будете играть решающую роль в разработке и поддержке мобильных приложений на платформах Android и iOS, уделяя особое внимание интеграции веб-контента через WebView и работе с различными SDK сторонних разработчиков.
👉 Подробнее о вакансии по ссылке
❗️ Для отклика на вакансию пишите @Irina_HRD с указанием от Android Broadcast
#вакансия
Стек: Kotlin, Swift
Формат работы: удаленка (работа из РФ и Беларуси невозможна)
Требование: опыт работы от 5 лет, English B1+
💡 Вы будете играть решающую роль в разработке и поддержке мобильных приложений на платформах Android и iOS, уделяя особое внимание интеграции веб-контента через WebView и работе с различными SDK сторонних разработчиков.
👉 Подробнее о вакансии по ссылке
❗️ Для отклика на вакансию пишите @Irina_HRD с указанием от Android Broadcast
#вакансия
👍11
Forwarded from Kotlin Multiplatform Broadcast
В Kotlin 2.1.20 несовместим со свежей версий XCode, поддержка будет в Kotlin 2.1.21. Отложите обновление!
#kotlin #kmp #xcode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33