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
This media is not supported in your browser
VIEW IN TELEGRAM
App Sizer - Gradle и CLI инструмент для анализа размера Android приложений. Исходный код открыт, а сам инструмент бесплатный

#инструменты
👍292
This media is not supported in your browser
VIEW IN TELEGRAM
Instagram на Android добавила съёмку в Ночном Режиме

Функцию могут оценить пользователи Google Pixel 6 и выше, Galaxy S24 Ultra, Flip и Fold 6 поколения. Обещают поддержки большего количества устройств. Реализовали её на основе Jetpack CameraX, но также можно сделать и через Camera 2 API из Android SDK.

#android #camerax
👍17
Media is too big
VIEW IN TELEGRAM
📹 Очевидные и неочевидные дыры безопасности в мобильной разработке. Максим Плахута

Аудит Google нагрянул внезапно (как снег в Москве), и команде Яндекс 360 пришлось очень оперативно доказать, что Почта безопасна (и срочно исправить, если вдруг не совсем).

Проверку прошли успешно, и деляться своим опытом. В процессе поняли, как делать не надо, и как можно улучшить процесс разработки (например, на что обращать внимание на ревью).

Презентация – https://disk.yandex.ru/i/vv1l7tEIeq6TIA

#android #яндекс #codefest #безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍222
🚀 Ускорение загрузки Koin при запуске Android приложения (EN,8м)

В Koin 4 добавили интеграцию с Jetpack Startup для запуска инициализации Koin

class MainApplication : Application(), KoinStartup {

override fun onKoinStartup(): KoinAppDeclaration = {
androidContext(this@MainApplication)
allowOverride(false)
modules(AppModule().module)
defaultModule()
}
}


и доступна инициализация фича модулей

// Initializer из Jetpack Startup
class FirstModuleInitializer : Initializer<Unit> {
override fun create(context: Context) {
loadKoinModules(firstModule)
}

override fun dependencies() =
mutableListOf(KoinInitializer::class.java)
}


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

val m1 = lazyModule {
singleOf(::ClassA) { bind<IClassA>() }
}

startKoin {
// загрузка модулей в фоне с помощью Kotlin Coroutines
lazyModules(m1)
}

val koin = KoinPlatform.getKoin()

// Ожидания выполнения задач загрузки модулей
koin.waitAllStartJobs()

// или ставим в очередь лямбду на выполнение после
koin.runOnKoinStarted { koin ->
// Код выполнится после загрузки lazy modules
}


Подробнее про ленивые модули и фоновую загрузку в документации

#android #koin #di #jetpack #производительность #coroutines #AndroidBroadcast #БазаЗнаний
1👍27🔥832
🚀 Duolingo ускорили время сборки на CI c 50 до 16 минут

В первую очередь ребята пошли самым простым путем - прокачали железо на CI, что дало основной прирост.

Затем произвели оптимизацию запуска задач на CI, что эффективнее использовать общие ресурсы.

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

В коде отказались от старых технологий и лишнего груза на сборку. Например, KAPT поменяли на KSP

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

#android #ios #ci #производительность
👍39🔥9🤯32
VK представила OpenVK, где будут собраны все проекты компании с открытым исходным кодом. Сам же код располагается на GitHub и других публичных площадках.

Уже опубликованы:
👉 ByteWeaver - инструмент для патчинга JVM байт-кода Android-приложений во время сборки. Используется в Tracer
👉 DeviceHub - система удаленного управления Android-устройствами, которые используются для тестирования и разработки приложений
👉 VKUI — дизайн-система на React для создания интерфейсов

Среди ML-разработок — модель Sentence Encoders которая строит специальные векторные представления по тексту и служит базой для многих внутренних задач. Сейчас она находится в топе ru-MTEB, а число скачиваний доходит до 100 000 в месяц.

Источник тут

#opensource #vk
👍26🤯8🔥4
Как правильно работать с MutableStateFlow внутри ViewModel и из вне

