Исходя из названия, ожидал увидеть в статье описание технических проблем с которыми столкнулись ваши инженеры. Обычно компании рассказывают именно об этом, т.к. это повышает количество просмотров других разработчиков и, возможно, привлечет новых людей к вам в компанию.
Нельзя оценить выразительность языка в полной мере, если рассматривать неудачные примеры. К сожалению, у вас в статье описанные возможности и правда используются не по назначению. Единственного apply было бы достаточно.
Это может звучать как перебор, но можно использовать include и передавать изменяемые параметры через те же databinding. Хотя стили для ViewGroup так не задать, конечно.
Делаю у себя в проекте именно так как вы описали (включая дефолтные значения), работает прекрасно. Используются дополнительные адаптеры, но в сумме выглядит, на мой взгляд, аккуратно и без лишней неявности. В xml задается примерно так (Color — enum c доступными для изменения цветами, colorScheme — map со значениями цветов):
Чтобы не быть голословным, вот здесь написано, что runtime-разрешения добавили в 6 версии. Я слышал, что механизм был в андроиде чуть ли не с KitKat, но не был доступен официально. Скорее всего у вас все-таки некая надстройка от создателей прошивки.
Пара скриншотов взята как раз из Keep. Он определенно точно не запрашивает вообще все нужные ему разрешения при старте, некоторые запрашиваются в процессе работы, в этом и суть нового api.
Если не ошибаюсь, я даже видел отдельные приложения (или модуль для Xposed), реализующие это.