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
Вышел Coil 3.1.0 - популярный загрузчик картинок с поддержкой KMP

👉 Улучшили производительность AsyncImage: скорость работы стала лучше на 25-40%, а потребление памяти - на 35-48%
👉 FakeImage теперь deprecated
👉 Появился ColorImage - полезен для возвращения фейковых значений в тестах и для Compose превью
👉 coil-compose-core больше не зависит от Dispatchers.Main.immedate, что позволило исправить баги в работе Paparazzi и Roborazzi
🛠 Множество других исправлений и улучшений API

#kmp #android #compose
🔥48👍8
Коротко описал ключевые изменения в ViewBindingPropertyDelegate 2.0 через статью (EN,3м) и вот альтернативная ссылка

#android #viewbinding
👍154🔥3
🤯 Не нужно делать инжект всех зависимостей в конструктор

Встретил код в проекте:
class MyViewModel(
...
private val sendDataUseCase: SendDataUseCase,
...
): ViewModel() {

// Вызывается, когда пользователь в UI нажмёт на "Send"
fun onSendClicked(...) {
viewModelScope.launch {
sendDataUseCase.invoke(...) // либо sendDataUseCase(...)
}
}
}


sendDataUseCase не нужен сразу при создании объекта, а нужен только если пользователь нажмёт на кнопку "Send" в UI, что может и не произойти. Так как эта зависимость нужна в конструкторе, то при получении в DI будет сразу происходить создание этой зависимости, что приводит к ненужной нагрузке.

Я рекомендую делать отложенное получение зависимостей с помощью механизма Provider или Lazy. Первый будет ходить за зависимостью в граф каждый раз, а второй - при первом обращении и сохранит её.
// При использовании Dagger или Hilt
class MyViewModel(
...
private val sendDataUseCase: javax.inject.Provider<SendDataUseCase>, // или dagger.Lazy
...
): ViewModel() {

fun onSendClicked(...) {
viewModelScope.launch {
sendDataUseCase.get()
.invoke(...)
}
}
}


Если вы используете Koin на момент написания поста (актуальная версия 4.0), делать отложенный инжект в конструктор возможности нет:
// При использовании Koin
class MyViewModel(): ViewModel() {

// отложенное получение зависимости в Koin
private val sendDataUseCase: SendDataUseCase by inject()

fun onSendClicked(...) {
viewModelScope.launch {
// аналог Provider - получение зависимости каждый раз из графа
val sendDataUseCase: SendDataUseCase = getKoin().get()
sendDataUseCase.invoke(...)
}
}
}


Результат оптимизации
более быстрый старт экранов (зависит от сложности графов)
уменьшение расхода памяти
KOIN потеря явной зависимости в конструкторе. Мне бы очень хотелось увидеть аналог Provider и Lazy в Koin через конструктор, но пока приходится делать свои обертки 😔

#dagger #di #лучшиепрактики
🔥65👍214
🏆 Хотите чтобы я провел анализ вашего проекта и дал подробный отчет? Делаю ревью проектов для компаний так и по персональным запросом с различным уровнем подробности. Пишите мне в личку @kirill_broadcast с подробностями вашего запроса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🎉6🤯3👏1
Согласитесь на снижение зарплаты на 25%, но рабочая неделя станет 4 дня, а не 5 ?
Anonymous Poll
18%
Да
68%
Нет
8%
На других условиях (пишите в комментариях)
1%
Не работаю в найме
5%
Не участвую в опросе
7👍3
Forwarded from AvitoTech
This media is not supported in your browser
VIEW IN TELEGRAM
Тимлиды, техлиды и все те, кто руководит IT-командами, — ждём вас на Avito TeamLead Drinkup #3⚡️

Поэтому скорее бронируйте в календарях вечер 26 февраля. Встретимся в неформальной обстановке, понетворкаем и обсудим:
— взлом интервью и накрутку опыта у кандидатов;
— ИИ в процессе разработки и управлении командой;
— как смириться с тем, что ты не самый сильный по хардам, и начать жить;
— OKR, планирование и стратегия.

И другие темы, которые «болят» или, наоборот, радуют каждого тимлида. Не забудьте зарегистрироваться и отправить этот пост коллегам (за это + в управленческую карму).

🗂Avito TeamLead Drinkup #3, 26 февраля, Москва.

#management_avitotech
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥71
This media is not supported in your browser
VIEW IN TELEGRAM
В Android Studio вскоре будет новый терминал. Там появится подсветка и автодополнение. Пока можно попробовать, но когда-то он останется единственным доступным.

Ряды тех, кто ностальгирует по старому UI в IDEA/Android Studio, прибавилось 😁

#androidstudio
🔥36👍123
Что самое сложное в собеседовании для разработчиков?

Это не задачи на алгоритмы и не вопросы про фреймворки. Самое сложное — понять, чего от вас ждут.

Я решил помочь разобраться в этом и собрал плейлист с МОК собеседованиями.

Здесь вы найдете:
🔍 Разборы задач с объяснением логики
💡 Советы, как показать свои сильные стороны
🚀 Примеры вопросов, которые задают в топовых компаниях
👉 Посмотреть плейлист можно на YouTube 📹 и VK Video 📹

Какой вопрос на собеседовании поставил вас в тупик? Делитесь в комментариях!

