This media is not supported in your browser
VIEW IN TELEGRAM
App Sizer - Gradle и CLI инструмент для анализа размера Android приложений. Исходный код открыт, а сам инструмент бесплатный
#инструменты
#инструменты
👍29 2
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
Функцию могут оценить пользователи 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
👍22❤2
🚀 Ускорение загрузки Koin при запуске Android приложения (EN,8м)
В Koin 4 добавили интеграцию с Jetpack Startup для запуска инициализации Koin
и доступна инициализация фича модулей
Также показывается отложення загрузка модулей с помощью корутин
Подробнее про ленивые модули и фоновую загрузку в документации
#android #koin #di #jetpack #производительность #coroutines #AndroidBroadcast #БазаЗнаний
В 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🔥8 3❤2
🚀 Duolingo ускорили время сборки на CI c 50 до 16 минут
В первую очередь ребята пошли самым простым путем - прокачали железо на CI, что дало основной прирост.
Затем произвели оптимизацию запуска задач на CI, что эффективнее использовать общие ресурсы.
Максимально настроили кэш, чтобы не выполнять одну и ту же работу между сборками.
В коде отказались от старых технологий и лишнего груза на сборку. Например, KAPT поменяли на KSP
Читая статью, сложилось впечатление что ребята сделали самую базу и долго терпели как у них было всё плохо.
#android #ios #ci #производительность
В первую очередь ребята пошли самым простым путем - прокачали железо на CI, что дало основной прирост.
Затем произвели оптимизацию запуска задач на CI, что эффективнее использовать общие ресурсы.
Максимально настроили кэш, чтобы не выполнять одну и ту же работу между сборками.
В коде отказались от старых технологий и лишнего груза на сборку. Например, KAPT поменяли на KSP
Читая статью, сложилось впечатление что ребята сделали самую базу и долго терпели как у них было всё плохо.
#android #ios #ci #производительность
👍39🔥9🤯3 2
VK представила OpenVK, где будут собраны все проекты компании с открытым исходным кодом. Сам же код располагается на GitHub и других публичных площадках.
Уже опубликованы:
👉 ByteWeaver - инструмент для патчинга JVM байт-кода Android-приложений во время сборки. Используется в Tracer
👉 DeviceHub - система удаленного управления Android-устройствами, которые используются для тестирования и разработки приложений
👉 VKUI — дизайн-система на React для создания интерфейсов
Среди ML-разработок — модель Sentence Encoders которая строит специальные векторные представления по тексту и служит базой для многих внутренних задач. Сейчас она находится в топе ru-MTEB, а число скачиваний доходит до 100 000 в месяц.
Источник тут
#opensource #vk
Уже опубликованы:
👉 ByteWeaver - инструмент для патчинга JVM байт-кода Android-приложений во время сборки. Используется в Tracer
👉 DeviceHub - система удаленного управления Android-устройствами, которые используются для тестирования и разработки приложений
👉 VKUI — дизайн-система на React для создания интерфейсов
Среди ML-разработок — модель Sentence Encoders которая строит специальные векторные представления по тексту и служит базой для многих внутренних задач. Сейчас она находится в топе ru-MTEB, а число скачиваний доходит до 100 000 в месяц.
Источник тут
#opensource #vk
👍26🤯8🔥4
Как правильно работать с MutableStateFlow внутри ViewModel и из вне
Если вы пишите под Android и используете MVVM и корутины, то у вас будет подобный код
По всем рекомендациям мы не должны давать наружу изменяемое состояние и все изменения должны делать только через методы. Самый простой вариант - указание отдельного публичного типа.
Каждое обращение к свойства state будет приводить к созданию новому экземпляру
Больше подобных моих материалов и подборка интересных статей, книг, видео есть в Базе Знаний Android разработчика
#android #kotlin #coroutines #jetpack #viewmodel #AndroidBroadcast #БазаЗнаний
Если вы пишите под 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 #БазаЗнаний
👍71 13🤯5❤1
Стала доступна запись моего доклада с Mobius где я рассказал про проблему монополии мобильных сервисов и предложил своё решение для светлого будущего новых мобильных ОС
#mobius
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍9
Forwarded from AvitoTech
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
«Как поздравить наших подписчиков с Новым годом?»
Этим вопросом мы задались еще в ноябре. «Крутили» с командой разные идеи, но одна вдохновила больше всех — сделать адвент-календарь для тех, кто создает продукты и сервисы. И вот, мы выкатываем его в прод!
В календаре собрали некоторые принципы из нашего Playbook, в котором прописаны правила инженерной команды Авито. Их легко адаптировать под свои рабочие задачи, а некоторые можно даже переложить на ежедневную рутину.
Тапайте на ячейки, забирайте нужное, улучшайте разработку и инженерную культуру вместе с нами.
Поздравляем с наступающим Новым годом✨
Этим вопросом мы задались еще в ноябре. «Крутили» с командой разные идеи, но одна вдохновила больше всех — сделать адвент-календарь для тех, кто создает продукты и сервисы. И вот, мы выкатываем его в прод!
В календаре собрали некоторые принципы из нашего Playbook, в котором прописаны правила инженерной команды Авито. Их легко адаптировать под свои рабочие задачи, а некоторые можно даже переложить на ежедневную рутину.
Тапайте на ячейки, забирайте нужное, улучшайте разработку и инженерную культуру вместе с нами.
Поздравляем с наступающим Новым годом
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍5
В прямом эфире буду подводить итоги 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
Остальных победителей смотрите в статье
#googleplay
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Оптимизация под контролем: инструменты и метрики для Аndroid-приложений (11м)
В статье рассказывается про оптимизацию времени запуска Android-приложения, разбираются основные метрики старта и инструменты, с помощью которых можно анализировать производительность.
#android #производительность
В статье рассказывается про оптимизацию времени запуска Android-приложения, разбираются основные метрики старта и инструменты, с помощью которых можно анализировать производительность.
#android #производительность
👍17
Пример разработки плагина для Android Studio (10м)
Подробное руководство от создания проекта до публикации в магазин JetBrains. Автор показывает всё на примере проверки грамотности в сообщениях к коммитам в Git. Результат - плагин PreCommitSpellChecker
#androidstudio
Подробное руководство от создания проекта до публикации в магазин JetBrains. Автор показывает всё на примере проверки грамотности в сообщениях к коммитам в Git. Результат - плагин PreCommitSpellChecker
#androidstudio
👍18❤2🤯1🎉1