【问题标题】:Android and Web App sharing Kotlin codeAndroid 和 Web App 共享 Kotlin 代码
【发布时间】: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 了解我的项目布局?

除其他外,我已阅读以下相关文档:

【问题讨论】:

标签: javascript android android-studio gradle kotlin


【解决方案1】:

我建议使用IDEA wizard 为您创建一个简单的多平台项目(文件 -> 新建 -> 项目 -> Kotlin -> Kotlin (Multiplatform - experimental))。社区版就足够了。

回答您的问题:

  1. 不要混合插件。你为你的通用代码创建一个单独的模块,并为它使用'kotlin-platform-common'插件。

  2. 三个模块,特殊插件'kotlin-platform-common'

  3. 使用常识进行源拆分。将您想要/能够重用的任何内容放入公共代码中。将特定于平台的代码放入平台模块中。

  4. 没有包限制。如果你愿意,你可以把所有东西放在同一个包里 =)

  5. 很确定它应该可以正常工作。如果没有,请尝试重新导入。

【讨论】:

    猜你喜欢
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2020-04-16
    • 1970-01-01
    • 2011-04-02
    • 2011-03-02
    相关资源
    最近更新 更多