2017-07-19 85 views
0

我想建立相同的kotlin源代码到javascript和java(android)。有没有一个标准的方法来实现这一点?你如何建立一个Kotlin多平台构建?

+0

你是指完全相同的代码为Android和JS?你不会那样做的。你可以得到的最多的是共享相同的代码库,但不是平台特定的代码(如JS的DOM操作和Android的活动相关代码) – Mibac

+0

正确 - 项目中的许多逻辑不是平台特定的。平台特定的东西,如dom操作等将建在沼泽标准模块 – Andy

+0

然后只是建立一个公共逻辑模块和2个独立的取决于具有平台特定代码的常见问题 – Mibac

回答

2
  1. 在IntelliJ中创建一个项目。选择一个摇篮项目,那么Java(和其他任何你想要的)

IntelliJ new project menu

  • 创建3个新的摇篮模块:commonandroid-specificjs-specific。确保它们添加模块到主模块
  • Adding new module

    Adding new module part 2

  • 按下旁边,然后完成(并重复android-specificjs-specific
  • 删除settings.gradlecommon,和其他2模块,因为你不会需要它们
  • 确保将这3个新模块添加到主“父”模块的settings.gradle。它应该看起来更不像是:

    rootProject.name = 'parent' 
    
    include ':common' 
    include ':android-specific' 
    include ':js-specific' 
    
  • 编辑common的模块依赖(build.gradle文件,一行24 )从org.jetbrains.kotlin:kotlin-stdlib-jre8org.jetbrains.kotlin:kotlin-stdlib所以它不是特定于平台。
  • 如果你真的想确保你所做的一切权利去查看 - >工具窗口 - >摇篮
  • View -> Tool Windows -> Gradle

  • 您应该看到摇篮菜单,它应该是这样的
  • What it should look like

    的gradle这个配置也应该没有的IntelliJ(或穿心莲内酯工作ID工作室),但我没有测试它

    +0

    我不认为你可以使用Kotlin(Java)'common'模块作为Kotlin(JS)'js-specific'模块的依赖关系。 – Ilya

    +0

    为了完成这项工作,我在js-specific/android特定的库中添加了sourceSets {main} {main。 – Andy

    +0

    @Ilya现在应该没问题。我已经添加了第六点,在该点中,您将common模块Kotlin依赖项设置为不是平台特定的('kotlin-stdlib'而不是'kotlin-stdlib-jre8') – Mibac