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
‼️ Срочно выключите эту настройку в IDE от JetBrains

Бесплатные IDE от JetBrains будут шарить код с компанией по умолчанию (источник - офиц. блог JetBrains) для обучения ИИ. Шаринг можно будет отключить в настройках.

Чтобы отключить шаринг данных идите в настройки IDE, затем Appearance & Behavior » System Settings » Data Sharing.

В Android Studio Narwhal этой галочки нету, но следите за будущими версиями.

Интересно, если я в России или Беларуси, то мой кода подойдет для отправки по сети или JB посчитает его неподходящим для обучения AI? Плагины же качать нельзя

#jetbrains #androidstudio #ai
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯51👍7🆒32🔥2🤝2
Media is too big
VIEW IN TELEGRAM
🛒 Как можно следить за потреблением заряда батареи в Android Vitals

В Google Play Console в разделе "Vitals" можно отследить как расходуется заряд батареи приложением, особенно в случаях ненужных захватов Wake Lock. Вы нашли что-то интересное для себя в этом разделе ?

Wake Lock — это «костыль», который не дает телефону уснуть. Разработчик может повесить блокировку, чтобы не дать выключится экрану или процессору


📹 Видео версия (EN, 21м)

#android #googleplay
Please open Telegram to view this post
VIEW IN TELEGRAM
👍76
⚠️ Работа с зависимостями в Gradle таит множество подводных камней:
- Откуда берётся зависимость?
- Какие транзитивные зависимости подтянутся вместе с ней?
- Как убедиться, что скачался именно тот артефакт, который вы ожидали?

Чтобы сборка была стабильной, безопасной и быстрой, стоит придерживаться ряда практик 👇

1️⃣ Используйте единый источник зависимостей

В больших компаниях принято разворачивать свой Nexus / Artifactory. Он проксирует остальные репозитории (MavenCentral, Google и др.), и для проекта остаётся один источник правды.

Это ускоряет сборку (репозиторий ближе и быстрее), а также защищает от случайного скачивания библиотек «из непонятного интернета».

2️⃣ Ограничивайте содержимое репозиториев

При подключении нескольких репозиториев стоит явно ограничить группы пакетов, которые могут из них подтягиваться.

Например, для Google Maven:

// settings.gradle.kts
dependencyResolutionManagement {
repositories {
google {
mavenContent {
includeGroupAndSubgroups("androidx")
includeGroupAndSubgroups("com.android")
includeGroupAndSubgroups("com.google")
includeGroupAndSubgroups("org.chromium.net")
includeGroupAndSubgroups("com.crashlytics.sdk")
}
}
mavenCentral()
}
}


Так вы избежите ненужных запросов в «левые» репозитории.

3️⃣ Проверяйте скачанные артефакты

Gradle поддерживает dependency verification. Это позволяет проверить контрольные суммы загружаемых артефактов и защититься от подмены.

📖 Документация: Dependency Verification

Пример gradle/verification-metadata.xml:
<verification-metadata>
<configuration>
<verify-metadata>true</verify-metadata>
<verify-signatures>false</verify-signatures>
</configuration>

<components>
<component group="org.apache.pdfbox" name="pdfbox" version="2.0.17">
<artifact name="pdfbox-2.0.17.jar">
<sha512 value="..." />
</artifact>
</component>
</components>
</verification-metadata>


4️⃣ Ограничивайте транзитивные зависимости

Любая библиотека подтягивает за собой десятки других. Чтобы не получить неожиданное поведение или небезопасные версии — используйте constraints:
dependencies {
implementation("org.apache.httpcomponents:httpclient")

constraints {
implementation("org.apache.httpcomponents:httpclient:4.5.3") {
because("previous versions have a critical bug")
}
implementation("commons-codec:commons-codec:1.11") {
because("version 1.9 pulled from httpclient has issues")
}
}
}


А если нужно зафиксировать версии жёстко:
configurations.all {
resolutionStrategy {
force("org.example:lib:1.2.3")
// Есть много других возможностей
}
}


5️⃣ Анализируйте дерево зависимостей

Чтобы понять, кто и что тянет, используйте:
./gradlew dependencies
./gradlew dependencyInsight --dependency okhttp --configuration releaseRuntimeClasspath


Это поможет отловить дубликаты и неожиданные версии.


6️⃣ Автоматизируйте обновления

