Android 和 Web App 共享 Kotlin 代码
Posted
技术标签:
【中文标题】Android 和 Web App 共享 Kotlin 代码【英文标题】:Android and Web App sharing Kotlin code 【发布时间】:2018-08-01 16:44:33 【问题描述】:Kotlin 的主要“卖点”之一似乎是它能够编译为 JVM 或 android 以及 Web 的 javascript。为了利用这一点,应该有一个代码库,其中一些文件在 Android 应用程序和浏览器 Web 应用程序之间共享。
但是,到目前为止,我几乎没有发现关于如何设置这样的东西的详细信息,特别是在使用 Android Studio 及其底层 Gradle 设置时,从运行 Android Studio New 开始项目向导。我不介意我是否只能在命令行上构建 Web 应用程序,但我想维护 Android Studio 提供的 Android 调试连接。到目前为止,我对 Gradle 及其使用的典型习语知之甚少。
我确信我不是第一个有这个想法的人,所以我想知道一些关于如何设置它的最佳实践。我想到的问题包括:
我是在一个构建文件中混合kotlin2js
和kotlin-android
插件,还是需要多个构建文件(也许我应该说“模块”或“项目”,除非我不知道哪个)?
如果我有多个构建文件,应该是两个(一个 Android 一个 Web)还是三个(一个用于共享内容)?
如果是两个构建文件,如何引用共享源?
如果是三个构建文件,我应该使用哪个插件来共享一个?
是否需要将我的源代码拆分到三个不同的源代码树上?是否有任何约定如何调用它们?
是否需要将我的类分成三组包,或者不同目标的代码可以共存于同一个包中?
我需要调整哪些配置设置才能让 IDE 了解我的项目布局?
除其他外,我已阅读以下相关文档:
https://kotlinlang.org/docs/reference/using-gradle.html https://docs.gradle.org/current/userguide/intro_multi_project_builds.html https://docs.gradle.org/current/userguide/composite_builds.html https://kotlinlang.org/docs/tutorials/kotlin-android.html【问题讨论】:
刚刚找到kotlinlang.org/docs/reference/multiplatform.html,这似乎是我问题的关键。在我把它写成我自己的答案之前,仍然需要尝试一下。 【参考方案1】:我建议使用IDEA wizard 为您创建一个简单的多平台项目(文件 -> 新建 -> 项目 -> Kotlin -> Kotlin (Multiplatform - experimental))。社区版就足够了。
回答您的问题:
不要混合插件。你为你的通用代码创建一个单独的模块,并为它使用'kotlin-platform-common'
插件。
三个模块,特殊插件'kotlin-platform-common'
使用常识进行源拆分。将您想要/能够重用的任何内容放入公共代码中。将特定于平台的代码放入平台模块中。
没有包限制。如果你愿意,你可以把所有东西放在同一个包里 =)
很确定它应该可以正常工作。如果没有,请尝试重新导入。
【讨论】:
以上是关于Android 和 Web App 共享 Kotlin 代码的主要内容,如果未能解决你的问题,请参考以下文章
与.NET Web应用程序和.NET Mobile App共享数据库