Invalidate cache & restart
505 subscribers
10 photos
1 video
24 links
Это поможет.

Про Android, собеседования и серые будни.

Автор — @nonewss, Staff Engineer в Reddit & Android GDE
Download Telegram
Channel photo updated
Зачем этот канал?

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

При этом, далеко не всегда эти мысли вмещаются в одном твите.
В то же время, они не дотягивают до формата полноценной статьи.
Все эти мысли — навсегда теряются в недрах памяти.
Этим каналом я хочу закрыть эту дыру.

Что вам это даст?

Вы точно сможете узнать что-то новое.

Даже если нет — этот канал однозначно будет согревать вашу душу холодными зимними вечерами одним своим названием в вашем списке чатов
👍6🤮1🤡1🤣1
Ограничиваем время выполнения Unit-тестов

Несколько раз замечал, что сборки PR-ов на
TeamCity
падают по таймауту самой джобы. (У нас это 1h30m)

Оказалось, в обоих случаях, разработчики коммитили unit-тест, который фактически никогда не завершается.
В большой команде и при ограниченном количестве билд-агентов, это может сказаться на общей производительности инженеров

Решение

Ограничить время выполнения каждого теста.
Круто, что
JUnit5
позволяет сделать это централизованно через
systemProperty
👍1
Сколько весит приложение ?

После полного перехода на AppBundle, стало намного сложнее понять финальный размер приложения в Google Play.

Всэ зависит от ABI, плотности экрана (от котороой зависит выбранные ресурсы) и даже локалей, поддерживаемых на устройстве.
Все они представленны в виде отдельных apk, запакованных в bundle, с использованием bundletool под капотом.


Как узнать размер приложения?

bundletool отвечает не только за упаковку, но и за обратную распаковку, которая используется в Google Play.

За пару команд, мы можем раздробить bundle на все apk-шки и узнать вес, в зависимости от ABI, ресурсов или локалей, как показано на картинке.

По статистике, максимальный размер у arm64-v8a с xxxhdpi
👍5
Основы Gradle

Как правило, Gradle, это то, что многие предпочитают избегать. (Не считая добавления зависимостей)

Собственные таски/плагины могут сильно помочь автоматизировать рутину, особенно в больших проектах.

Нашёл довольно неплохой плейлист из 17 коротких видео, который поможет вам разобраться с основами
10👍3👎1
Не одним ViewModel и Jetpack едины

Вчера выложили в open-source фреймворк Kompot, с помощью которого мы ведём разработку во всех продуктах в Revolut.

Unidirectional data flow со строгими контрактами (Input + Output), Screens, Flows, Navigation всё это позволяет забыть даже про fragments с activity, и держать фокус на главном — разработка фичи
👍8👎1
Gradle Catalog: Bundles

Gradle Catalog позволяет группировать зависимости и подключать их одной декларацией.
Однако, bundle работает только с библиотеками. Подключить нужные плагины таким образом не получится
👍5👎1
Хватит использовать ResourceProvider во ViewModel

Написал небольшой пост про то, какие проблемы и альтернативы есть у использования класса-обёртки над appplicationContext в Presenter/ViewModel, для работы со строками
👍243👎1🙏1
Gradle открыл регистрацию на серию бесплатных тренингов на январь.

Лично посещал тренинги по Build Cache и Dependency Management, весьма хорошее погружение с неплохой практикой
👍14🔥1
Недавно выступал на Londroid, где рассказывал про все типы кеша в Gradle и практики, которые позволяют улучшить и держать build time в тонусе.

Презентация
Видео
👍16🔥6👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Прошло довольно много времени с тех пор, как я последний раз создавал кастомную вью. (Да что говорить, за 7 лет я написал всего несколько, чтобы прям по серьёзке, onMeasure/onLayout/onDraw и всё такое)

В прошлые выходные, я снова засел за изучение Jetpack Compose и попробовал сделать DonutChart (кстати, его можно вполне легко конвертировать в PieChart, поменяв useCenter на true и style на Fill у drawArc).

В старом способе создании вью, имплементация скорее всего выглядела бы так же, т.к. математические расчёты (самая сложная часть процесса для меня) — не меняются.
🔥13👍6