在作为 AAR 分发的 Android 库中使用 Kotlin



甚至可以使用 Kotlin 编写库吗?

我看到的问题是它将取决于kotlin-stdlibkotlin-runtime的特定版本,并强制库的用户使用相同的版本。

我正在考虑使用jarjar来重新打包这些,但是,如何将它们包含在 fatjar 类型的发行版中?在解压缩的 aar 中,我看到了/libs目录 - 有没有办法使用它?

根据评论,有几个可用的.aar库是用 Kotlin 编写的,例如 MapMe。

事实上,在这个 GitHub 存储库中有一个此类库的精选列表

您可以通过检查相同的build.gradle看到这些确实包括对kotlin-stdlib的依赖。

这不是轻量级依赖项:.jar大小约为 1MB。如果您创建一个空白项目,请编译.apk,并将其上传到方法计数站点,它将涉及6086方法。

但是,如果消费项目已经使用了 Kotlin,那么他们已经承担了额外类的负担。由于他们将kotlin-stdlib作为依赖项显式包含在他们的build.gradle因此可能会强制将库中的依赖项解析为其版本。这不太可能导致stdlib问题。

即使消费者在他们的项目中没有使用 Kotlin,积极使用 Proguard 也可以消除未使用的方法。Kotlin 官方网站解释道:

占用空间:Kotlin 有一个非常紧凑的运行时库,可以通过使用 ProGuard 进一步减少。在实际应用程序中,Kotlin 运行时只添加几百个方法,并且小于 100K 到.apk文件的大小。

第二条声明的来源是 Medium 上的一篇博客文章,因此您的里程可能会有所不同。

最新更新