Android Live 🤖
Відкрити в Telegram
Самые свежие новости, новинки и тренды Android от практикующего разработчика. Автор: @al_gorshkov, Чат: @android_live_chat Личный блог: @al_gorshkov_blog Рекламу не размещаю
Показати більше5 158
Підписники
-224 години
+17 днів
-1030 день
Архів дописів
5 158
Конференция по мобильной разработке Mobius ищет спикеров 🎙
Если вы давно хотите рассказать о чем-то из мира мобильной разработки и готовы поделиться знаниями с другими, то подавайте заявку! В осеннем сезоне конференция пройдет в гибридном формате: онлайн+офлайн.
Темы, которые ждут:
✔️ Платформы под капотом;
✔️ Software Craftsmanship;
✔️ Архитектура;
✔️ Качество продукта;
✔️ Тренды в мобильной разработке;
✔️ Инфраструктура.
Но не ограничивайтесь этим списком — вы можете подать заявку с любой темой из области мобильной разработки.
Если все-таки сомневаетесь, то программный комитет всегда готов обсудить актуальность темы и помочь выбрать правильный вектор доклада. Плюс, ребята помогут с прокачкой ваших ораторских навыков, если у вас мало опыта в публичных выступлениях.
👉 Подать заявку и узнать подробности можно на сайте.
❓Вопросы присылайте на почту program@mobiusconf.com
5 158
AndroidX: App Startup
#jetpack #library
AndroidX App Startup — одна из самых малоизвестных библиотек из Jetpack. Давайте исправлять эту ситуацию и рассмотрим эту библиотеку детальнее.
Для чего она нужна?
Зачастую различные компоненты приложения инициализируют свою логику при его старте, например, такие компоненты как
WorkManager или Lifecycle. Пользователь, который ожидает быстрого старта приложения, получает белый экран, особенно если у него не самый шустрый девайс. Для того, чтобы улучшить время старта приложения и появилась App Startup.
Как работает?
По сути, библиотека представляет из себя единый ContentProvider, который запускает несколько зависимостей одной за другой. Это позволяет исключить поведение, при котором компоненты используют свои собственные ContentProvider, замедляя старт приложения. Ну и killer-feature является то, что можно настроить момент инициализации компонента вручную и убрать часть инициализаций на старте.
Почитать подробнее о том, как использовать библиотеку у себя можно в этой статье.
Рассказывайте, уже использовали библиотеку? Как вам?5 158
ADB-команды
#tools
Уверен, что вы знакомы с таким инструметом, как adb. По сути, это программа в виде командной строки, которая позволяет коммуницировать с подсоединённым устройством Android. Сегодня пару советов про этот полезный инструмент.
Есть отличный плагин для автоматизации распространённых действий при помощи adb — ADB Idea, который крайне рекомендую поставить и пользоваться с удовольствием.
Также попалась неплохоая статья, где описываются наиболее распространённые и полезные команды. Не все из них вы будете применять каждый день, но может быть вы найдёте что-то полезное для себя.
От себя добавлю классный флаг к команде
adb install -g app.apk, который дает все разрешения приложению. Удобно, если дебажите приложение и не хотите заморачиваться с лишним прокликиванием уже знакомых диалогов. Её также можно добавить как атрибут при запуске приложения из Android Studio.
А какой ваш топ полезных команд?5 158
Android приложение на Firebase
#firebase
Нашёл отличный пример приложения, написанное на Kotlin, которое использует продукты Firebase.
Автор решил ответить на топ самых популярных вопросов, связанных с Firebase в виде небольшого приложения, вот некоторые из них:
• как настроить авторизацию пользователей, и записать информацию о них в Cloud Firestore?
• как сделать авторизацию через Google корректной?
• как правильно читать данные из Realtime Database, используя MVVM, Coroutines и Flow?
Так и получилось приложение FireApp, где даны ответы на эти и многие другие вопросы. Автор говорит, что приложение будет пополняться фичами и дальше, так что, вероятно, нас ждёт большая функциональность.
Рекомендую ознакомиться, если вы раньше плотно не работали с Firebase сервисами, но задумываетесь об использовании их в своих проектах
5 158
Научитесь разрабатывать Android-приложения уже сейчас
На факультете Android-разработки вы освоите языки Java и Kotlin, изучите архитектуру, дизайн и тестирование приложений. Вы сможете работать в команде с другими студентами над реальными кейсами. После прохождения курса гарантируется трудоустройство.
Успейте поступить на курс со скидкой 30%: https://tprg.ru/9wWt
5 158
Думаю, что вы наслышаны о популярности фреимворка Flutter, а некоторые уже попробовали использовать его в разработке.
Если вы хотите быть в курсе новостей о Flutter-разработке, то рекомендую подписаться на канал Oh my Flutter, где вы найдёте много новостей, подходов и рекомендаций к разработке.
Подписывайтесь, если хотите знать о Flutter-разработке ещё больше.💪
5 158
compileSdkVersion vs targetSdkVersion
#gradle
Уверен, что каждый из вас хотя бы раз обновлял параметры
compileSdkVersion и targetSdkVersion. Чаще всего, мы обновляем их вместе, иногда ставим одно и то же значение, не задумываясь о том, что они значат, и для чего нужны.
Вот вам отличная статья, которая описывает разницу между этими параметрами. Если совсем кратко:
🔹 compileSdkVersion определяет, какая версия Android SDK будет использоваться gradle для компиляции вашего приложения.
Например, в последней версии Android появилось новое API для работы со splash-экранами. Если вы хотите использовать данную фичу, то вам следует поднять ваш compileSdkVersion до 31 версии.
Это не значит, что теперь вы будете использовать только новое API и забудете о пользователях, которые находятся на более старых версия системы. В случае, если minSdkVersion меньше, чем 31 вам потребуется сделать реализацию splash также и для остальных пользователей.
Частенько после изменения compileSdkVersion вы можете увидеть warnings и ошибки в логах, так как некоторые методы могут стать deprecated, а API поменяться.
🔹targetSdkVersion определяет, на какой версии системы ваше приложение было протестировано и создано.
Если запустить приложение на версии Android, которая выше, чем ваша targetSdkVersion, то система постарается сделать backwards-compatibility для некоторых из фич, добавленных именно в этой системе.
Например, в Android 12 поменялся дизайн отображения уведомлений, и они будут выглядеть по-разному, если вы поставите targetSdkVersion 30 или 31.
Кстати, между этими параметрами можно выделить следующее правило: targetSdkVersion не может быть больше compileSdkVersion, а в идеале они должны быть равны между собой и равны последней версии SDK.5 158
Популярные библиотеки для KMM
#kmm #kotlin
Со времени релиза KMM появилось довольно много библиотек, которые дают возможность делать привычные вещи — запросы в сеть, хранение настроек, создание базы данных — сразу на нескольких платформах.
Но поле для деятельности и разработки огромное, и вот вам статья с обзором популярных библиотек для KMM, с порцией мотивации авторов о разработке этих решений.
Тут есть краткий, не технический обзор SQLDelight, Decompose, Realm Kotlin Multiplatform SDK, Multiplatform Settings и Ktor.
С авторами некоторых из библиотек есть интервью, где рассказывается о внутренностях работы с этими библиотеками, про мотивацию, ну и будущие планы для работы с решениями.
Кроме этого, автор мотивирует нас, разработчиков, делать свой вклад в библиотеки для KMM, так как есть ещё огромное число областей, которые требуют своих библиотек. Если у вас есть мысли о том, чтоб «законтрибьютить» своё решение, вот вам статья для этого.
Ссылка на статью тут.
5 158
Multiple backstacks
#fragment #jetpack
Хорошая статья, где автор рассказывает о множественных backstacks, и о том, как их применять в свежей версии
Navigation и Fragment.
При использовании кнопки back наша Activity закрывается. Но если у нас в ней есть Fragments, то мы можем кастомизировать это поведение при помощи OnBackPressedDispatcher , например вызывая метод popBackStack(). Он не совсем хорош, ведь не позволяет сохранить состояние наших фрагментов.
Теперь же у нас добавились два новых метода: saveBackStack() и restoreBackStack(), благодаря которым мы можем этими состояниями управлять, и по факту иметь несколько backstack.
Крутое обновление, надеюсь что текущее API не пострадало: ребята говорят о том, что им пришлось 6 месяцев на изменения API Fragments, но обещают, что текущие методы будут работать корректно.
Кроме этого, всё будет работать из коробки для Navigation и View, связанных с ней.5 158
Привет! :)
У нас в Туту.ру есть 3 новые команды, которые готовы взять на борт мобильных разработчиков.
Что предлагаем?
👉 Продукт, который помогает путешествовать 8 миллионам человек
👉 Мечта разработчика – где-то свежайший код (еще не вышло из под A/B), где-то надо писать с нуля
👉 Сильная команда, iOS/Android гильдии и много общения
И на этом плюсы не закончились:
С 15 по 25 июня мы проводим традиционный ивент «Оффер за один день», только в этот раз лучше – все собеседования можно будет пройти за 3 часа удаленно из любой точки мира, а вечером в случае успеха получить оффер.
Чтобы включиться в эту историю заходи на страницу https://cutt.ly/8nEXHdL, заполняй анкету и отправляй нам до 15 июня.
#партнёрский
5 158
Security By Design
#security
Думаю, что не открою чего-то нового, если скажу, что безопасность приложений — это очень важная штука. Но для многих разработчиков — это довольно непонятная вещь, несмотря на то, что Google даже сделали список практик для безопасных приложений.
Кроме этого, они недавно анонсировал курс, связанный с безопасностью приложений. Подойдёт для всех, кто не очень понимает в этой теме, но хотел бы создавать более безопасные приложения.
Курс состоит из нескольких частей, где рассказывается про то, какие средства использовать для шифрования важной информации, как проверить своё приложение на предмет уязвимостей и как их устранить.
Выглядит интересно, добавляю в закладки, чтобы пройти его и обязательно поделюсь полезными советами с вами. Но вы тоже посмотрите, ведь любой может найти для себя полезные советы.
Курс бесплатный, ссылка на описание тут, а пройти его можно тут.
5 158
Работа с каталогами в gradle 7.0
#gradle
При работе с Gradle существует довольно много способов для описания зависимостей в проекте. Кто-то оставляет всё по умолчанию, кто-то выносит всё в отдельный файлик, например
dependencies.gradle.
Проблема в том, что для новых разработчиков команды не всегда очевидно, где эти зависимости располагаются, а также ими становится сложнее управлять на многомодульных проектах.
Совсем недавно появилась возможность использовать каталоги для описания зависимостей. Пока что фича в превью, но уже можно ознакомиться с её работой.
По сути, список зависимостей превращается в:
dependencies {
implementation libs.lifecycle.runtime
implementation libs.lifecycle.viewmodel.ktx
implementation libs.lifecycle.extentions
implementation libs.lifecycle.livedata.ktx
}
А сам каталог libs настраивается так:
versionCatalogs {
libs {
alias('lifecycle-runtime').to('androidx.lifecycle:lifecycle -runtime:2.2.0')
alias('lifecycle-viewmodel-ktx').to('androidx.lifecycle', 'lifecycle-viewmodel-ktx')
.version {
strictly '[2.2.0, 2.3.0['
prefer '2.3.1'
}
}
}
Пока есть некоторые проблемы при работе, однако, мне кажется, что такой подход является более удобным при обработке зависимостей. Почитать подробнее можно в этой статье.
Что думаете вы?5 158
🔥Узнайте больше про Android-разработку на Kotlin на бесплатных 2-дневных интенсивах онлайн-курсов «Android Developer. Professional» и «Android Developer. Basic» от OTUS и Альфа-Банка!
👉Проверьте свой уровень — пройдите тест при регистрации на интенсив:
📌«Полный coverage. Покрываем Android-приложение юнит/интеграционными/UI тестами» (продвинутый курс): https://otus.pw/erTH/
📌«Создаем GPS-tracker за два дня» (базовый курс): https://otus.pw/AFNm/
5 158
Splash Screen в Android 12
#design
На последнем I/O было сказано о созданном по умолчанию Splash Screen. Кроме того, что теперь он есть во всех приложениях по умолчанию, у нас появилась возможность кастомизировать настройки.
В статье автор рассказывает о своём опыте кастомизации уже существующего Splash Screen и адаптации его под новое API.
Интересно, что кроме обычных иконок, можно использовать и анимированную векторную графику. Желательно только, чтобы она вписывалась во время жизни Splash. Свойств не так много, но теперь всем, у кого уже есть Splash надо кастомизировать его под новые настройки Android 12.
5 158
Compose для Desktop — Milestone 4
#compose
Отличная новость в первый день лета: сегодня появилась новая версия Compose для Desktop — Milestone 4🔥.
Если кто не знает, то этот инструмент позволяет создавать интерфейсы для десктопов, используя Jetpack Compose. Пока эти инструменты развиваются в разных ветках, но сама идея того, что мы сможем писать интерфейс ещё и для десктопов очень радует.
В этом релизе добавили:
🔹Composable Window API — набор абстракций для Window, Dialog, MenuBar и Tray. Соотвественно, добавился и набор атрибутов для управления различными свойствами для окон, диалогов и т.д.
🔹улучшения в рендеринге — теперь будет использоваться Metal на устройствах Apple, можно выбрать приоритетность для рендеринга между интегрированной и дискретной картой;
🔹 улучшения для работы с текстом.
Больше деталей можно почитать тут.
5 158
А мы начинаем нашу трансляцию. Подключайтесь, чтобы узнать подробнее о новинках с прошедшего Google I/O 😎.
Ссылка на YouTube тут.
5 158
Google I/O Android App
#design
Думаю, что многие из вас в курсе про приложение для Google I/O со списком докладов и сессий. В этом году из-за онлайн-мероприятия приложение не пользовалось спросом и список докладов идёт из I/O 2019 года, однако ребята из Google всё равно обновили кодовую базу.
Список главных изменений:
🔸миграция с LiveData на Flow — можно как раз посмотреть, как поключить
Flow к жизненному циклу фрагментов;
🔸поддержка больших экранов и разных форм-факторов — пока не смотрел доработки, которые были сделаны в этом пункте, но уверен, что там будет Navigation Rail. Не думаю, что гибкие смартфоны — это будущее в ближайшее время, но радует, что уже есть инструменты для адаптации приложений;
🔸миграция с SharedPreferences на DataStore — хороший пример реализации, после которого вы увидите, что мигрировать на новую библиотеку довольно просто. Сейчас она в beta-стадии, выглядит очень приятно.
🔸частичная поддержка Jetpack Compose — нужно переключить в отдельную ветку, чтобы посмотреть переход на Compose.
Добавлю ещё сюда поддержку Jetpack Benchmark library, которая была анонсирована на последнем I/O, она позволяет тестировать многие параметры приложения.
Единственный момент — сейчас приложение может некорректно работать на последней версии Arctic Fox, но уже создана issue на правку🤦♂️.5 158
Что добавили на Google I/O 2021?
#youtube
Отгремел Google I/O, было показано достаточно много полезных штук, с которым нам предстоит работать следующий год.
На канале тоже появилось не мало различных статей о новых фичах, но хочется разбавить этот формат и обсудить с экспертами, что же добавилось нового🤟.
А сделаем мы это на YouTube-канале Android Live в формате коротких докладов и ответов на ваши вопросы!
Наши эксперты:
🔵 Дмитрий Григорьев — автор канала, где есть куча материала про этот фреймворк — расскажет нам, как ни странно про Compose, а точнее про работу с MaterialTheme в Jetpack Compose, ведь совсем скоро нас ждёт релиз.
🔵 Иван Баранов — эксперт с опытом разработки под Android более 8 лет, расскажет нам про новинки в Media, и что эти новинки значат для обычных разработчиков.
🔵 Фёдор Цымбал — эксперт с 7 летним опытом в Android, работает в компании Orion Innovations, расскажет нам про Wear OS, Android TV и Android for Cars. Google обещает шуструю работу Android на этих устройствах, и быть может вы захотите написать своё приложение и на них.
Стрим пройдёт 31 мая в 18:30 на YouTube-канале Android Live, ссылка на трансляцию тут. До встречи, и обязательно подписывайтесь на канал🚀.
5 158
Тут ребята из Mobile People делают онлайн-евенты, посвященных мобильной разработке. В каждом эпизоде есть один или несколько докладов, которые посвяжены отдельной теме из мира Mobile.
Сегодня будет второй эпизод, посвящённый Android (первый был про Flutter), и можно поучаствовать. Будет два доклада:
• Сергей Бондаренко расскажет о машинном обучении в Android-разработке;
• Алена Захарикова поделится инсайтами создания многомодульной архитектуры.
Регистрация бесплатная по ссылке. 🤟
5 158
Ещё про миграцию с LiveData на Flow
#flow #livedata
На канале уже несколько раз было сказано про миграцию на
Flow с LiveData, но тут на глаза попалась отличная статья, где описываются примеры из реальной разработки и то, как перевести их на Flow.
Ну и как всегда, описывается, что такое SharedFlow и StateFlow, то, какие параметры там есть, и что они значат. Есть отличные примеры стратегий у Flow и то, когда какая подойдёт для использования.
В общем, рекомендую статью для всех, кто ещё думает о переезде или хочет лучше понять использование Flow в реальных проектах.
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