#AndroidBroadcast #собес
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥367👍2
Если вы хотите провести собеседование, чтобы показать как оно устроено в вашей компании, а может наоборот устроить душное невыносимое собеседование - пишите @kirill_broadcast. Найду подходящего кандидата для вас!
🤯185👍4
Chrome на Android получит поддержку сторонних менеджеров паролей

Ранее стало известно, что в Beta-версии все менеджеры паролей для Android начнут работать с Chrome. Google на основе обратной связи добавила полезные возможности:

1️⃣ Узнать любому приложению, используется ли в Chrome сторонний менеджер паролей

2️⃣ Добавили Deep Link для открытия настройки выбора сервиса автозаполнения в Chrome
val autofillSettingsIntent = Intent(Intent.ACTION_APPLICATION_PREFERENCES).apply {
addCategory(Intent.CATEGORY_DEFAULT)
addCategory(Intent.CATEGORY_APP_BROWSER)
addCategory(Intent.CATEGORY_PREFERENCE)
}

val chooser = Intent.createChooser(autofillSettingsIntent, "Pick Chrome Channel")
startActivity(chooser)


Chrome 135 выйдет в релиз 1 апреля 2025

#android #autofill #chrome
Please open Telegram to view this post
VIEW IN TELEGRAM
👏17👍4🤯3🎉3
Waydroid - решение на основе контейнеров для запуска Android приложения в GNU/Linux системах, используй Wayland

Если любите Linux, то Waydroid даст вам возможность запуска Android приложений и сделать их интеграцию в систему как нативные приложения.

#linux
👍293
Руководитель отдела "Platforms & Devices" объявил о программе добровольного выхода для сотрудников группы из США. Новое подразделение было создано в результате объединения Android, ChromeOS и отдела разработки устройств Pixel.

Заявление:
Команда Platforms & Devices предлагает программу добровольного выхода, которая предоставляет работающим в этой команде сотрудникам Google из США возможность добровольно покинуть компанию с выходным пособием. Это произошло после объединения двух крупных организаций в прошлом году. В этой команде наблюдается огромный импульс, и учитывая множество важной работы впереди, мы хотим, чтобы каждый был глубоко предан нашей миссии и сосредоточен на создании отличных продуктов быстро и эффективно.


Не веришь в светлую миссию - уходи с выходным пособием

Источник 9TO5Google

#google
👍112
2.3 миллиона приложений не опубликовали в Google Play в 2024, а 1.3 миллиона приложениям отказали в запросе разрешений для доступа к конфиденциальным данным пользователей (необоснованные разрешения приложений)

Google Play подвела итоги защиты разработчиков и пользователей за 2024. Вот основные факты:

🤔 Google постоянно предотвращает публикацию в Google Play приложений, нарущаюших политику магазина, и удалила 158 тыс аккаунтов разработчиков, пытающихся публиковать вредоносные приложения.

⭐️ Google много инвестируют в ИИ для ускорения проверки и 92% вредоносных приложений проверяется им.

🤖 91% установок всех приложений в Google Play Store используют возможности защиты Android 13 или более поздней версии. (хотя уже скоро релизнется Android 16 😂)

🚀 Приложения, использующие Google Play Integrity API, в среднем на 80% реже используются из непроверенных и ненадежных источников.

🔍 Google Play Protect ежедневно сканирует более 200 миллиардов приложений

В 2024 году сканирование в режиме реального времени Google Play Protect выявило более 13 миллионов новых вредоносных приложений, установленных не из Google Play

🤯 Было предотвращено более 36 миллионов попыток установок приложения не из Google Play в рамках пилотной программы по определению фрода в 9 странах.

#googleplay #безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🤯5🔥32
FFShare - Android-приложение с открытым исходны кодом для сжатия картинок, видео и аудио файлов с помощью ffmpeg

#android #пример #opensource #fdroid
👍22
Streamflix - приложение-кинотеатр с открытым исходным кодов для Android смартфонов, планшетов и Android TV для просмотра фильмов и ТВ шоу. Для видео используется ExoPlayer из Jetpack Media 3

#android #пример #opensource #androidtv #медиа
🔥23👍32
🐱 Buckwheat (на русском звучит "Гречка") - это приложение с открытым исходным кодом, которое помогает вам тратить деньги разумно. Запись каждой статьи расходов приводит вас в чувства и дает представление о том, сколько и как вы можете потратить.

Стек технологий: Jetpack Compose, KotlinX Coroutines, Room, Dagger + Hilt, Coil

🛒 Вы можете установить приложение из Google Play

#android #opensource #пример #fdroid #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍395🤯2
‼️ Защита от атак на приложения через изменение AndroidManifest

При сборке APK финальный AndroidManifest формируется из нескольких источников:
👉 AndroidManifest всех модулей в коде вашего приложения
👉 AndroidManifest из подключённых AAR-зависимостей
👉 Изменения через Android Gradle Plugin (например, подстановка параметров и указание namespace)
👉 Сторонние Gradle-плагины, модифицирующие манифест через AGP

В результате итоговый AndroidManifest представляет собой комбинацию множества частей. Подробнее о процессе его объединения я рассказывал в этом 📹 видео.

🔒 Как защититься от скрытых изменений манифеста?

Рекомендую автоматизировать проверку с помощью Gradle-плагина manifest-guard.

Плагин позволяет сохранить эталонный AndroidManifest и автоматически проверять его при сборке проекта.
Можно настроить запуск проверки на CI: если манифест изменился, сборка упадёт, а вы получите HTML-отчёт с разницей между эталоном и текущей версией.

#android #безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍47🤯8