Telegram Web
​​Play Console updates for app's delivery performance
#google #android

Недавняя статья, где Google рассказывает о неочевидных, но полезных разработчикам фичах, которые можно взять из Google Console. По большей степени они связаны с aab-форматом релиза.

1️⃣ Release delivery — при загрузке релиза вы можете увидеть примерный размер загружаемого приложения у пользователей, а также сравнение с предыдущим релизом.

2️⃣ Feature modules — если вы используете такие фичи, как Play Asset Delivery или Play Feature Delivery, то информацию о том, как они загружаются пользователями, можно увидеть на странице статистики.

3️⃣ Freshness — раздел статистики, который показываем вам, как быстро пользователи мигрируют с одного релиза на более новый. Если вдруг эта метрика слишком низкая, то можно использовать In-app updates API.

4️⃣ Детали по конкретному девайсу — можно определить, какой размер файла скачивается на конкретном устройстве.

Чуть больше фич, а также скриншотов можно найти непосредственно в статье.
👍4
​​Object expressions и declarations
#kotlin

Недавно обнаружил для себя несколько интересных применений object в Kotlin. Как ни странно, обо всех сказано в официальной документации, но на практике я не часто встречал их применение.

1️⃣Создание анонимного класса с нуля. Вдруг у вас будут кейсы (если подскажите, какие, то буду рад), когда вам необходимо создать объект с нуля без объявления класса. Вот пример:
val helloWorld = object {
val hello = "Hello"
val world = "World"
// object expressions extend Any, so override is required on toString()
override fun toString() = "$hello $world"
}


А ещё можно сделать вот такие мудрёные конструкции:
open class A(x: Int) {
public open val y: Int = x
}

interface B { /*...*/ }

val ab: A = object : A(1), B {
override val y = 15
}


2️⃣ Object как Singleton — довольно распространённый кейс, когда вы делаете аналог синглтона Java в Kotlin.

3️⃣ Data objects — экспериментальная, но любопытная фича, позволяющая делать так:
data object MyObject

fun main() {
println(MyObject) // MyObject
}


А посмотреть все применения Object можно как раз в статье. 🤓
👍12
​​Жизнь в Нидерландах 🇳🇱
#интервью #экспаты

На канале иногда выходят интервью с разработчиками, которые переехали жить и работать в другие страны. Сегодня у вас есть возможность задать свой вопросы про Нидерланды 🇳🇱.

Наш гость — Георгий Могелашвили — engineering manager в Shopify и основатель сервиса поиска наставников GetMentor.dev.
Георгий, переехал в Нидерланды из Москвы 8 лет назад, живет в Харлеме (Х, не Г), но до сих пор не выучил голландский язык. 🙂

Ваши вопросы вы можете задать тут, так что не упустите эту замечательную возможность. 🙃
🔥11💩8😁1
​​Android 13. Выбор кастомного языка
#android

Ребята из Google решили добавить одну из самых запрашиваемых (по их статистике, конечно) фичу — выбор отдельного языка для приложения.

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

Для разработчиков всё не очень сложно. Надо будет добавить locale_config.xml в приложение со списком поддерживаемых языков, обновить библиотеки androidx до последних версий и взять инфу о выбранном языке.

Больше деталей о фиче можно взять тут.
👍18👎1
​​Прокачиваем build scripts
#android

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

1️⃣ Version catalog — не все знают об этой фиче, но её можно использовать как отличный вариант для управления зависимостями проекта. Для неё нужно использовать специальный файл с расширением toml, где описать версии для каждой из зависимостей проекта.
Правда, пока плохо работают подсказки Android Studio об устаревших зависимостях, вероятно стоит подумать о плагине типа этого.

2️⃣ Android application plugin — тоже удобная штука, которая позволяет вынести повторяющиеся части gradle-файлов в один плагин и применить его к остальным модулям. Автор описывает пример с minSdk, compileSdk и т.д. в плагине, но вы можете вынести те части, которые нужны именно вам.

3️⃣ Kotlin plugin — описанные плагины можно писать на Kotlin с его плюшками, в статье тоже найдётся пара примеров, которые помогут в написании своих. 🤓
🔥8👍2😱1
​​Memory Safe Languages in Android 13
#android

Любопытная статистика от Google по использованию разных языков программирования в Android.
Говорят, что на протяжении последних десяти лет, 65% всех уязвимостей в Android и Chrome были связаны с безопасностью памяти.

В последнее время тенденция улучшается, ведь Google слезает с небезопасных по памяти языков, а 2022 год стал первым годом, когда основная доля уязвимостей была связана не с памятью.
Ещё с Android 12 есть поддержка Rust, как безопасная по памяти альтернатива C/C++, и есть довольно мощный скачок в его использовании в последних версиях Android.

Статья получилась объёмной, внутри много графиков и любопытных выводов, рекомендую почитать.
👍12
​​Как должен выглядеть идеальный 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;
🎯 возможность выполнять несколько задач одновременно;
🎯 и передавать большие объёмы данных;

Я бы пока не рискнул тащить это в боевой проект, потому что 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 успешного релиза и с нетерпением ждём анонса. 👍
🔥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
2025/08/25 14:37:11
Back to Top
HTML Embed Code: