-

在 Android 开发中使用 Kotlin 语言的常见问题解答

Android 为何将 Kotlin 语言列为一级支持语言?

Kotlin 是一种与 Android 兼容的语言,它不仅语法简洁、更具表达性,还具备类型安全和空值安全的特性。它与 Java 语言可以无缝互通,热爱 Java 语言的开发者可以在继续使用 Java 语言的同时,逐步加入 Kotlin 代码并充分利用 Kotlin 库,轻松完成转换。此外,许多 Android 开发者已经发现 Kotlin 不仅可以提高开发速度,还能为编程带来更多乐趣,因此,我们希望为这些 Kotlin 用户提供更好的支持。您可以参阅此页,详细了解 Kotlin 和 Android。

 

我已经在使用 Kotlin 语言,有哪些变化值得关注?

短期内您将注意到的最大变化是:Android Studio 3.0 及以上版本中包含了经过全面测试的 Kotlin 支持工具。我们相信,这一变化将为您带来更加轻松、更加稳定的开发体验。

 

如何在 Android Studio 中使用 Kotlin?

Android Studio 3.0 及以上版本全面支持 Kotlin。以前,您需要添加 Kotlin 插件才能使用 Kotlin;而现在,所有新发布的 Android Studio 版本中都内置了这些工具。因此,您无需执行任何额外步骤,就可以直接使用 Kotlin 文件创建新项目,将 Java 语言代码转换成 Kotlin 代码,调试 Kotlin 代码,以及执行其他操作。详情请参阅“Kotlin 使用入门”。

 

如何在 Android Studio 中调试 Kotlin 代码?

Kotlin 代码的调试方法与 Java 代码相同。您不需要执行任何其他操作。

 

IDE 还为 Kotlin 提供其他哪些类型的支持(例如 Lint、自动填充、重构等)?

从 Android Studio 3.0 开始,我们的 IDE 已为 Kotlin 提供全面的工具支持。但是,目前还存在一些已知问题和限制,我们正在努力解决。

 

Kotlin 前景如何?

JetBrains 开发的 Kotlin 语言有着深思熟虑的设计理念,这是我们采纳该语言的原因之一。Google 正在与 JetBrains 开展合作,确保开发者在整个开发过程中(从语言到框架再到工具)都能获得出色的体验。此外,我们非常期待通过双方的努力,为 Kotlin 语言创建一个非盈利基金会以便进行后续的开发。

 

Kotlin 是开源语言吗?

Kotlin 的首选许可是 Apache Software License 2.0 版(“Apache 2.0”),Kotlin 软件的大部分内容都是根据 Apache 2.0 授权用户使用。尽管该项目将尽可能遵循此首选许可,但也可能存在将根据具体情况处理的例外情况。例如,Kotlin 使用的部分第三方依赖项可能使用不同的开放源代码许可,但这些许可与 Apache 2 许可并不冲突。

 

如何在 Java 和 Kotlin 语言之间做出选择?

您无需二选一!您可以根据需要同时使用两种语言。如果您需要了解 Kotlin 是否适合自己,您可以在 Android 开发中试用 Kotlin 语言,也可以参阅这些 Kotlin 资源,详细了解该语言

 

我可以在 Kotlin 中调用 Android 或其他 Java 语言库的 API 吗?

可以。Kotlin 与 Java 语言具有互操作性。此设计让 Kotlin 代码可以透明地调用 Java 语言方法;对于 Kotlin 独有的功能,可采用注释轻松向 Java 代码公开。对于未使用任何 Kotlin 特有语义的 Kotlin 文件,Java 代码可以直接引用,无需添加任何注释。两相结合,您就可以同时使用 Java 代码和 Kotlin 代码。有关详情,请参阅 Kotlin 互操作文档

 

你们有 Android API 的 Kotlin 参考文档吗?

有!我们正努力使所有 Android API 文档都包含惯用 Kotlin 参考。它们尚未准备就绪,但您可以在 Android 参考概览中找到指向可用 Kotlin 参考的链接。如果您要寻找核心 Kotlin 语言参考,请转到 Kotlin 标准库参考

 

我可以在同一个项目中同时使用 Java 文件和 Kotlin 文件吗?

可以。您可以根据自己的喜好或多或少采用 Kotlin 语言进行开发,然后利用 Kotlin 与 Java 的互操作性将 Kotlin 代码与 Java 代码结合在一起。

 

我可以在 Kotlin 代码中使用 C++ 代码吗?

可以,Kotlin 完全支持 JNI。您只需使用 external 修饰符标记 JNI 方法即可。

 

如何将 Kotlin 代码添加到我的新项目中?

当您在 Android Studio 中创建新项目时,只需选中 Include Kotlin support 复选框即可。有关详情,请参阅 Kotlin 使用入门

 

如何将 Kotlin 代码添加到我的现有项目中?

Project 窗口中选择相应模块,然后依次选择 File > New,选择任意 Android 模板,然后将 Kotlin 选作 Source language。有关详情,请参阅 Kotlin 使用入门

 

如何将 Java 语言代码转换成 Kotlin 代码?

打开 Java 文件,然后依次选择 Code > Convert Java File to Kotlin File。您也可以新建一个 Kotlin 文件 (File > New > Kotlin File/Class),然后将 Java 代码粘贴到此文件中。界面上出现提示时,点击 Yes,即可将 Java 代码转换成 Kotlin 代码。有关详情,请参阅 Kotlin 使用入门

 

你们会提供有关 Kotlin 的配套文档、示例、codelab 和模板吗?

为了向 Java 和 Kotlin 语言用户尽可能提供最实用的帮助,我们正在努力完善我们的文档和教程资料。与此同时,开发者可以借助 Kotlin 与 Java 语言之间出色的互操作性,并利用相关功能在 Android Studio 中将 Java 语言代码自动转换成 Kotlin 代码。

 

Kotlin 在 Android 开发中能实现协程吗?能实现异步/等候吗?

Kotlin 协程目前应该可以实现,但这些特性还处于实验设计阶段。因此,Kotlin 不能保证它们未来的可用状态,Android 自然也无法做出承诺。

 

Kotlin 对 APK 大小/方法数有什么影响?

Kotlin 运行时会导致您的调试 APK 增加大约 7000 个方法和约 1MB 的大小。如果您使用 Kotlin 替换项目中的另一个库(例如 Guava 或 RxJava),净影响可能会减小。如果您像优化其他应用代码和库一样,使用 ProGuard 对 APK 进行发布前优化,APK 的大小也会减小。

 

使用 Kotlin 会影响性能吗?

使用 Kotlin 不会对性能产生直接影响,但就像使用 Java 语言一样,您应该精心考虑如何使用这种语言。例如,在新的集合实例间重复复制会影响 GC 性能,调用允许非空类型的方法会导致调用空值检查方法(当然,您可以在编译器中使用 -Xno-param-assertions 停用运行时空值检查)。

 

Kotlin 支持哪些 Android 版本?

所有版本都支持!Kotlin 与 JDK 6 兼容,因此使用 Kotlin 语言开发的应用可以在较早版本的 Android 上安全运行。

 

在哪里可以了解更多有关使用 Kotlin 的信息?

请参阅 Kotlin 学习资源