Telegram Web
2️⃣0️⃣2️⃣2️⃣

Быть может для многих 2021 год был не самым успешным и столько неопределённости в мире ещё остаётся 🤪

Но в мире Android произошло много крутых событий, о которых вам рассказывал канал @android_live.
За этот год вышло несколько сотен постов, где каждый находил то, что полезно ему: будь то новичок или senior с годами опыта. 🤟🏻

Пусть следующий год принесёт ещё больше позитивных новостей и в разы меньше негатива. Друзья, всем крутых проектов, лучших людей рядом и крепчайшего здоровья 💫

С Новым годом от автора Android Live! 🎄
🎉73👍10🔥108
​​Kotlin Multiplatform Wizard
#kmm

Тут обновился Kotlin Multiplatform Wizard, и теперь тут стало ещё больше плюшек: можно выбрать нужные для проекта таргеты, настроить основные библиотеки для проекта, package name и прочее. Очень удобная штука, поэтому если начинаете свои проекты на KMM, то самое время сохранить страничку в закладки.

Кстати, авторы не против новых изменений от вас, так что если чего-то нет, то создавайте свои PR.🤘
🔥9👍42👎2
​​Jetpack Compose в существующий проект
#jetpack #compose

Статья, где автор делится своим опытом внедрения Jetpack Compose в текущий проект.
Для начала этого пути, он выбрал смену одной из главных кнопок в проекте и заменил её на Composable-функцию.

Думаю, что статья будет полезна новичкам в Compose, которые только-только стоят на пути изучения этой крутой технологии и внедрения её в свои проекты.
👍3
​​ShapeableImageView
#android #view

При разработке приложений, довольно часто нужно придавать различную форму ImageView. Самая распространённая — это круглая, которая зачастую используется для аватарок или в профилях.

Путей решения много: например, кастомная View или же библиотеки, но я только недавно узнал, что есть нативное решение из компонентов Material.

Все что нужно — это использовать com.google.android.material.imageview.ShapeableImageView и применить нужные атрибуты: это и форма, и обводка, и радиус для углов. В общем, крутая штука прям из коробки. Чуть больше деталей можно посмотреть тут.
🔥26👍2🤩1
Немного оффтопа на канале. Я сейчас в небольшом и уютном турецком городке Каш, где очень много русскоговорящих ребят с IT.

Вдруг кто-то из подписчиков тоже тут: буду рад встретиться и пообщаться за чашечкой вкусного кофе ☕️.

Пишите в личку, если надумаете.
👍9
​​Kermit and Crashlytics
#kmm

Полезная статья, которая рассказывает о том, как собирать краши на iOS и Android в KMM-приложениях при помощи Kermit.

На практике, сохранение стектрейса при падении приложения на iOS — не самая простая задача, если вы хотите также видеть место в Kotlin-коде, которое связано с падением. При помощи описанного логгера получается сохранить стектрейс, но только в качестве отдельного non-fatal краша.

Лучше, чем ничего: тем более, что каких-то других минусов в библиотеке не обнаружено.
👍7
​​Jetnews на каждом экране
#jetpack #compose

Интересная статья, которая будет полезна всем, кто работает с Compose и хочет адаптировать своё приложение под разные размеры экрана.

Автор делится несколькими пунктами, которые будут полезны. Например, есть функция для запоминания размера экрана, на основе которой можно строить будущий интерфейс приложения. Также интересно то, как лучше настроить навигацию в случае, если приложения разделяется на несколько колонок.

В целом, адаптация приложения под большие экраны — не выглядит чем-то сильно сложным и критичным. Но если у вас есть отличный опыт, то делитесь в комментариях.
👍1
​​GDG Minsk — Meetup
#meetup

Тут ребята из GDG Minsk делают онлайн Android Meetup. Вот темы и спикеры:

1️⃣ Анна Жаркова, Lead mobile developer, Kotlin GDE, Usetech — расскажет о том как использовать WorkManager API для эффективной фоновой работы, как заменить Foreground Service Expedited Jobs и настроить миграцию с учетом нюансов. Актуально, ведь устройств на последнем Android всё больше.

