原创: Android 谷歌开发者
今年五月份的 Google I/O 上,我们正式向全球宣布 Kotlin-first 的这一重要理念,Kotlin 将成为 Android 开发者的首选语言,十月份举办的 Android Dev Summit 2019 大会上,我们发布了使用 Kotlin API 开发的 Jetpack Compose 开发者预览版。
我们于近期开始连载了关于 Kotlin 迁移指南的系列文章,帮助开发者们顺利迁移并开始使用 Kotlin 构建 Android 应用。本篇是本系列的下篇,我们将为您解答一些使用 Kotlin 构建应用时的常见问题。您可以点击下面链接回顾本系列的上篇和中篇:
- 使用 Kotlin 构建 Android 应用
- 开始迁移到 Kotlin
在 Android 开发中使用 Kotlin 语言的常见问题解答
Android 为何将 Kotlin 语言列为一级支持语言?
Kotlin 是一种与 Android 兼容的语言,它不仅语法简洁、更具表达性,还具备类型安全和空值安全的特性。它与 Java 语言可以无缝互通,热爱 Java 语言的开发者可以在继续使用 Java 语言的同时,逐步加入 Kotlin 代码并充分利用 Kotlin 库,轻松完成转换。此外,许多 Android 开发者已经发现 Kotlin 不仅可以提高开发速度,还能为编程带来更多乐趣,因此,我们希望为这些 Kotlin 用户提供更好的支持。您可以参阅 Kotlin 官方网站,详细了解 Kotlin 和 Android。
- 详细了解 Kotlin 和 Android
https://developer.android.google.cn/kotlin/
我已经在使用 Kotlin 语言,有哪些变化值得关注?
短期内您将注意到的最大变化是: Android Studio 3.0 及更高版本中包含了经过全面测试的 Kotlin 支持工具。我们相信,这一变化将为您带来更轻松、更稳定的开发体验。
如何在 Android Studio 中使用 Kotlin?
Android Studio 3.0 及更高版本全面支持 Kotlin。以前,您需要添加 Kotlin 插件才能使用 Kotlin;而现在,所有新发布的 Android Studio 版本中都内置了这些工具。因此,您无需执行任何额外步骤,就可以直接使用 Kotlin 文件创建新项目,将 Java 语言代码转换成 Kotlin 代码,调试 Kotlin 代码以及执行其他操作。详情请参阅 "Kotlin 使用入门"。
- Kotlin 使用入门
https://developer.android.google.cn/kotlin/get-started.html
如何在 Android Studio 中调试 Kotlin 代码?
Kotlin 代码的调试方法与 Java 代码相同。您不需要执行任何其他操作。
IDE 还为 Kotlin 提供其他哪些类型的支持 (例如 Lint、自动填充、重构等)?
从 Android Studio 3.0 开始,我们的 IDE 已为 Kotlin 提供全面的工具支持。但是,目前还存在一些已知问题和限制,我们正在努力解决。
- 关于在 Android Studio 中使用 Kotlin 的已知问题
https://developer.android.google.cn/studio/preview/kotlin-issues.html
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 资源,详细了解该语言。
- 在 Android 开发中开始使用 Kotlin
https://developer.android.google.cn/kotlin/get-started.html
我可以在 Kotlin 中调用 Android 或其他 Java 语言库的 API 吗?
可以。Kotlin 与 Java 语言具有互操作性。此设计让 Kotlin 代码可以透明地调用 Java 语言方法;对于 Kotlin 独有的功能,可采用注释轻松向 Java 代码公开。对于未使用任何 Kotlin 特有语义的 Kotlin 文件,Java 代码可以直接引用,无需添加任何注释。两相结合,您就可以同时使用 Java 代码和 Kotlin 代码。要了解详情,请参阅 Kotlin 互操作文档。
- Kotlin 互操作文档
https://developer.android.google.cn/kotlin/interop
你们有 Android API 的 Kotlin 参考文档吗?
有!我们正努力使所有 Android API 文档都包含惯用 Kotlin 参考。它们尚未准备就绪,但您可以在 Android 参考概览中找到指向可用 Kotlin 参考的链接。如果您要寻找核心 Kotlin 语言参考,请查看 Kotlin 标准库参考。
- Kotlin 标准库
https://kotlinlang.org/api/latest/jvm/stdlib/index.html#kotlin-standard-library
我可以在同一个项目中同时使用 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 使用入门https://developer.android.google.cn/kotlin/get-started.html
你们会提供有关 Kotlin 的配套文档、示例、codelab 和模板吗?
为了向 Java 和 Kotlin 语言用户尽可能提供最实用的帮助,我们正在努力完善我们的文档和教程资料。与此同时,开发者可以借助 Kotlin 与 Java 语言之间出色的互操作性,并利用相关功能在 Android Studio 中将 Java 语言代码自动转换成 Kotlin 代码。
Kotlin 在 Android 开发中能实现协程吗?能实现异步/等候吗?
Kotlin 协程目前应该可以实现,但这些特性还处于实验设计阶段。因此,Kotlin 不能保证它们未来的可用状态,Android 自然也无法做出承诺。
Kotlin 对 APK 大小/方法数有什么影响?
Kotlin 运行时会导致您的调试 APK 增加大约 7,000 个方法和约 1MB 的大小。如果您使用 Kotlin 替换项目中的另一个库 (例如 Guava 或 RxJava),净影响可能会降低。如果您像优化其他应用代码和库一样,使用 ProGuard 对 APK 进行发布前优化,APK 的大小也会减小。
使用 Kotlin 会影响性能吗?
使用 Kotlin 不会对性能产生直接影响,但就像使用 Java 语言一样,您应该精心考虑如何使用这种语言。例如,在新的集合实例间重复复制会影响 GC 性能,调用允许非空类型的方法会导致调用空值检查方法 (当然,您可以在编译器中使用 -Xno-param-assertions 停用运行时空值检查)。
Kotlin 支持哪些 Android 版本?
所有版本都支持!Kotlin 与 JDK 6 兼容,因此使用 Kotlin 语言开发的应用可以在较早版本的 Android 上安全运行。