Начнем неделю. Сегодня расскажу про сборку приложения.
Будет много капитанства, но это стоит проговорить для полноты картины. #день1из7
Начать хорошо бы с официальных рекомендаций
- developer.android.com/studio/build/o…
- guides.gradle.org/performance/
Они обновляются под новые версии. Если давно не заглядывали, то самое время освежить.
Используем последние версии AGP, Gradle и всех тулзов с кодогенерацией.
Насколько свежие? Выбираем подходящий для команды баланс между стабильностью и новыми фичами.
Вчитываемся в changelog и пробуем.
"Сделать ли мне "Х", ускорит ли сборку?" - на такой вопрос нет однозначного и простого ответа.
Это гипотеза. Чтобы ее проверить, надо представлять как это работает внутри. Чем лучше мы понимаем внутренности работы, тем более эффективные модели получается строить.
А что собственно ускоряем? Надо найти где болит и научиться это измерять. Используем github.com/gradle/gradle-….
Сценарии должны отражать типовые изменения в проекте и покрывать оптимизации в системе сборки (изменение ABI, инкрементальность, чистые сборки и т.п.).
Такие проверки дорогие, поэтому запускаем их уже в develop. Это дает понимание трендов и ловит только очень крупные изменения.
Основная ценность готовых сценариев в другом. Мы упрощаем себе проверку подозрительных изменений, которые влияют на сборку.
Выносим сборку на более мощную машину: github.com/Instamotor-Lab…
Для мелких изменений иногда медленнее получается, дольше ждем синхронизацию файлов.
Также при изменении структуры модулей может сломать модели проекта для IDE, приходится все чистить.
В целом есть смысл пробовать.
Для поиска узких мест - build scan scans.gradle.com. Визуализация решает, да и типовые проблемы подсвечивают явно.
Большую часть информации можно достать самостоятельно, через API. Завтра про это подробнее.
Свежее видео с Droidcon Berlin 2019: droidcon.com/media-detail?v…
Новый день - новые баги. А ведь только похвалил build scan. Говорят, что слишком много данных засылаем. Видимо это толстый намек на покупку Gradle enterprise.
Пару слов про remote cache. Его легко настроить, но все веселье начинается потом. Хорошо если есть Gradle enterpise и он покажет корень проблемы. Но если нет, нужно самому искать.
RTFM: guides.gradle.org/using-build-ca…. С большинством описанных проблем уже столкнулись. А сейчас примеры:
Прогреваем remote cache на linux (docker) и в OSX, потому что есть баги с переносимостью кеша между ОС (issuetracker.google.com/issues/1267752…)

Написали гит хук, который подчищает пустые директории. Ломалось кеширование после рефакторинга (youtrack.jetbrains.com/issue/KT-27687)
Как одна оптимизация ломает другую или еще один пример, почему не стоит их включать без проверки (youtrack.jetbrains.com/issue/KT-31511)

Вручную проверяем параметры окружения, версию build tools, не можем зафиксировать (issuetracker.google.com/issues/1177897…). Это тоже нужно для переиспользования кеша.
И мой любимчик в номинации "веселой отладки, неудачники" thoeni.io/post/macos-sie…

Вот такие трудовые будни. Надеюсь удалось передать почему простые советы плохо работают и нужно разбираться в причинах.
Просто обязан упомянуть замечательный выпуск @PodlodkaPodcast c @artem_zin : podlodka.tilda.ws/87

Сразу огворюсь, с bazel мало знаком, не могу по существу сравнивать. Затронем еще эту тему при обсуждении CI.
@PodlodkaPodcast @artem_zin Если уже попробовали все простые оптимизации и хочется немного уличной магии:

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Мобильный разработчик

Мобильный разработчик Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @mobileunderhood

Feb 11, 2022
Сегодня будет про тулинг:
- Первое что ставлю на свежий ноут
- Консольное
- IDE
- Проект
Пишу этот тред уже второй раз, потому что твиттер решил, что нужно меня разлогинить посередине процесса. Попробую чаще "сохраняться" Image
На macOS я перелез потому что на работе выдали ноут с ней. До этого сидел на ArchLinux с тайлингом (i3wm, а после SwayWM).
Поэтому пытался приблизить интерфейс к привычному.
Read 51 tweets
Jan 28, 2022
Пятница! Сегодня пробежимся по основам цветовой палитры Material Design. Image
Перед тем, как прыгать сразу в детали, подумаем: зачем нам нужно знать эту палитру? Image
Во-первых, понимание цветовой палитры Material очень упрощает жизнь в некоторых случаях. Откуда взялся этот цвет? Откуда берутся цвета у вьюхи без явно указанных стилей? Это всё из палитры вытекает
Read 30 tweets
Nov 6, 2021
Первое впечатление от Германии - тут всё законно, официально, по контрактам, дорого, долго, качественно
Второе впечатление - как же все долго и сложно
Запись к врачу только через 2-3 месяца. Платная медицина слишком дорогая для обычного разработчика
Read 29 tweets
Nov 4, 2021
Итак, начинаем тред под кодовым названием "Как переехать в Европу и не порвать ж"
С 18 лет, после того как съездила к сестре погостить в Нью-Йорк на лето, я мечтала переехать "за границу"
Люди, которые находят работу за границей, это гении, а кто я такая? Я обычная, мой потолок - галера в провинциальном городке
Read 28 tweets
Nov 4, 2021
С добрым утром! Сегодня Аня-старший-разработчик в отпуске, в эфире Аня-авантюрный-путешественник 🚲
Набрала с собой фототехники, как будто еду не в Никола-Ленивца, а в горы Дагестана
За жизнь в Германии Европа так приелась, что хочется диких джунглей, заброшенных городов древних цивилизаций, острого карри с рук индуса
Read 10 tweets
Oct 17, 2021
Так в чём, собственно, разница между программистом, разработчиком и инженером?
Если коротко, то программист пишет код. Ему дают чёткие задачи и он их выполняет.

Разработчик разрабатывает продукт. Он участвует в разработке спецификаций, дизайнов и прочего. И кодит

Инженер делает сложные штуки, копается в самой сути и использует свои знания на полную.
Смотреть на эту градацию можно по-разному.

С одной стороны можно смотреть на неё, как на карьерный рост. Сначала тебе говорят, что делать, потом ты участвуешь в том, чтоб говорить себе, что делать, а потом ты уже настолько умный и опытный, что можешь делать супер сложные штуки
Read 33 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(