2️⃣ Павел Стрельченко, Android-разработчик core-команды в hh.ru — расскажет о переходе кодовой базы hh на ViewBinding с помощью плагина для Android Studio.

Зарегистрироваться можно тут, а можно сразу сохранить ссылку на трансляцию.

Мероприятие пройдёт 31 января в 19:00 GMT+3, оно бесплатное и на русском языке. Готовьте ваши вопросы спикерам, ещё есть время 😉.
👍9
​​Загрузка больших изображений в RecyclerView
#tips

Думаю, что не мне вам объяснять важность плавного скролла в приложении. Часто он может проседать в ситуациях, когда изображения в элементах списка — большие.

Автор статьи решил решить эту проблему при помощи кастомного RecyclerView Scroll Listener, в котором описал метод для того, чтобы ставить на паузу и возобновлять загрузку только тех изображений, которые видны пользователю.

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

В общем, если у вас нет возможности оптимизировать изображения, этот совет может вам помочь.
👍6
​​Android Studio Bumblebee
#android

Тут прилетел новый финальный релиз Android Studio под названием Bumblebee 🐝.

Вот некоторые из новинок:

1️⃣ New Device Manager — добавили вкладку, где можно более удобным способом менеджерить устройства, подключенные к Android Studio.

2️⃣ ADB over Wi-Fi — упростили подключение и дебаг приложений при помощи Wi-Fi. Теперь достаточно просто отсканировать QR-код и девайс будет подключен к дебагу.
Штука удобная, правда не уверен, что часто будет использоваться в повседневной работе.

3️⃣ Новый Test Runner — добавили возможность запуска тестов для инструментальных тестов, который призван убрать проблему, когда они по-разному запускались на устройстве или CI.

4️⃣ Улучшения в профайлере — добавили новых метрик для профайлинга: Frame Lifecycle: Application, Wait for GPU, Composition и Frames on display. Ещё появился Junk Detection, который позволит лучше дебажить ситуации, когда есть просадки в производительности.

5️⃣ Улучшили Background Task Inspector, где теперь можно дебажить Jobs, Alarms и Wakelocks.

6️⃣ Добавили всякие штуки для дизайна — сделали превью векторных анимаций, поправили превью Compose.

Билд получился хороший, я обновился и вроде даже ничего не поломалось 🤞🏻, так что смело пробуйте. Больше деталей про обновление можно найти тут
👍22🔥3😱1
​​GraphQL в Android для начинающих
#android #новичкам

Интересная статья, которая рассказываем о применении GraphQL в Android с самого начала.
Автор делится своими размышлениями о том, что такое GraphQL, какие есть преимущества над обычными REST API, а также что выбрать для того, чтобы добавить эту либу в своё приложение.

Крайне рекомендую, ведь инструмент очень полезный.
👍4
​​Understanding Gradle - The Fundamentals
#новичкам #gradle

Gradle частенько вызывает непонимание не только у новичков, но и у опытных разработчиков. Ведь сама структура файлов отличается от той, что мы привыкли видеть в проекте, да и язык программироания может отличаться, если говорить о groovy.

Вот вам годный курс о том, как использовать Gradle в проекте. И тут можно встретить всё, что нужно, начиная от именования файлов и ресурсов и заканчивая написанием собственных тасок и публикацией своих библиотек.

Отличный курс для новичков, не так часто встретишь что-то действительно хорошее в видео формате.
👍15🔥4
​​Высокая производительность с Kotlin
#kotlin

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

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

Вот вам статья, где автор рассказывает о том, что в себя включает понятие «производительность», на какие вещи стоит обратить внимание нам, а также какие средства языка Kotlin использовать, чтобы писать более эффективный код.

Советы крутые, можно найти для себя полезные штуки 🔥.
🔥7👍2
​​Jira на Github Actions
#cicd

Я тут последние несколько дней активно вникаю в тему настройки CI на Github Actions, и был удивлён, что в Jira нельзя передвинуть несколько задач одновременно, если вы каким-то образом получили этот список из вашего PR.

Ребята из Attlassian молчат, а таски двигать хочется, поэтому делюсь с вами кастомным решением.