Поддерживайте проект в актуальном состоянии:
🔄 используйте Gradle Versions Plugin, чтобы проверять обновления библиотек.
📝 заведите политику обновлений (например, обновлять минорные версии раз в месяц, а мажорные — отдельно и осознанно).

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

#gradle #лучшиепрактики
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7314🔥4🤯2
🔥 Вышел JUnit 6 с поддержкой Kotlin

Прошло более 8 лет с релиза JUnit 5 (10 сентября 2017 года) и вот новая мажорная версия популярного фреймворка для написания Unit тестов в Java

Ключевые изменения в новой версии:
👉 Поддержка Java 17 и Kotlin 2.2+
👉 Переход на аннотации JSpecify
🏝 Поддержка корутин из Kotlin
👉 Поддержка Java Flight Recorder (JFR) из коробки
👉 Поддержка отмены выполнения теста
👉 Удалено deprecated API
👉 --fail-fast режим для запуска тестов из терминала

#тестирование #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥50👍10🤯3
🔥 Как ускорить запуск приложения - вынести инициализацию Firebase из Main потока в Application.onCreate() и запустите его на фоновом потоке. Профит на графике. Источник - блог @nek_12_personal

#firebase #android #performance
Please open Telegram to view this post
VIEW IN TELEGRAM
36👍17🔥11🤔4
В программировании есть 2 нерешаемые задачи: выбор имён и когда сбрасывать кэш

Phil Karlton

Какие еще задачи знаете вы? Делитесь в комментариях 🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥73🤯2🤔1
🚀 Ускорения запуска приложения со Splash скрин за счет использования прозрачной Activity.

По умолчанию все Activity в Android являются непрозрачными и перекрывают Activity под ними, что приводит к остановке их работы. Автор статьи решил сделать иначе и запускается MainActivity, а поверх SplashActivity. Это позволяет продолжать работать MainActivity и прогреть код в ней.

Подробности в статье (EN,9м)

#android #производительность
👍36🤔94🤯2
📹 Как проходит собеседование на позицию Android разработчика в Wildberries

Александр Гирев, разработчик из Wildberries, провел собеседование на канале, так как оно происходит для всех кандидатов в компанию. Несколько секций, разные темы и много полезной инфы! Смотреть до конца.

📹 Также смотрите на VK Video

🔈 ХОТИТЕ ПОПАСТЬ НА собеседование KMP разработчика - уже открыт прием заявок! Заполняйте тут

#AndroidBroadcast #собес
Please open Telegram to view this post
VIEW IN TELEGRAM
28👍19🔥6🤔1
🤖 Если вы искали альтернативу Dagger/Hilt, но с поддержкой Kotlin Multiplatform, то как раз вышла свежая версия Koin Annotations, которая значительно упрощает миграцию!

#dagger #hilt #koin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍64
‼️ ИЩУ КАНДИДАТА! Собеседование на Kotlin Multiplatform разработчика

Алексей Панов @kotlin_adept , опытный мобильный разработчик, реализующий приложения с применением KMP, проведет собеседование на позицию Kotlin Multiplatform разработчика в прямом эфире на YouTube канале "Android Broadcast" (время и дата будут объявлены позже)

Требования к кандидату:
👉 Опыт в мобильной разработки
👉 Опыт с Kotlin
👉 Понимание как происходит разработка приложений с KMP

Будет теория и практика. Это ваш шанс проявить себя и заявить на большую аудиторию о своих возможностях!

Если решили принять участие - заполняйте анкету!

#AndroidBroadcast
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍42🆒1
🤖 Статья (5м) в формате расследования как происходит остановка приложения из-за крэша и где возникает это.

Из статьи узнаете про:
👉 UncaughtExceptionHandler
👉 ActivityThread
👉 Как происходит остановка процесса

#android #подкапотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🔨 Вышел четвертый эпизод Android Studio Narwhal Feature Drop

Из нового и важного - поддержка создания декларативных циферблатов часов (без кода, только XML править)

#androidstudio #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍4
This media is not supported in your browser
VIEW IN TELEGRAM
🔨 Вот так теперь разрабатываются циферблаты под WearOS и никак иначе. Старый формат отключили в WearOS 5

#wearos #android #androidstudio
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍73🤯3
‼️ Дуров нас предупреждал - стала доступна betа версия API для проверки возраста из-за новых требований в отдельных штатах США

Google Play Age Signals API позволяет получить "сигналы" касательно возраста пользователя и дальнейшей реакцией приложения на полученную информацию

Новое API вызвано требованием обязательной проверки магазином возраста пользователя с 1 января 2026 в штате Техас

#googleplay
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯38👍8🤔81
🛒 Пример использования Google Play Age Signals API (beta)

// Создаем экземпляр менеджера
val ageSignalsManager = AgeSignalsManagerFactory.create(
ApplicationProvider.getApplicationContext()
)

// Запрашиваем проверку возрастных сигналов
ageSignalsManager
.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener { ageSignalsResult ->
// Сохраняем installId для дальнейшего использования
val installId = ageSignalsResult.installId()

when (ageSignalsResult.userStatus()) {
AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED -> {
// Пользовтаелю меньше 18 лет и родитель запретил доступ
}
AgeSignalsVerificationStatus.VERIFIED -> {
// Пользователю больше 18 лет
}
else -> {
// Обрабатываем другие статусы
}
}
}


#googleplay
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🤔8🤯5
🤖 Скрытые угрозы Room: почему база тормозит и как это исправить

Важные советы всем кто используют Room, чтобы база работала быстро:
👉 Индексы — ваши лучшие друзья: без них запросы деградируют до O(n)
👉 Транзакции важны: SQLite разработан для эффективной пакетной обработки
👉 Разбиение на страницы крайне важно: никогда не пытайтесь одновременно обрабатывать тысячи строк
👉 Режим Write-Ahead Logging (WAL) критически важен, особенно для параллельных операций чтения и записи
👉 Настраивайте схему БД для практической производительности, а не только для академической нормализации

Больше полезных советов в статье

#android #room #sqlite
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍13🤯21
Статья с громким названием "Динамические обновления без релизов и BDUI". "Ну вот она инновация", осторожно подумал я перед прочтением

Да, ребята не используются подход BDUI, но фактически вся динамика работает на JS. Как мне показалось, получился некий аналог ReactNative, но специфичный под задачи приложения.

Даже не знаю, лучше или хуже будет BDUI, но можно ли сильно оптимизировать выполнение JS?. JavaScript еще и однопоточный и требует работы между виртуальной машиной для выполнения Java кода и JS

#android #bdui #kmp
👍17🤯115🤔1🤝1
🔒 Почему шифрование данных на Android — это не просто “галочка” в настройках, а реальная защита вашей информации (RU,13м)

Телефон сегодня — это не просто устройство, а личный сейф с фотографиями, паролями, документами и банковскими данными. И если кто-то получит к нему доступ, последствия могут быть непредсказуемыми.

В статье на Хабре я подробно рассказываю:
👉 как работает шифрование данных на Android;
👉 чем отличаются симметричные и асимметричные алгоритмы;
👉 какие инструменты реально применяются в приложениях — Cipher, SQLCipher и Android Keystore;
👉 почему офлайн-режим может стать дополнительным уровнем безопасности;
👉 и при чём тут ГОСТ-шифрование 👀

Классная статья для тех кто не копался в шифрование и хочет в это погрузиться хотя бы на базовом уровне

#android #безопасность
👍327🔥2🤔1🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
🔨 Написание UI тестов на обычном языке без кода уже доступно в Android Studio Otter. Фича называется - Journeys. Работает на основе ⭐️ Gemini AI

#androidstudio #android #ai #gemini #тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
30🤯21🔥9👍5
Media is too big
VIEW IN TELEGRAM
📹 Android Developers Backstage — Journeys в Android Studio

Команда Android обсуждает Journeys для Android Studio — новый инструмент на базе Gemini, который упрощает создание и поддержку end-to-end тестов.
Journeys позволяет описывать тесты на естественном языке, а ИИ сам преобразует шаги и проверки в реальные действия в вашем приложении.

⏱️ Главные моменты выпуска:
0:00 Введение
1:46 Journeys: новый подход к тестированию на базе ИИ
3:40 Как Journeys работает с Gemini
4:27 Преимущества естественного языка
5:49 Пример из реального проекта: Google Maps
6:53 Отладка с использованием ИИ
8:08 Почему Journeys важен: мост между ручным и автотестированием
9:56 End-to-End тесты с Journeys
12:18 Производительность и кеширование тестов
24:14 Интеграция с Android Studio и Firebase
25:27 Рабочий процесс разработки
31:22 ИИ для всех: не только end-to-end тесты
33:28 Что дальше: обратная связь и планы на будущее

#android #androidstudio #gemini #ai #тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍52