Coroutines
#новичкам #android #kotlin
Супер-детальный, но при этом довольно простой цикл статей про
Наверняка вы частенько видели подобные статьи, но мне понравились эти за счёт того, что автор рассматривает
Ссылка на весь цикл статьей можно найти тут.
#новичкам #android #kotlin
Супер-детальный, но при этом довольно простой цикл статей про
Coroutines
. Наверняка вы частенько видели подобные статьи, но мне понравились эти за счёт того, что автор рассматривает
Coroutines
в рамках того, как они работают под капотом, показывая на примерах реальный код из самой библиотеки. Ну и попутно сопровождает каждую статью Best Practices, которые будут особенно полезны новичкам.Ссылка на весь цикл статьей можно найти тут.
👍19🔥2
Дерево зависимостей Gradle
#gradle #android
Кайфовая статья, которая по шагам рассказывает про Gradle и конкретно про дерево зависимостей. Особенно будет полезно тем, кто не чувствует себя уверенно в Gradle. 🤓
На небольшой примере описывается:
- что такое зависимости и транзитивные зависимости в Gradle?
- что такое дерево зависимостей в Gradle?
- какие есть конфигурации зависимостей в Gradle?
- а также описывает несколько способов создать дерево зависимостей в вашем проекте Gradle.
#gradle #android
Кайфовая статья, которая по шагам рассказывает про Gradle и конкретно про дерево зависимостей. Особенно будет полезно тем, кто не чувствует себя уверенно в Gradle. 🤓
На небольшой примере описывается:
- что такое зависимости и транзитивные зависимости в Gradle?
- что такое дерево зависимостей в Gradle?
- какие есть конфигурации зависимостей в Gradle?
- а также описывает несколько способов создать дерево зависимостей в вашем проекте Gradle.
👍14🤔2
Kotlin for-loop
#kotlin
Короткая, но ёмкая статья про работу циклов в Kotlin. Будет особенно полезна новичкам.
Автор рассматривает большинство ситуаций использования циклов в Kotlin. Да и в целом, описывает, что такое Iterable, почему циклы могут описываться именно таким образом и содержит сразу несколько примеров того, как они работают.
#kotlin
Короткая, но ёмкая статья про работу циклов в Kotlin. Будет особенно полезна новичкам.
Автор рассматривает большинство ситуаций использования циклов в Kotlin. Да и в целом, описывает, что такое Iterable, почему циклы могут описываться именно таким образом и содержит сразу несколько примеров того, как они работают.
👍6😐6🔥1
Как полностью удалить Android Studio?
#разработка
Иногда есть необходимость в полном удалении Android Studio, например если: есть аномалии в работе, огромный кэш, который заполнил всё дисковое пространство, или вы просто хотите начать всё с начала. 🙃
1️⃣ Первое что стоит сделайть – резервная копия настроек через File -> Manage IDE Settings -> Export Settings. Это действие спасёт вас от того, чтобы долго и нудно настраивать студию с нуля.
2️⃣ Дальше надо закрыть студию. Вы можете использовать скрипт, который сделает всю работу за вас и удалит кэш и настроки. Если же вам лень использовать скрипт, то можно использовать несколько команд, которые сделают почти то же самое.
Дальше не забудьте импортировать настройки на первом шаге, и у вас будет чистая 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;
🎯 возможность выполнять несколько задач одновременно;
🎯 и передавать большие объёмы данных;
Я бы пока не рискнул тащить это в боевой проект, потому что JavascriptEngine ещё в начальной alpha-версии, но, надеюсь, Google и дальше продолжит развитие этой библиотеки. 🤓
#android
Мало кто заметил (вероятно, потому что это довольно редкая штука), но Google работает над новой возможностью выполнять JS-код в Android.
Если у вас когда-то был опыт запуска JS-кода в Android-приложении, то вы должны знать о том, что для его запуска существует только одна возможность — использование инстанса WebView в фоне.
Это далеко не всегда удобно: нужно создавать дополнительные интерфейсы и функции для связи с JS, да и создавать инстанс WebView бывает накладно. Однако появляется новое решение — JavaScriptSandbox.
Вот пара преимуществ:
🎯 более низкое потребление ресурсов, так как не требуется создавать WebView;
🎯 можно запустить работу в Service, или WorkManager;
🎯 возможность выполнять несколько задач одновременно;
🎯 и передавать большие объёмы данных;
Я бы пока не рискнул тащить это в боевой проект, потому что JavascriptEngine ещё в начальной 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 успешного релиза и с нетерпением ждём анонса. 👍
#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 не получилось уйти полностью от багов, и появилось несколько подвидов политики:
- классическая строгая — когда все баги исправляются немедленно;
- "спринты любви" — когда некоторые баги фиксируются раз в несколько итераций;
- по стоимости — когда идёт сравнение с текущими фичами.
В итоге, статья описывает как плюсы, так и минусы этого подхода. Как минимум, интересно почитать, а как максимум — взять что-то на вооружение.
Интересно, среди читателей есть те, кто использует подобный подход на практике?
#разработка
Интересный пример того, как ребята из SkyEng избавлялись от багов, а потом пришли к Zero Bug Policy.
Предпосылкой к этому шагу был багатон — спринт, который позволил бы убрать большую часть багов в приложении.
ZBP, в общих чертах, заключается в том, чтобы решать любые баги сразу после их появления — если они важные, то исправлять их немедленно, а если не важные, то не обращать на них внимание и жить с ними в проде.
В итоге, в SkyEng не получилось уйти полностью от багов, и появилось несколько подвидов политики:
- классическая строгая — когда все баги исправляются немедленно;
- "спринты любви" — когда некоторые баги фиксируются раз в несколько итераций;
- по стоимости — когда идёт сравнение с текущими фичами.
В итоге, статья описывает как плюсы, так и минусы этого подхода. Как минимум, интересно почитать, а как максимум — взять что-то на вооружение.
Интересно, среди читателей есть те, кто использует подобный подход на практике?
👍8👎6
String pool и безопасность
#android
Для большинства разработчиков не секрет, что существует такая вещь как String pool. Если в двух словах, то это область в памяти, которая позволяет экономить ресурсы при работе со строками: если мы создаём одинаковую строку при помощи двойных кавычек (как обычно и делаем), то происходит не дублирование строк, а просто изменение ссылок.
При этом есть важный нюанс: нельзя на 100% быть уверенным в том, что строки удалены из памяти.
Тут автор провел крутейшее исследование, где описал, что делать со строками, которые важно не хранить в памяти: например, ключи или токены. Вообще тут здорово показан пример, как исследовать работу с памятью.
Не буду спойлерить, лучше почитать всё с самого начала. Вот ссылка на статью. 😎
#android
Для большинства разработчиков не секрет, что существует такая вещь как String pool. Если в двух словах, то это область в памяти, которая позволяет экономить ресурсы при работе со строками: если мы создаём одинаковую строку при помощи двойных кавычек (как обычно и делаем), то происходит не дублирование строк, а просто изменение ссылок.
При этом есть важный нюанс: нельзя на 100% быть уверенным в том, что строки удалены из памяти.
Тут автор провел крутейшее исследование, где описал, что делать со строками, которые важно не хранить в памяти: например, ключи или токены. Вообще тут здорово показан пример, как исследовать работу с памятью.
Не буду спойлерить, лучше почитать всё с самого начала. Вот ссылка на статью. 😎
🔥19👍3🤔1💩1
KMM Knowledge Base
#kmm #kotlin
Не могу не поделиться 🔝 ресурсом, если вы работаете с KMM — KMM Knowledge base.
Ребята заморочились и сделали крутейший русскоязычный ресурс, где можно найти массу полезного:
- какие библиотеки есть для решения типовых задач;
- с чего начать работу с KMM;
- а что там с многопоточностью;
- примеры кода и приложений.
Точно в закладки, чтобы не потерять! 👍
#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.
Весь список изменений можно найти тут.
#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, но для простых изменений — самое то. Можно поменять слои, цвета, текст, а ещё оптимизировать само изображение. Как по мне, отличная штука, особенно для небольших команд. 👍🏻
#android
Думаю, что вы слышали о библиотеке Lottie. Если нет — то в нескольких словах опишу её вам: эта библиотека позволяет встравлять готовые анимации из Adobe AE в Android или iOS проект. Чаще всего — это классные стилизованные изображения, которые намного сложнее делать при помощи средств разработки. А ещё есть масса крутых бесплатных изображений.
Возможно вы как и я пропустили, но появился Lottie Editor — инструмент, который позволяет редактировать уже готовые анимации.
Пока возможностей не много, по сравнению с Adobe AE, но для простых изменений — самое то. Можно поменять слои, цвета, текст, а ещё оптимизировать само изображение. Как по мне, отличная штука, особенно для небольших команд. 👍🏻
👍10🔥9
Паттерн Command
#android
Command — это паттерн проектирования, который может значительно упростить код. На самом деле, не так много разработчиков используют паттерны проектирования у себя в проектах, а зря ведь их использование может сделать код сильно лучше. Вот вам удачный пример использования.
Довольно часто при работе с экранами, вам необходимо передать действия пользователя обратно во ViewModel:
Всё усложняется, когда подобных команд становится больше, и вам требуется передавать не одну, а несколько функций:
Паттерн 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.
Если у вас есть неполадки в работе, то надо перегенерировать ключи и обновить работу репозитория. Всё довольно легко делается, вот вам инструкция.
Если вы используете GitHub, то инфа для вас. Сегодня ночью GitHub изменил host key для своего сайта, и некоторые пользователи столкнулись с проблемой, связанной с работой GitHub.
Если у вас есть неполадки в работе, то надо перегенерировать ключи и обновить работу репозитория. Всё довольно легко делается, вот вам инструкция.
🔥6🤔3❤1
Compose Multiplatform Wizard
#kmm
О, тут появился Wizard для создания приложений, который сделает за вас часть рутины и добавит необходимые зависимости.
Поддерживается Android, iOS, Desktop и Web. После генерации запускаете
Люблю инструменты, которые упрощают жизнь, так что срочно сохраняйте в закладки.
#kmm
О, тут появился Wizard для создания приложений, который сделает за вас часть рутины и добавит необходимые зависимости.
Поддерживается Android, iOS, Desktop и Web. После генерации запускаете
./gradlew run
и готово. 🚀Люблю инструменты, которые упрощают жизнь, так что срочно сохраняйте в закладки.
❤6🔥3👍2
Fastlane с Google Play и Huawei App Gallery
#android
В разработке, помимо написания кода важно автоматизировать большинство рутинных действий. И один из инструментов, который поможет вам это сделать — Fastlane.
Если вы не знакомы с этим замечательным инструментом, то вот вам краткое intro. Эта консольная утилита позволяет при помощи скриптов автоматизировать загрузку релизов, создание скриншотов и т.д. Идея очень простая, но фишка в том, что уже есть достаточно много готовых плагинов, чтобы не писать код самостоятельно.
Но рассмотрим кейс с загрузкой релизов: для автомазации этой рутины существует плагит upload_to_play_store, который очень удобен и легко настраивается: ещё он автоматически заберёт metadata и release-notes для вновь созданных билдов, что суперудобно, если у вас много языков в приложении.
Для Huawei App Gallery не всё так гладко. Есть huawei_appgallery_connect, который довольно легко настраивается, но при этом нельзя загрузить release notes в автоматическом режиме по версии сборки, как у предыдущего плагина. Но и это лучше, чем ничего 🙃 нормальных альтернатив я пока не нашёл.
Помимо этого, можно настроить загрузку тестовых сборок в Firebase, а также Fastlane легко интегрируется в CI, что позволяет вам один раз писать скрипты и использовать их везде, где хочется. 👌
#android
В разработке, помимо написания кода важно автоматизировать большинство рутинных действий. И один из инструментов, который поможет вам это сделать — Fastlane.
Если вы не знакомы с этим замечательным инструментом, то вот вам краткое intro. Эта консольная утилита позволяет при помощи скриптов автоматизировать загрузку релизов, создание скриншотов и т.д. Идея очень простая, но фишка в том, что уже есть достаточно много готовых плагинов, чтобы не писать код самостоятельно.
Но рассмотрим кейс с загрузкой релизов: для автомазации этой рутины существует плагит upload_to_play_store, который очень удобен и легко настраивается: ещё он автоматически заберёт metadata и release-notes для вновь созданных билдов, что суперудобно, если у вас много языков в приложении.
Для Huawei App Gallery не всё так гладко. Есть huawei_appgallery_connect, который довольно легко настраивается, но при этом нельзя загрузить release notes в автоматическом режиме по версии сборки, как у предыдущего плагина. Но и это лучше, чем ничего 🙃 нормальных альтернатив я пока не нашёл.
Помимо этого, можно настроить загрузку тестовых сборок в Firebase, а также Fastlane легко интегрируется в CI, что позволяет вам один раз писать скрипты и использовать их везде, где хочется. 👌
❤6👍2
Inline, noinline в Kotlin
#android #новичкам
Полезная и краткая статья, где описывается разница между такими непонятными для новичков ключевыми словами как inline, noinline, crossinline, reified в Kotlin.
Круто, что автор даёт для каждого из ключевых слов небольшой пример кода, так что разобраться можно довольно быстро. Ну а если недостаточно — дока Kotlin весьма неплохая.
#android #новичкам
Полезная и краткая статья, где описывается разница между такими непонятными для новичков ключевыми словами как inline, noinline, crossinline, reified в Kotlin.
Круто, что автор даёт для каждого из ключевых слов небольшой пример кода, так что разобраться можно довольно быстро. Ну а если недостаточно — дока Kotlin весьма неплохая.
👍11🥰5❤1👎1🥴1
Auto-archive для aab
#android
Иногда пользователи удаляют приложение по причине нехватки места на устройстве. Под удаление может попасть любое приложение 😔 Однако, тут появилась фича, которая позволит пользователям не удалять, а "архивировать" приложения, чтобы можно было и сохранить место, и не удалять пользовательские данные.
🤫 Как это работает?
В момент, когда пользователь пытается удалить приложение, появляется окошко, которое предлагает архивировать приложение вместо полного удаления. Есть пара условий, чтобы всё заработало:
- вы должны выкладывать приложение через aab;
- приложение должно поддерживать архивирование;
К сожалению, не уверен, что фича будет работать в случае, если пользователь удаляет приложение из системы, но может быть эту фичу добавят в одной из будущих версий Android. Тут можно почитать больше деталей об архивации.
#android
Иногда пользователи удаляют приложение по причине нехватки места на устройстве. Под удаление может попасть любое приложение 😔 Однако, тут появилась фича, которая позволит пользователям не удалять, а "архивировать" приложения, чтобы можно было и сохранить место, и не удалять пользовательские данные.
🤫 Как это работает?
В момент, когда пользователь пытается удалить приложение, появляется окошко, которое предлагает архивировать приложение вместо полного удаления. Есть пара условий, чтобы всё заработало:
- вы должны выкладывать приложение через aab;
- приложение должно поддерживать архивирование;
К сожалению, не уверен, что фича будет работать в случае, если пользователь удаляет приложение из системы, но может быть эту фичу добавят в одной из будущих версий Android. Тут можно почитать больше деталей об архивации.
👍9
Jetpack Compose Lectures
#android
Вы могли пропустить, а ребята из Android Academy выпустили подробный курс про Jetpack Compose. Выглядит прям 🔥
Курс подойдёт для всех, кто только думает тащить Compose в проект (ну или хочет посмотреть, что за зверь такой), а также для тех, кто только начал изучать его.
Тут 8 видео с теоритей, и 8 видео с лайв-кодингом. Ссылка на весь курс тут.
Ребята делают полезное дело, так что не скупитесь на лайки. 🤫
#android
Вы могли пропустить, а ребята из Android Academy выпустили подробный курс про Jetpack Compose. Выглядит прям 🔥
Курс подойдёт для всех, кто только думает тащить Compose в проект (ну или хочет посмотреть, что за зверь такой), а также для тех, кто только начал изучать его.
Тут 8 видео с теоритей, и 8 видео с лайв-кодингом. Ссылка на весь курс тут.
Ребята делают полезное дело, так что не скупитесь на лайки. 🤫
❤36