Android Live 🤖 – Telegram
Android Live 🤖
5.28K subscribers
52 photos
1 video
800 links
Самые свежие новости, новинки и тренды Android от практикующего разработчика.


Автор: @al_gorshkov,
Чат: @android_live_chat
Личный блог: @al_gorshkov_blog

Рекламу не размещаю
Download Telegram
​​Как должен выглядеть идеальный PR?
#разработка

На днях попалась статья, которая рассказывает о том, как создать идеальный pull request.

Любопытно, что есть исследование, которое говорит о том, что идеальный PR должен содержать не более 250 строк кода: в больших PR сложно обнаружить ошибки, а также приходится тратить больше 1 часа для того, чтобы всё отсмотреть.

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

От себя добавлю пару вещей, которые я использую в своих проектах:
👉 используйте черновики, если ваш код ещё не до конца готов для того, чтобы вливаться в основную ветку;
👉 делайте отдельный PR для незначительных, но объёмных изменений кода: автоматические миграции базы данных, иконки;
👉 выделите отдельное время (на практике понял, что самое лучшее — перед началом работы) для просмотра PR ваших коллег.

А если вы ещё накините идей, как сделать процесс просмотра реквестов ещё лучше, то буду только рад. 🤓
👍13🔥1
​​Intellij Scratch File
#разработка #android

Далеко не все знают об этой крутейшей фиче Android Studio.
Частенько бывают кейсы, когда необходимо быстро проверить, как работает кусок вновь написанного кода. Если этот код не связан с UI-логикой, то приходится или подключать debug, или же добавлять логгирование на те состояния, которые вы ходите проверить.
Ещё более хардкорный и неудобный способ, которым мало кто пользуется — это открыть параллельно ещё одну среду разработки, где в консоли быстро верифицировать написанную функцию.

Но есть ещё один способ, гораздо более удобный — это использовать Intellij’s Scratch File. По сути, это небольшая live-IDE внутри Android Studio, которая будет выполнять написанный вами код по мере его добавления.

Чтобы добавить новый scratch-файл, надо нажать ⇧ ⌘ N (на macOS) или Ctrl+Alt+Shift+Insert на Windows. А ещё есть поддержка нескольких языков плюс к основному: HTML, Java, JavaScript, SQL, YAML.

В общем, невероятно полезная фича о которой совсем все забыли, а напрасно. Вот тут чуть больше информации, а также демо того, как всё работает.
🔥14👍6🥰1
​​SlackComposeMultiplatform
#multiplatform

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

Попался проект, где автор решил сделать клон Slack на Kotlin Multiplatform для Android, iOS и Desktop и вроде как у него получилось. Результат, в целом, не production ready, но посмотреть на пример с точки зрения стека и технологий однозначно стоит.

Ссылка на проект тут.

Будет здорово, если поделитесь ещё интересными проектами на Kotlin Multiplatform.
👍12🔥3
​​Для чего можно использовать ChatGPT?
#development #android

Кажется, в конце года каждый только и говорил о том, что нейронные сети вытеснят современные профессии, а в частности нас – разработчиков.
И действительно, ChatGPT показывает классный результат и есть примеры, когда всего за несколько вопросов получилось написать простое приложение под Android.

Можно долго спорить, заменят ли разработчиков нейронки, или нет, но ясно одно: это крутой инструмент, который не стоит игнорировать, и важно стараться использовать его уже сейчас. Вот классная статья, где автор, с высоты своего весьма ощутимого опыта в программировании, описывает что еще можно делать при помощи ChatGPT уже сейчас:

1️⃣ Explaining code — можно взять часть кода, который вы бы хотели больше понять и попросить ChatGPT его объяснить.

2️⃣ Improve existing code — можно попробовать попросить улучшить уже существующий код, давая подсказки AI, что в нём сейчас не так.

3️⃣ Simplifying code — нейронка также можем помочь упростить уже существующий код.

4️⃣ Exploring alternatives — автор описывает случай, когда ChatGPT предложил лучшую сортировку для его кейса.

Ну и ещё 5 кейсов можно взять в статье.
👍15
​​Coroutines
#новичкам #android #kotlin

Супер-детальный, но при этом довольно простой цикл статей про Coroutines.

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

Ссылка на весь цикл статьей можно найти тут.
👍19🔥2
​​Дерево зависимостей Gradle
#gradle #android

Кайфовая статья, которая по шагам рассказывает про Gradle и конкретно про дерево зависимостей. Особенно будет полезно тем, кто не чувствует себя уверенно в Gradle. 🤓

На небольшой примере описывается:
- что такое зависимости и транзитивные зависимости в Gradle?
- что такое дерево зависимостей в Gradle?
- какие есть конфигурации зависимостей в Gradle?
- а также описывает несколько способов создать дерево зависимостей в вашем проекте Gradle.
👍14🤔2
​​Kotlin for-loop
#kotlin

