Android KTX или Anko

Я немного запутался в преимуществах и недостатках использования Android KTX против Anko. Поскольку обе библиотеки пытаются достичь одной и той же конечной цели, и грань между ними становится немного размытой, в некоторых случаях одна и та же функциональность доступна в обеих библиотеках.

Я буду очень благодарен, если вы поможете мне уточнить миссию каждого из них и их варианты использования.

Заранее спасибо!

Ответ 1

Anko - проект, который JetBrains начал разрабатывать в Kotlin и сделать его актуальным для Android. Я бы квалифицировал его как раннюю, готовую к производству витрину возможностей Kotlin.

Anko хорошо известен своими макетами Anko, но также имеет некоторые расширения для разработки под Android в Anko Commons, а также несколько других модулей, таких как SQLite.

Тем не менее, библиотеки Anko накопили значительное количество обновлений методов после обновлений, что сегодня делает библиотеку относительно тяжелой, когда вы ограничены 65K методами на файл dex (я предпочитаю использовать один, из-за размера apk и соображений производительности).

Anko commons предоставляет расширения для Android, так что он похож на Android KTX в некотором смысле, но он не так хорошо интегрирован и организован (по пакетам и артефактам), как Android KTX, который теперь является частью AndroidX, который является частью Android Jetpack. Уменьшение размера библиотек и их более слабая связь - это часть философии Android Jetpack/Android X.

Так что Android KTX, несомненно, является будущим, и я не вижу причин не прыгать с корабля, точнее, не позволяя ему прыгать в ваших проектах Android.

Кроме того, как вы сами отметили, будущие версии Anko устаревают (и, вероятно, в конечном итоге будут удалены), будут перекрываться с Android KTX, предоставляя только функции, отсутствующие в AndroidX.

Включает бесстыдный плагин: поскольку вы говорите об Anko, если макеты Anko привлекли ваше внимание, но вы столкнулись с проблемами (особенно при взаимодействии с пользовательскими или сторонними представлениями), я рекомендую вам проверить Views DSL в Splitties, который является более гибким, чем макеты Anko, и очень легкий. Другие модули также могут вас заинтересовать. Я начал этот проект, чтобы использовать возможности Kotlin в моих проектах Android на работе и дома.

Вы не спрашивали об этом, но вот мое мнение о сопрограммах Anko: расширение bg { … } меня смущает. Я предпочитаю использовать kotlinx.coroutines с артефактом Android, используя launch, withContext и т.д. Вместе с Dispatchers.IO.

Однако слушатели сопрограмм Anko (например, onClick которые могут приостановить работу) не являются плохой идеей IMO.