Если посмотреть, что делается под капотом этого Action, то по сути — это вызов API и совершение парочки запросов для того, чтобы передвигуть задачку. Свой Action писать не хотелось, поэтому решил написать свою gradle таску, которая сделает всё за нас.

1️⃣ Для начала, выполните запрос:
GET https://domain.atlassian.net/rest/api/3/issue/TASK-123/transitions,
чтобы получить идентификатор колонки, в которую вам надо перекинуть задачу. Нам надо поле id, а чтобы выполнить запрос — необходимо создать пароль в настройках и авторизоваться в Headers через Base Auth.

2️⃣ Создаём таску в gradle, а в неё передаём список задач и токен для авторизации будущих запросов, например так:
def taskNumbers = project.properties['items'].split(',').toUnique()
def jiraToken = project.properties['jira_token’]
.

Лучше передать сразу base64 от нашей базовой авторизации, а сам токен хранить в secrets на вашем CI.

3️⃣ Выполняем запрос:
for(taskNumber in taskNumbers) {
def body = "{ \"transition\": { \"id\": \"$transactionId\" } }"
def req = new URL("https://domain.atlassian.net/rest/api/3/issue/TASK-$taskNumber/transitions").openConnection()
req.setRequestMethod("POST")
req.setRequestProperty("Content-Type", "application/json; charset=UTF-8")
req.setRequestProperty("Authorization", "Basic $jiraToken")
req.setDoOutput(true)
req.getOutputStream().write(body.getBytes("UTF-8"))
println "Status code: ${req.getResponseCode()} for task $taskNumber"
}


Если вы всё сделали правильно, то вы получите 204 код и ваша задача перейдёт в нужную вам колонку. 😌

Дальше можно выполнить эту таску на CI:
./gradlew moveJiraTasks -Pitems=123,456 -Pjira_token=token

Полный текст таски можно взять тут.
👍11
​​JankStats Library
#library

Тут появилась любопытная библиотека от Google для анализа производительности приложений — JankStats.

Суть библиотеки заключается в получении информации о производительности рендеринга внутри приложения и получения информации о каких-то проблемах, если они есть.
Под капотом используется в том числе FrameMetrics API, которое как раз и даёт информацию о том, сколько времени нужно было для отрисовки конкретного кадра.

Выглядит довольно интересно, но пока тащить в свой проект рановато, так как эта только первая альфа. Подробнее о том, что делает либа можно почитать тут, а чуть больше документации тут.
👍11
​​Ruler от Spotify
#tools

Тут ребята из Spotify поделились любопытной наработкой для определения размера текущего apk-файла и его детального анализа.
Вообще размер apk — довольно важная метрика для приложения, ведь далеко не везде есть дешёвый и стабильный Интернет, поэтому потенциальные пользователи могут запросто отказаться от загрузки приложения, если его размер будет слишком большим.

Сейчас самыми распространёнными решениями для анализа размера приложения являются встроенный анализатор в Android Studio и Diffuse. Однако, они могут давать довольно поверхностную информацию, если ваше приложение состоит из большого числа модулей, как это было в случае со Spotify.

Альтернатива — их собственное решение, которое называется Ruler. Выглядит всё довольно хорошо: на выходе получается html-страничка с детальной информацией о состоянии приложения, учитываются модули и разные бандлы для конкретной версии устройства.
🔥10👍4
​​Контракт для работы Android и Design команд
#design

Лайтовая статья, где автор делится советами для организации работы команды дизайнеров и разработчиков.

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

Советы довольно простые в использовании, но экономят кучу времени. Ссылка на статью тут.
👍6👎1
​​Kotlin Multiplatform — ATOM
#kmm

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

Обсуждают изменения в KMM за последний год, Compose, планы по выходу в бета и другие фичи, так что выглядит весьма здоровски.
👍9
​​Процесс сборки Android
#android

Довольно хороший набор статей, где автор делится о том, как происходит процесс сборки ваших приложений под Android: как устроена компиляция ресурсов приложения, исходного кода, оптимизация ресурсов и т.д.

Вдогонку — отличная статья, где автор говорит о том, что происходит в системе Android, когда пользователь нажимает на кнопку открытия приложения.
👍17
2025/08/27 16:55:57
Back to Top
HTML Embed Code: