Android 安卓KTX或Anko

Android 安卓KTX或Anko,android,anko,kotlin-extension,android-ktx,Android,Anko,Kotlin Extension,Android Ktx,我对使用vs的优点和缺点有点困惑。因为两个库都试图实现相同的最终目标,而且它们之间的界限变得有点模糊 如果您能帮助我澄清每一个的任务以及它们的用例,我将非常感激 提前谢谢 Anko是JetBrains的一个项目,它是在开发Kotlin并使其与Android相关时启动的。我认为这是Kotlin可能性的早期制作展示 Anko以Anko布局而闻名,但在Anko Commons中也有一些Android开发扩展,还有一些其他模块,如SQLite 然而,Anko库在更新后积累了大量的方法更新,这使得库相对来

我对使用vs的优点和缺点有点困惑。因为两个库都试图实现相同的最终目标,而且它们之间的界限变得有点模糊

如果您能帮助我澄清每一个的任务以及它们的用例,我将非常感激


提前谢谢

Anko是JetBrains的一个项目,它是在开发Kotlin并使其与Android相关时启动的。我认为这是Kotlin可能性的早期制作展示

Anko以Anko布局而闻名,但在Anko Commons中也有一些Android开发扩展,还有一些其他模块,如SQLite

然而,Anko库在更新后积累了大量的方法更新,这使得库相对来说很重,因为每个dex文件只能有65K个方法(出于apk大小和性能原因,我更喜欢使用单个方法)

Anko commons为Android提供了扩展,因此它在某种程度上类似于Android KTX,但它的集成和组织(包和工件方面)不如Android KTX,后者现在是AndroidX的一部分,AndroidX是Android Jetpack的一部分。使库更小、更松散地耦合是Android Jetpack/Android X哲学的一部分

因此,Android KTX显然是未来,我认为没有理由不加入这艘飞船,或者更确切地说,不让它加入你的Android项目

此外,未来的Anko版本将反对(并可能最终消除)与AndroidKTX的重叠,只提供AndroidX中没有的功能

包括一个无耻的插头: 既然您在谈论Anko,那么如果Anko布局引起了您的注意,但您在使用它们时遇到了困难(特别是在与自定义视图或第三方视图交互时),我建议您查看中的视图DSL,它比Anko布局更灵活,而且非常轻量级。其他模块也可能会引起您的兴趣。我开始这个项目是为了在工作和家庭中利用我的Android项目中的Kotlin功能

你还没问过,但以下是我对Anko合作项目的看法: 我发现
bg{…}
扩展令人困惑。我更喜欢将kotlinx.coroutines与Android工件一起使用,使用
launch
withContext
,以及
Dispatchers.IO


然而,Anko协同程序侦听器(例如可以挂起的
onClick
)在我看来不是个坏主意。

Anko是JetBrains的Kotlin库。它与androidktx的共同目标是使您作为Android开发人员的生活更加轻松,使您的代码更加可读和易于使用。Android KTX和Anko很相似,但不完全相同

Anko和Android KTX之间的差异

他们有共同的目标,但考虑的范围不同。KTX的使命是为Kotlin用户提供惯用的API。KTX不打算向现有的Android API添加新功能。 Anko的范围更广,这使其能够灵活地创新和创建新功能

决定何时使用Anko或Android KTX


一般来说,Anko和AndroidKTX涵盖了AndroidAPI的不同部分,没有理由不能在项目中同时使用这两个部分。单独调查每一项,并在项目中使用任意一项

KTX是由实际的Android团队维护的较新项目。当我发现从AnkoI复制/重写的特性对协同程序也有同样的问题时,我不会感到惊讶。这些都可以在std库中找到,所以也许anko可能会被弃用?谢谢你的详细回答,它真的很有帮助@Louis CAD,Anko布局是否迁移到Android KTX和/或XML?因为我正在从事一个项目,其中的设计是由Anko布局组成的,并且Anko支持库预览不适用于最近的IDE更新,并且Anko团队也不发布任何与此相关的更新。所以有转换方法会很有帮助。@Krantiz没有这种东西。但是,您可以在自定义视图(例如,
FrameLayout
子类)中集成Anko布局,然后在xml中预览。这就是我在DSL中所做的。如果你想得到更深入的建议,你可以在Kotlin的Slack上或Twitter上问我。