Android 应用程序中的 Kotlin 字节码

Kotlin bytecode in Android Apps

我是一名 kotlin 和 Java 开发人员,最近我开始分析 kotlin 生成的字节码。我发现了很多包装器代码和编译器生成的其他东西,以便将我在 Kotlin 中编写的代码翻译成 Java.

所以,我的问题是:

假设我有一个应用程序,其代码 100% 用 kotlin 编写。 依赖项和主应用程序。所有科特林。

  1. 这是否意味着将使用不同的编译器以避免 Java 兼容的字节码?
  2. 或者这种情况下编译器有没有优化?

非常感谢。


我知道Kotlin Native,但我认为它以后只会应用于Android。

使用 Kotlin 避免 Java 字节码的唯一方法是使用 Kotlin Native,在这种情况下您将无法使用 Android SDK。

Kotlin JVM,顾名思义,编译成JVM字节码;这是使用它的主要吸引力之一。如果它编译成不同的东西,那就是 Kotlin Native。

回答你的子弹:

  1. 不,无论您是否有 Java 个源文件,都使用相同的编译器。
  2. 可能不会。 Kotlin JVM 几乎可以与 Java 完全互操作,无论您的项目是否包含 Java 代码,这都是一样的。

想想你是否在 Kotlin 中创建了一个 Android 库。在那种情况下,你真的希望它自动编译成 Java 字节码以外的东西吗?它不能在 Java 项目中使用,这是 Kotlin 作为 Java 替代品如此出色的主要原因之一。

另请记住,您使用的是 Android SDK。即使您的 build.gradle 中没有依赖项,您仍然引用核心 SDK 本身,即 Java。 SDK 未包含在您的 APK 中,但在编译期间仍会使用它。

如果您想要避免 Java 字节码的东西,请使用 Flutter 之类的东西。它有自己的 SDK,可以桥接回 Java 组件。当然,你不能完全避开JVM,因为你仍然需要一些方法Android来安装和打开应用程序。