Короткая, но ёмкая статья про работу циклов в Kotlin. Будет особенно полезна новичкам.

Автор рассматривает большинство ситуаций использования циклов в Kotlin. Да и в целом, описывает, что такое Iterable, почему циклы могут описываться именно таким образом и содержит сразу несколько примеров того, как они работают.
👍6😐6🔥1
​​Как полностью удалить Android Studio?
#разработка

Иногда есть необходимость в полном удалении Android Studio, например если: есть аномалии в работе, огромный кэш, который заполнил всё дисковое пространство, или вы просто хотите начать всё с начала. 🙃

1️⃣ Первое что стоит сделайть – резервная копия настроек через File -> Manage IDE Settings -> Export Settings. Это действие спасёт вас от того, чтобы долго и нудно настраивать студию с нуля.

2️⃣ Дальше надо закрыть студию. Вы можете использовать скрипт, который сделает всю работу за вас и удалит кэш и настроки. Если же вам лень использовать скрипт, то можно использовать несколько команд, которые сделают почти то же самое.

Дальше не забудьте импортировать настройки на первом шаге, и у вас будет чистая Android Studio где можно начинать творить.
👍14😁2
​​JavaScriptSandbox
#android

Мало кто заметил (вероятно, потому что это довольно редкая штука), но Google работает над новой возможностью выполнять JS-код в Android.

Если у вас когда-то был опыт запуска JS-кода в Android-приложении, то вы должны знать о том, что для его запуска существует только одна возможность — использование инстанса WebView в фоне.

Это далеко не всегда удобно: нужно создавать дополнительные интерфейсы и функции для связи с JS, да и создавать инстанс WebView бывает накладно. Однако появляется новое решение — JavaScriptSandbox.

Вот пара преимуществ:
🎯 более низкое потребление ресурсов, так как не требуется создавать WebView;
🎯 можно запустить работу в Service, или WorkManager;
🎯 возможность выполнять несколько задач одновременно;
🎯 и передавать большие объёмы данных;

Я бы пока не рискнул тащить это в боевой проект, потому что JavanoscriptEngine ещё в начальной alpha-версии, но, надеюсь, Google и дальше продолжит развитие этой библиотеки. 🤓
🔥16👍5💩1
​​K2 Compiler — stable в Kotlin 2.0
#kotlin

Крутейшая новость — скоро нас ожидает появление Kotlin 2.0 вместе с K2 Compiler. 🎉

А это значит, что грядет переход Kotlin на новую архитектуру, а это даст дорогу новым фичам и исправлению старых багов. Как мы видим, это значимое изменение в языке и идёт повышение мажорной версии. К счастью, нам ничего не придётся переделывать, и весь старый код будет корректно работать. Ну и скоро будет обновление Kotlin IDE plugin, который будет поддерживать новый Compiler по умолчанию.

Если хотите знать больше технической информации, то можно начать с этого видео, а продолжить этим.
Кстати, вы уже можете использовать K2 Compiler, начиная с версии языка 1.8.20 и дать свой фидбек.

Желаем команде Kotlin успешного релиза и с нетерпением ждём анонса. 👍
🔥23👍2
​​Zero Bug Policy
#разработка

Интересный пример того, как ребята из SkyEng избавлялись от багов, а потом пришли к Zero Bug Policy.

Предпосылкой к этому шагу был багатон — спринт, который позволил бы убрать большую часть багов в приложении.

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

В итоге, в SkyEng не получилось уйти полностью от багов, и появилось несколько подвидов политики:
- классическая строгая — когда все баги исправляются немедленно;
- "спринты любви" — когда некоторые баги фиксируются раз в несколько итераций;
- по стоимости — когда идёт сравнение с текущими фичами.

В итоге, статья описывает как плюсы, так и минусы этого подхода. Как минимум, интересно почитать, а как максимум — взять что-то на вооружение.

Интересно, среди читателей есть те, кто использует подобный подход на практике?
👍8👎6
​​String pool и безопасность
#android

Для большинства разработчиков не секрет, что существует такая вещь как String pool. Если в двух словах, то это область в памяти, которая позволяет экономить ресурсы при работе со строками: если мы создаём одинаковую строку при помощи двойных кавычек (как обычно и делаем), то происходит не дублирование строк, а просто изменение ссылок.

При этом есть важный нюанс: нельзя на 100% быть уверенным в том, что строки удалены из памяти.

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

Не буду спойлерить, лучше почитать всё с самого начала. Вот ссылка на статью. 😎
🔥19👍3🤔1💩1
​​KMM Knowledge Base
#kmm #kotlin

Не могу не поделиться 🔝 ресурсом, если вы работаете с KMM — KMM Knowledge base.

Ребята заморочились и сделали крутейший русскоязычный ресурс, где можно найти массу полезного:
- какие библиотеки есть для решения типовых задач;
- с чего начать работу с KMM;
- а что там с многопоточностью;
- примеры кода и приложений.

Точно в закладки, чтобы не потерять! 👍
👍17🔥3
​​Android Studio Flamingo
#android

Тут свежая версия Android Studio перешла в Beta4, а это значит, что самое время посмотреть, что там появилось новенького.

Вот некоторые изменения:

1️⃣ Themed app icons and dynamic color — с появлением Android 13 можно использовать themed app icons (подробнее о них писал тут) и динамических тем. Теперь добавилось превью, что позволяет прямо в IDE посмотреть внешний вид.

2️⃣ Dynamic color preview — дополнение к предыдущему пункту, но для тех, кто использует Compose: можно добавить тег wallpaper для превью, чтобы посмотреть, как будет выглядеть функция с разными фонами пользователя.

3️⃣ Compose Tracing — теперь можно смотреть, насколько качественно работают ваши Compose-функции, правда надо не забыть добавить нужную зависимость в проект.

4️⃣ Network Inspector — крутая фича, которая позволяет подебажить запросы к серверу внутри IDE. Можно изменить запрос, добавить headers или кастомные правила для разных ответов сервера.

5️⃣ App Quality Insights — улучшили фичу, добавили фильтры и возможность закрывать краши прямо из IDE. Удобно, но пока нравится больше смотреть за статистикой в Firebase.

Весь список изменений можно найти тут.
🔥22👍2
👋🏻 Я некоторое время нахожусь в Белграде 🇷🇸
Вдруг из моих подписчиков кто-то находится тут? Буду рад выпить чашку кофе и поговорить про разработку и быт разработчика ☕️
👍13🔥4🤮3🤡2🖕2
​​Lottie Editor
#android

Думаю, что вы слышали о библиотеке Lottie. Если нет — то в нескольких словах опишу её вам: эта библиотека позволяет встравлять готовые анимации из Adobe AE в Android или iOS проект. Чаще всего — это классные стилизованные изображения, которые намного сложнее делать при помощи средств разработки. А ещё есть масса крутых бесплатных изображений.

Возможно вы как и я пропустили, но появился Lottie Editor — инструмент, который позволяет редактировать уже готовые анимации.

Пока возможностей не много, по сравнению с Adobe AE, но для простых изменений — самое то. Можно поменять слои, цвета, текст, а ещё оптимизировать само изображение. Как по мне, отличная штука, особенно для небольших команд. 👍🏻
👍10🔥9
​​Паттерн Command
#android

Command — это паттерн проектирования, который может значительно упростить код. На самом деле, не так много разработчиков используют паттерны проектирования у себя в проектах, а зря ведь их использование может сделать код сильно лучше. Вот вам удачный пример использования.

Довольно часто при работе с экранами, вам необходимо передать действия пользователя обратно во ViewModel:
MyModelScreen(
items = item.data,
onSave = viewModel::addMyModel,
modifier = modifier
)


Всё усложняется, когда подобных команд становится больше, и вам требуется передавать не одну, а несколько функций:
MyModelScreen(
items = item.data,
onSave = viewModel::onSaveClicked,
onAdd = viewModel::onAddClicked,
onUpdate = viewModel::onTextUpdate,
onDelete = viewModel::onDeleteClicked,
onList = viewModel::onListClicked,
modifier = modifier
)


Паттерн Command поможет упростить эту зависимость и сделать код более читаемым и в итоге он будет похож на первую реализацию вне зависимости от набора методов:
MyModelCommandScreen(
items = items.data,
modifier = modifier,
commandProcessor = viewModel::processCommand
)


Подробнее можно почитать тут.
🔥11👍4👎3
​​Github RSA SSH host key

Если вы используете GitHub, то инфа для вас. Сегодня ночью GitHub изменил host key для своего сайта, и некоторые пользователи столкнулись с проблемой, связанной с работой GitHub.

Если у вас есть неполадки в работе, то надо перегенерировать ключи и обновить работу репозитория. Всё довольно легко делается, вот вам инструкция.
🔥6🤔31
​​Compose Multiplatform Wizard
#kmm

О, тут появился Wizard для создания приложений, который сделает за вас часть рутины и добавит необходимые зависимости.

Поддерживается Android, iOS, Desktop и Web. После генерации запускаете ./gradlew run и готово. 🚀

Люблю инструменты, которые упрощают жизнь, так что срочно сохраняйте в закладки.
6🔥3👍2