September 23

Layout Inspector, который не лагает

Довольно давно пользуюсь Flipper Layout Plugin. Это мощный инструмент, который может отображать семантическое дерево и даже позволяет редактировать параметры View. C ним было удобно найти разного рода баги, проследить какая ViewGroup отвечает за размеры контента, как прокидываются паддинги, как применяются insents и прочее.

И вот в один день в мае пришел ко мне коллега, которому я до этого рекомендовал Layout Plugin, с новостями о том, что появился плагин для Compose. Оказалось, что они сделали его еще в прошлом году. Я бросился изучать как именно и что они сделали. В общем не увидел какого-то Rocket Science, а скорее код, который ранее уже видел в исходниках Layout Inspector в Android Studio. Вот например, LayoutInspectorThree, где они вытаскиваю SemanticsNode. И тот же класс в коде AS. Или, например, RecompositionHandler, который хукает виртуальную машину ART для подсчета количества рекомпозиций и пропусков. Вот он в исходниках AS.

В любом случае, все выглядело круто. Даже если код скопирован, есть шансы на то, что этот инструмент гибче и его можно сколько угодно допиливать, так как под рукой все SemanticsNode, а там можно и все Modifier.Node вытащить. Поэтому надо пробовать запустить. Но, к сожалению, первая попытка не увенчалась успехом:

Видимо, часть кода они скопировали, а часть вынесли в виде aar. Я так понял, что это локально собранная версия этой библиотеки, но поновее, так как, если заменить библиотеку механизмами Gradle, то при сборке не найдутся некоторые классы. Я не перый, кто пытался запустить этот плагин, но с тех пор, как его сделали, во Flipper не очень-то и хотели его развивать. Ну так может показаться по issues, которые висят, и по отсутствию новых коммитов.

В тот раз остановился на этом месте и мне было лень дальше пытаться запустить его :) Да, надо было просто опубликовать нормальную версию библиотеки inspection или скачать aar из их репозитория и подключить так. Но, с учетом того, что я пропал на несколько месяцев, времени для этой авантюры не нашлось...

И вот недавно тестировал еще один инструмент, о котором напишу отдельно, и решил проверить его тут. Опять же, для этого надо было просто опубликовать недостающий aar и наконец запустить, ибо Layout Inspector уже невозможно терпеть. Честно сказать, был приятно удивлен тому, как это быстро работает и не лагает.

https://github.com/flipperdevices/Flipper-Android-App

Рекомендую самим попробовать. Держите инструкцию как подключить плагин и там же пример проекта с ним.

Опубликовано в Полуночные Зарисовки