Android Live 🤖
Open in Telegram
Самые свежие новости, новинки и тренды Android от практикующего разработчика. Автор: @al_gorshkov, Чат: @android_live_chat Личный блог: @al_gorshkov_blog Рекламу не размещаю
Show more5 158
Subscribers
-224 hours
+17 days
-1030 days
Posts Archive
5 158
День программиста
#android_live
Сегодня наш профессиональный праздник — 256 день в году или день программиста.
Желаю всем кодящим мало багов, шикарных проектов, постоянного роста и развития🎉.
А сегодня не сидите слишком много за IDE, а насладитесь тёплыми деньками, которые позволяют отлично прогуляться по улице.
5 158
*День программиста*
#android_live
Сегодня наш профессиональный праздник — 256 день в году или *день программиста*.
Желаю всем кодящим мало багов, шикарных проектов, постоянного роста и развития🎉.
А сегодня не сидите слишком много за IDE, а насладитесь тёплыми деньками, которые позволяют отлично прогуляться по улице.
5 158
Hilt MAD Skills series
#tools #library
Тут вышла свежая статья про Hilt в серии статей про современные практики Android — MAD Skills.
Если вы пропустили, то в первой статье рассматривается общая информация о том, почему DI важен в современных приложениях. Ну и также упоминается, почему Hilt — хорошее и рекомендуемое решение от Google для dependency injection.
Во второй статье упор делается на тестирование, используя Hilt и на те аннотации, которые стоит использовать для этого.
Ну и в самой последней, третьей статье, рассказывается о том, как библиотека работает под капотом, как работают описанные в ней аннотации, как работает Hilt Gradle Plugin.
В общем, очень крутая серия статей, крайне рекомендую, если вы ещё не использовали Hilt в своих проектах.
5 158
Убираем лишние файлы Android Studio
#tools #tips
Не многие разработчики знают, что при обновлении Android Studio или версии gradle, на компьютере может оставаться довольно много лишнего мусора.
Это могут быть уже не используемые кэши, дополнительные настройки и неиспользуемые эмуляторы. Все эти файлы могут занимать десятки гигабайт, что критично, если у вас небольшой SSD.
Вот вам небольшой чеклист, который позволит убрать лишние файлы с вашего ПК, а детально можно почитать тут:
🔹очищаем директорию проекта — для начала это “Build -> Clean Project”, потом “File -> Invalidate Caches / Restart”. Далее заходим в директорию и удаляем каталог
.gradle и .idea. На всякий случай сделайте бэкап этих папок. Это даст нам лишние ~500mb.
🔹очищаем gradle — заходим в директорию ~/.gradle. Это домашняя директория Gradle, которая занимает особенно много места. Осторожно удаляем те версии gradle, которые уже не используются. В целом, можете убрать и текущую, просто при первой сборке проекта надо будет подождать дольше. Тут мы можем получить аж до 15 gb.
🔹очищаем Android Studio — заходим в директорию ~/.android. Там могут быть настройки от старых версий IDE, так что их точно можно убрать. Последние версии Studio делают это за вас, но проверить всё равно стоит. Получаем около 100mb.
В директории ~/Library/{Preferences, Caches, Logs, Application Support} можете тоже поискать старые версии вашей среды разработки.
🔹очищаем Android SDK — заходим в SDK Manager и удаляем те версии Android, которые уже давно не используем в проекте в качестве targetSdkVersion. Здесь всё зависит от того, сколько ненужных штук вы удалите.
Обратите внимание также и на NDK-версии, вдруг вашим проектам они совсем не нужны.
🔹удаляем неиспользуемые эмуляторы — заходим в AVD Manager и удаляем те эмуляторы, которые никогда не используем. Каждый эмулятор может потреблять около 10 gb места, поэтому не раздумывая удаляем их.
🔹подчищаем неиспользуемые git-ветки — просто, чтобы был порядок 😉.
Если у вас есть что ещё добавить к этому списку, то welcome в комментарии.5 158
Принципы и методы эффективной локализации
#view #tools
Интересная статья, которая рассказывает о техниках локализации вашего приложения, которые лежат чуть дальше, чем просто перевод на язык.
Речь идёт больше о том как сделать, чтобы людям из разных культур, наций и стран было комфортно пользоваться вашим приложением.
Например, любопытный момент с большими текстами на разных языках: нужно иметь ввиду, что шрифт может менять свой размер в зависимости от выбранного языка. Или вот еще, пользовательское соглашение на английском языке будет занимать гораздо меньше места, чем сообщение с иероглифами.
Ну и интересный пункт про аватарки пользователй: если вы используете какие-то предустановленные аватарки, то стоит избегать аватарок только одного пола, расы или демографической характеристики. ☝️
В общем, будет полезно проверить своё приложение, если оно работает в нескольких странах, вероятно так вы сделаете его ещё лучше.
5 158
Многопоточность и Kotlin в Яндекс.Картах на iOS
#kotlin #kmm
Тут ребята из Яндекс рассказали о своём опыте работы с Kotlin Multiplatform на примере Яндекс.Карт. Основные проблемы были связаны именно с поддержкой многопоточности на iOS, а с простыми фичами не было никаких проблем.
Узнать о том, как в итоге получилось подружить многопоточность KMM с iOS можно в этой статье.
5 158
Как создать востребованное приложение?
#process
Со мной поделились крутой статьёй, которая рассказывает о том, что отличает популярные продукты от невостребованных.
Если спросить вас, «Что отличает хорошее приложение от плохого?», то ответы чаще будут связаны непосредственно с приложением: качество дизайна, отзывчивость интерфейса, быстрая поддержка и т.д.
Однако в любой нише есть продукты, которые сделаны «на коленке», при этом имеющие положительные оценки и приличное количество пользователей, любящих это приложение. В чём же секрет? 👀
Автор статьи рассказывает, что такие продукты конкурируют не среди приложений, пытаясь стать лучше при помощи дизайна, поддержки и т.д., а за счёт пользователей – делая их лучше.
Цель любого продукта, по мнению автора, заставить пользователя быть лучше не только в вашем приложении, но и в какой-то не связанной непосредственно с вашим приложением области.
Ну и кроме этого в статье много годных мыслей о мастерстве, практике, борьбе с когнитивными утечками и т.д., об улучшении навыков людей. Крайне рекомендую! 👍
Ну и не стесняйтесь делиться своими мыслями в комментариях.
5 158
Наверняка для вас не секрет, что Android — это свободный проект, поэтому каждый пользователь имея определённые знания может создать свою версию операционной системы. 🤓 Однако, классический Android, установленный на большинстве устройств пользователей, во многом принадлежит Google: без их сервисов не работают многие приложения, есть сильная завязка на предустановленные приложения.
Любопытно посмотреть на аналоги, которые уже есть. Один из них — CalyxOS, цель которой максимально убрать из себя продукты и сервисы Google.
Тут можно почитать о том, как эта система заменяет сервисы Google, что там вместо Play Market, геосервисов и YouTube, а также на какие устройства её можно установить.
По мне так подобные проекты довольно интересны, их любопытно изучать с точки зрения разработчика. Но все же, мне кажется, что они так и останутся нишевой историей, потому что большинство приложений будут поддерживать Google Services, а большинство пользователей не очень-то и думают о своей приватности в Интернет.
5 158
Новая модель управления памятью в Kotlin/Native
#kotlin
Вчера вышел анонс новой модели управления памяти в Kotlin/Native. На практике это позволит сделать процесс «шэринга» кода между iOS и Android более приятным. 🙌🏻
При использовании KMM чаще всего нам нужно думать о некоторых специфичных вещах, которые есть в каждой операционной системе, а за все общие элементы будет ответственнен KMM. Однако, существует ограничение в модели памяти, которое не очень совместимо с параллельными задачами на iOS и Android. 🙄
Ребята из JetBrains уже делали анонс того, что хотят поменять модель управления памятью, и теперь появилась возможность попробовать её на своих проектах.
Новые версии coroutines и ktor уже испольуют этот подход. Теперь не нужно вызывать
freeze(), если вы хотите «пошарить» объекты между разными потоками (кроме AtomicReference).
Гайд о том, как мигрировать можно найти тут, а вот пример приложения. 🤟5 158
Как тестировать Jetpack Compose UI
#compose #jetpack #tests
Думаю, что многие из вас знакомы с инструментами для тестирования UI, написанного в традиционном xml-подходе. Однако, элементы созданные при помощи Compose не имеют
Views, и, следовательно, должны быть протестированы другим способом.
Для этого уже существует библиотека, которая полностью позволяет протестировать UI на Compose.
А чтобы вам проще было разобраться с написанием своего первого теста, есть отличная статья, где детально разбираются все аспекты UI-тестирования.5 158
А мы начинаем через 2 минуты 😉. Подключайтесь, чтобы задать свои вопросы про Koin его создателю:
https://www.youtube.com/watch?v=9UCG2Cl83i4
5 158
🤖Оставьте заявку на 10-месячный онлайн-курс «Специализация Android Developer» на Kotlin от OTUS и Альфа-банка и пройдите путь с нуля до middle в сопровождении топовых преподавателей-практиков, персонального ментора и карьерного консультанта!
👉🏻ЗАПИСАТЬСЯ НА КУРС С НУЛЯ: https://otus.pw/r2eR/
📌Хотите протестировать учебный процесс заранее? Регистрируйтесь на бесплатный 2-дневный практический интенсив «Делаем мобильную версию PopIt»: https://otus.pw/s4by/
#реклама
5 158
Изменения виджетов для Android 12
#api #view #question
Виджеты существуют уже долгое время, и, думаю, каждый пользователь смартфона на Android использует хотя бы один на своём рабочем столе. Но не так много приложений включает их в свой арсенал: нет подходящих фич для того, чтобы их использовать, или же текущее API не позволяет добавить то, что хочется.
С появлением Android 12 у нас есть изменения в API виджетов, вероятно это вдохнёт новую жизнь в этот элемент. 🤞🏻
Обязательно почитайте эту статью, где описываются все изменения: ведь теперь нужно учитывать скругления, переключения тем и превью при добавлении.
А тут уже больше измений, связанных с кодом. Рассказывается о новом API и поддержки их в виджетах, что также может помочь вам в использовании виджетов на последнем Android.
А у вас в приложении есть виджеты?
5 158
Как оптимизировать размер приложения?
#tools
Размер конечного файла приложения — одна из его главных характеристик. Для нас она может казаться не такой важной: Интернет довольно дешёвый (ну, по крайней мере в России), места на устройствах становится всё больше, и тп.
Однако есть и те пользователи, которые принимают решение об установке приложения в том числе на основании размера установочного файла.
Да и нам, как людям, которые заботятся о качестве выпускаемого продукта стоит думать об этой характеристике.
Отличный гайд, который рассказывает о том, как по шагам уменьшить размер вашего приложения тут. Автор рассматривает все аспекты уменьшения приложения: удаление неиспользуемых библиотек и ресурсов, proguard, dynamic feature и т.д.
5 158
Много компаний, которые предлагают сотрудникам индивидуальный онбординг, в том числе и технический, review кода, прозрачные процессы по росту и развитию?
Нет. Но в Технократии это точно есть. В нашей команде работают только крутые специалисты, используют современный стек и ведут проекты от идеи до реализации.
Сейчас в компанию очень ждут талантливого Андроид-разработчика с релевантным бэкграундом от 2х лет (готовы рассмотреть меньший опыт при высоком уровне амбиций и знаний).
Что нужно?
👉 Опыт работы с Kotlin, Android SDK.
👉 Опыт разработки клиент серверных приложений Retrofit 2, Dagger 2, RxJava 2.
👉 Опыт коммерческой разработки
Мы предлагаем все условия от удаленки до релокации, официальное трудоустройство и достойную оплату, а также наставничество крутых специалистов, современный стек и возможность менять проект несколько раз в год.
Подробнее о вакансиях:
http://career.technokratos.com/?utm_source=telegram&utm_medium=androidlive
Резюме можно отправить:
https://t.me/Kiltanya
Соцсети компании:
https://www.instagram.com/technokratos/
#реклама
5 158
Koin Q&A session
#youtube #android_live
Многие разработчики активно используют библиотеку Koin для инъекции зависимостей в своих проектах. И не зря, ведь это классное решение для большинства проектов: она простая в использовании, лёгкая в установке, есть расширения для Android-проектов и KMM.
Возможно, во время использования Koin у вас возникали вопросы об использовании тех или иных функций, а может вы хотите узнать, как появилась библиотека и какое у неё будущее. Эти и другие вопросы вы можете задать создателю и главному контрибьютору Koin — Arnaud Giuliani, который согласился ответить на вопросы подписчиков Android Live в прямом эфире!
Стрим пройдёт 31 августа в 18:00 по МСК на YouTube-канале Android Live, ссылка на трансляцию тут.
Очень важна ваша поддержка в виде вопросов и присутствии на трансляции, ведь это первый стрим, который я делаю на английском языке. Ну и не забывайте рассказывать о трансляции коллегам.😉
Свои вопросы вы можете задать тут, желательно делать это на английском. А тут Twitter гостя.
5 158
Перенос учетных записей с Block Store
#api #library
Думаю, что вы частенько сталкивались с ситуацией, что при покупке нового смартфона вам нужно заново залогиниться во все установленные приложения. Это доставляет уйму неудобств: ведь мы помним пароли не ко всем приложениям, тратим кучу времени на их восстановление.
Зачастую бывает и так, что пользователь просто забивает на восстановление пароля, удаляет приложение или в лучшем случае регистрируется заново. Но мы, как разработчики, можем улучшить пользовательский опыт и добавить «бесшовную» авторизацию в приложения при помощи Block Store.
Block Store API позволяет сохранять учётные данные пользователя, что позже позволяет заново авторизовать его на новом девайсе. Интеграция довольно простая, о ней можно почитать в этой статье.
Не уверен, насколько это действительно безопасно и подходит ли этот способ для всех приложений. Но выглядит любобытно, раньше никогда не слышал об этом API.
5 158
Как приложение OkCredit улучшило запуск приложения
#optimizations
Время холодного запуска приложения — одна из важнейших характеристик после стабильной работы системы. Это особенно может быть критичным для тех приложений, которые часто запускаются на устройствах пользователя. Поэтому, мы, как разработчики, должны следить за этой метрикой и стремиться её улучшать.
Тут своим опытом делятся ребята, делающие приложение OkCredit. По их замерам, они смогли уменьшить время запуска приложения на 70%, что весьма круто.
Вот несколько главных «пожирателей» времени запуска:
🔹инициализация Dagger — были найдены тяжёлые объекты, которые переделаны на ленивую инициализацию.
🔹 инициализация объектов в фоновый поток — перенесли инициализации API в фоновый поток. Думаю, что не стоит перенаправлять все инициализации туда, ведь можно словить исключения, связанные с отсутсвием подходящего API при работе приложения.
🔹 переделали экран загрузки — добавили плоские View, что также улучшило время запуска.
🔹 убрали Firebase trace — интересный пункт, говорящий о том, что Firebase performance monitoring может замедлить первоначальный запуск приложения. Ребята решили вообще убрать его из проекта.
🔹 ещё парочку пунктов, о которых можно почитать в статье.
Ну а если вам интересно, с чего вообще начать оптимизации запуска приложений, то вот крутой туториал 🤓
5 158
Kotlin callbackFlow — пример использования
#kotlin #flow
Flow в Kotlin — очень крутой API, который, по мнению Google, является рекомендуемым подходом для передачи данных между слоями архитектуры в приложении наряду с suspend-функциями.
Спорить не буду, так как сам давно использую Flow на всех уровнях приложения, постепенно вытесняя LiveData из проекта.
Одной из реализаций Flow является callbackFlow, который позвляет делать обёртки для данных, поставляемых через callback. Это очень удобно: например, можно оборачивать различные функции из Firebase или же встроенные в Adroid сервисы.
Автор статьи описал реализацию callbackFlow с обёрткой над получением информации о геолокации пользователя. Вышло более чем хорошо: пользователю данного сервиса остаётся лишь подписаться на изменения Flow и не заботиться о работе того, что находится под капотом.
Кроме того, автор коснулся вопросов, связанных с «шэрингом» этого Flow между разными пользователями без дублирования подписок.
Рекомендую статью, если хотите сделать свой код ещё более качественным с Flow.💪5 158
🔥OTUS начинает новый набор продвинутого онлайн-курса «Android Developer. Professional» на Kotlin от OTUS и Альфа Банка. Курс предназначен для разработчиков с опытом от 1 года. Пройдите тест и узнайте, готовы ли вы к обучению!
👉🏻ПРОЙТИ ТЕСТ ПО ПРОДВИНУТОЙ ANDROID-РАЗРАБОТКЕ: https://otus.pw/YVfb/
📌Хотите протестировать учебный процесс заранее? Регистрируйтесь на бесплатный 2-дневный практический интенсив «Android Lint»: https://otus.pw/A71Y/
Available now! Telegram Research 2025 — the year's key insights 
