甚至可以使用 Kotlin 编写库吗?
我看到的问题是它将取决于kotlin-stdlib
和kotlin-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 上的一篇博客文章,因此您的里程可能会有所不同。