Если вы пишите под Android и используете MVVM и корутины, то у вас будет подобный код

class YourViewModel() : ViewModel() {
val state = MutableStateFlow<State>(State.Initial)
}


По всем рекомендациям мы не должны давать наружу изменяемое состояние и все изменения должны делать только через методы. Самый простой вариант - указание отдельного публичного типа.

class YourViewModel() : ViewModel() {
private val _state = MutableStateFlow<State>(State.Initial)

val state: StateFlow<State>
get() = _state
}


В Kotlin есть возможность указать разного типа для свойства и его field, но пока доступна только как экспериментальная. Использовать её в продакшен коде на текущем этапе жизни не рекомендуется
С таким подходом мы закрыли через приведение типа на уровне свойства. Авторы Kotlin Coroutines позаботились о нас и сделали нашу жизнь проще с помощью функции asStateFlow(), который под капотом обернет MutableStateFlow в ReadonlyStateFlow и вернёт его как StateFlow. Применяя оператор мы получим следующий код:

class YourViewModel() : ViewModel() {
private val _state = MutableStateFlow<State>(State.Initial)

val state: StateFlow<State>
get() = _state.asStateFlow()
}


Каждое обращение к свойства state будет приводить к созданию новому экземпляру StateFlow, что является лишним, так как один StateFlow может иметь несколько коллекторов (подписчиков) на данные и никак не повлияет на работу, то можно сразу задавать свойство безе перегрузки get()

class YourViewModel() : ViewModel() {
private val _state = MutableStateFlow<State>(State.Initial)

// Создаем StateFlow, предназначенный для получения
// состояния из вне ViewModel
val state = _state.asStateFlow()
}


Больше подобных моих материалов и подборка интересных статей, книг, видео есть в
Базе Знаний Android разработчика

#android #kotlin #coroutines #jetpack #viewmodel #AndroidBroadcast #БазаЗнаний
👍7113🤯51
📹 Что не так с мобильными сервисами в Android и iOS. Кирилл Розов. Mobius Осень 2024

Стала доступна запись моего доклада с Mobius где я рассказал про проблему монополии мобильных сервисов и предложил своё решение для светлого будущего новых мобильных ОС

#mobius
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍9
Forwarded from AvitoTech
«Как поздравить наших подписчиков с Новым годом?»

Этим вопросом мы задались еще в ноябре. «Крутили» с командой разные идеи, но одна вдохновила больше всех — сделать адвент-календарь для тех, кто создает продукты и сервисы. И вот, мы выкатываем его в прод!

В календаре собрали некоторые принципы из нашего Playbook, в котором прописаны правила инженерной команды Авито. Их легко адаптировать под свои рабочие задачи, а некоторые можно даже переложить на ежедневную рутину.

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

Поздравляем с наступающим Новым годом
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍5
🔴 Начался прямой эфир с подведением итогов 2024 года

В прямом эфире буду подводить итоги 2024: Android, Kotlin, блог

Конечно же отвечу на ваши вопросы по тебе разработки и не только

Запись будет доступа на каналах после эфира

Подключайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
Google Play объявила лучшие приложения и игры 2024 года
🏆Лучшее приложения - планировщик событий Partiful
🏆 Лучшая игра - AFK Journey
🏆 Лучшее приложение для разных устройств - онлайн-кинотеатр Max
🏆 Лучшая играя для разных устройств - Clash of Clans

Остальных победителей смотрите в статье

#googleplay
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Оптимизация под контролем: инструменты и метрики для Аndroid-приложений (11м)

В статье рассказывается про оптимизацию времени запуска Android-приложения, разбираются основные метрики старта и инструменты, с помощью которых можно анализировать производительность.

#android #производительность
👍17
Пример разработки плагина для Android Studio (10м)

Подробное руководство от создания проекта до публикации в магазин JetBrains. Автор показывает всё на примере проверки грамотности в сообщениях к коммитам в Git. Результат - плагин PreCommitSpellChecker

#androidstudio
👍182🤯1🎉1