У проекта Anko, призванного улучшить Android-разработку на Kotlin, более 15 000 звёзд на GitHub, то есть это одна из самых известных Kotlin-библиотек. Однако теперь было официально объявлено о прекращении работы над ней.
Компания JetBrains представила эту библиотеку в 2015-м, когда Kotlin ещё не был официально поддерживаемым языком разработки для Android, но отдельные мобильные разработчики уже им заинтересовались. Исходным назначением Anko была удобная работа над UI прямо в Kotlin-коде (а не в отдельных XML-файлах). Позже, помимо этого, активно обратились и к другим Android-задачам: например, к работе с SQLite.
Библиотека привлекла внимание разработчиков и попала во многие приложения, в какой-то степени поспособствовав успеху Kotlin на Android. Однако, как признают в прощальном тексте её создатели, полностью воплотить идеи не удавалось из-за ограничений платформы и дефицита ресурсов. А тем временем в Android-разработке многое изменилось: для работы с SQLite компания Google представила новый инструмент Room, для работы с UI — Jetpack Compose, для различных других задач — Android KTX.
В результате сложилась ситуация, когда Kotlin стал приоритетным языком Android-разработки, но поспособствовавшая этому библиотека не разделила с ним успех, а становилась всё менее актуальной. Её разработка соответствующим образом затухала, и с февраля 2019-го в проекте не было ни одного коммита. Поскольку Anko по-прежнему используется, сообщество задавало вопросы о будущем проекта. И теперь получило ответ: прекращение работы над проектом, де-факто уже произошедшее, было закреплено официальным сообщением.
Если по такому поводу хочется поностальгировать — можно посмотреть доклад с Mobius 2016 года от Яна Жуланова (основного разработчика Anko), частично посвящённый этой библиотеке. На момент этого выступления и Kotlin, и Anko в мире Android были многообещающими новичками.
samodum
Не прошла проверку временем. Оно и к лучшему.
Совершенно непонятно кому пришло в голову писать вёрстку в коде, да ещё сделать это модой
Neikist
Да в идее то ничего плохого. Мне тот же флаттер приятнее xml в андроид, тем более это производительнее. Просто реализовано было все как то… не цепляюще.
Впрочем это не самая большая часть anko была насколько помню.
phillennium Автор
Я лично не фанат вёрстки в коде, но вообще-то видно, что она многим нравится: Google в Jetpack Compose тоже обещает светлое будущее без XML, и прямо сейчас в Android-чатах вижу стоны «анко придётся выпиливать, но возвращаться к XML страшно не хочется, скорее бы Compose доделали».
Так что как раз вёрстка в коде, похоже, проверку временем проходит.
prs123
Интересно, а как тогда передать UI-дизайнеру делать верстку, если не в xml?
Он же не программист и в голове крутить то, как отображаются элементы, описанные в коде, довольно сложно
Поэтому, мы как раз плотно используем xml. Дизайнер копается в XML и его редакторе, разработчик-программист — пишет код, посматривая на xml для изучения структуры и Id элементов
zagayevskiy
Дизайнер рисует макеты, разработчик их воплощает.
prs123
Ну рисовать макеты и я могу. А вот воплотить это дело в верстке, со всеми отступами, тенями и прочим — не-не. Более того, при вёрстке с помощью xml можно моментально посмотреть, не ожидая сборки приложения
STFBEE
С предпросмотром верстки на Anko проблем нет: medium.com/mindorks/how-to-preview-dsl-layouts-made-using-anko-layouts-f885c6bf67b3
prs123
И все равно нужно собирать проект каждый раз. Из Вашей ссылки:
"Now this might not work in the first go as we need to rebuild the project for the layout to render properly."
И, как понимаю, здесь можно только посмотреть. А перемещать и менять вложенность элементов — нельзя
prs123
Достаточно html/css и xml. Причем правила верстки у них несколько схожи.
Если не знать то, каким образом это вообще верстаться будет, то макет вообще никак не сможет быть воплощён в реальность
zagayevskiy
Ага, а потом Android Studio ломается на больших проектах и бесконечное «Waiting for build to finish...» на просмотре вёрстки.
Андроид-разработчик обязан уметь наверстать то, что ему нарисует дизайнер. Дизайнер должен пользоваться своими привычными инструментами и лезть в xml ему вообще незачем. Достаточно отдавать макет в Zeplin/Figma.
prs123
Ничего не ломается. У нас конечно, не гигантский-гигантский проект, но достаточно большой и имеющий несколько модулей. Да, конечно, иногда после запуска студия может показать это уведомление на секунд 10, но это пока файлы в основном индексируются. И да, машина отнюдь не с 32 Гб памяти, а 8
zagayevskiy
У вас не ломается, а у нас ломается. В целом — ломается.
SteelJames
Сразу видно, что вам не доставался проект, написанный на Anko другими программистами.
Одно дело писать самому, когда понимаешь как всё должно выглядеть и работать. И совсем другое дело — разбираться в чужой вёрстке, написанной кодом. В XML-раз и посмотрел вёрстку, цвета, шрифты, размеры, положение элементов относительно друг друга. А с Anko приходится самому рендерить в голове. Производительность падает до нуля.
zagayevskiy
Сразу видно, что вы не писали проектов, на которых студия тупить начинает. И XML нужно уметь точно так же в голове держать и рендерить.
SteelJames
Если студия начинает тупить от проекта, то тут большие вопросы к тому, как и кем был написан проект. Наверняка из-за обилия сторонних библиотек, монструозных зависимостей, сложной вёрстки, тяжёлых ресурсов… И вот теперь вопрос — а правильно ли всё это?
Я стараюсь избегать этого, а вы? Поэтому да, я не писал таких проектов и не хочу такие писать и уж тем более поддерживать.
zagayevskiy
Хо-хо:) Я вас, наверное, удивлю, но в некоторых крупных компаниях студию даже вообще не используют, потому что она не то что вёрстку, она просто проект открыть не выгребает. Ещё в некоторых компаниях есть целые команды, которые занимаются билдом и архитектурой, чтобы всё это победить.
Внезапно, да, бывают приложения больше чем на три экрана, со сложным функционалом. Вы можете этого избегать, кто ж вам запретит.
SteelJames
Нет, не удивили, я это прекрасно знаю. Поэтому всячески игнорирую предложения от больших компаний с большими проектами
samodum
Это какой-то пи**ец в отрасли, если существуют команды, которые занимаются настройкой билдов и архитектуры. Вы явно свернули куда-то не туда