Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何建立Kotlin多平台构建?_Javascript_Android_Kotlin - Fatal编程技术网

Javascript 如何建立Kotlin多平台构建?

Javascript 如何建立Kotlin多平台构建?,javascript,android,kotlin,Javascript,Android,Kotlin,我想将相同的kotlin源代码构建到javascript和java(android)中。有没有标准的方法来实现这一点?对Kotlin的官方多平台支持尚未发布。如果您想了解最新信息,我建议您注意以下问题。Kotlin的官方多平台支持尚未发布。如果您想了解最新情况,我建议您遵循以下步骤 在IntelliJ中创建一个项目。选择一个Gradle项目,然后选择Java(以及您想要的任何其他项目) 创建3个新的Gradle模块:common、android-specific和js-specific。确保它

我想将相同的kotlin源代码构建到javascript和java(android)中。有没有标准的方法来实现这一点?

对Kotlin的官方多平台支持尚未发布。如果您想了解最新信息,我建议您注意以下问题。

Kotlin的官方多平台支持尚未发布。如果您想了解最新情况,我建议您遵循以下步骤

  • 在IntelliJ中创建一个项目。选择一个Gradle项目,然后选择Java(以及您想要的任何其他项目)
  • 创建3个新的Gradle模块:
    common
    android-specific
    js-specific
    。确保它们作为模块添加到主模块中
  • 按next,然后finish(针对特定于android的
  • common
    中删除
    settings.gradle
    ,以及您不需要的其他两个模块
  • 确保将这3个新模块添加到主“父”模块的
    设置中。gradle
    。它应该看起来不像这样:

    rootProject.name = 'parent'
    
    include ':common'
    include ':android-specific'
    include ':js-specific'
    
  • org.jetbrains.kotlin:kotlin-stdlib-jre8
    org.jetbrains.kotlin:kotlin stdlib
    编辑
    common
    的模块依赖项(
    build.gradle
    文件,第24行)
  • 如果你真的想确保你做的每件事都是正确的,去查看->工具窗口->渐变
  • 你应该看到渐变菜单,它应该是这样的
  • gradle配置在没有IntelliJ(或Android Studio)的情况下也可以工作,但我没有测试它

  • 在IntelliJ中创建一个项目。选择一个Gradle项目,然后选择Java(以及您想要的任何其他项目)
  • 创建3个新的Gradle模块:
    common
    android-specific
    js-specific
    。确保它们作为模块添加到主模块中
  • 按next,然后finish(针对特定于android的
  • common
    中删除
    settings.gradle
    ,以及您不需要的其他两个模块
  • 确保将这3个新模块添加到主“父”模块的
    设置中。gradle
    。它应该看起来不像这样:

    rootProject.name = 'parent'
    
    include ':common'
    include ':android-specific'
    include ':js-specific'
    
  • org.jetbrains.kotlin:kotlin-stdlib-jre8
    org.jetbrains.kotlin:kotlin stdlib
    编辑
    common
    的模块依赖项(
    build.gradle
    文件,第24行)
  • 如果你真的想确保你做的每件事都是正确的,去查看->工具窗口->渐变
  • 你应该看到渐变菜单,它应该是这样的

  • gradle配置在没有IntelliJ(或Android Studio)的情况下也可以工作,但我没有测试它

    你是说Android和JS的代码完全相同?你不会明白的。您最多可以共享相同的代码库,但不共享特定于平台的代码(如JS的DOM操作和Android的活动相关代码)——项目中的许多逻辑不是特定于平台的。特定于平台的东西,如dom操作等,将构建在bog标准模块中,然后只为通用逻辑创建一个模块,并根据通用逻辑创建两个独立的模块,使用特定于平台的代码是-所以我的问题是-这样的模块应该如何构造?例如,在gradle中是否有处理此类问题的标准方法?您是否使用Intellij?我可以马上写一个答案你是说Android和JS的代码完全一样?你不会明白的。您最多可以共享相同的代码库,但不共享特定于平台的代码(如JS的DOM操作和Android的活动相关代码)——项目中的许多逻辑不是特定于平台的。特定于平台的东西,如dom操作等,将构建在bog标准模块中,然后只为通用逻辑创建一个模块,并根据通用逻辑创建两个独立的模块,使用特定于平台的代码是-所以我的问题是-这样的模块应该如何构造?例如,在gradle中是否有处理此类问题的标准方法?您是否使用Intellij?我可以马上写一个答案。我不认为你可以使用Kotlin(Java)
    common
    模块作为Kotlin(JS)
    JS特定的
    模块的依赖项。为了实现这一点,我在JS特定的/android特定的库中添加了sourceset{main.Kotlin.srcDirs+='../core/src/main/Java'}。@Ilya现在应该没问题了。我已经添加了第6点,其中您可以使common的模块Kotlin依赖项不是特定于平台的(
    Kotlin stdlib
    而不是
    Kotlin-stdlib-jre8
    ),我认为您不能将Kotlin(Java)
    common
    模块用作Kotlin(JS)
    JS特定于
    模块的依赖项{main.kotlin.srcDirs+='../core/src/main/java'}到特定于js/android的库中。@Ilya现在应该可以了。我添加了第6点,在其中您可以使common的模块kotlin依赖项不特定于平台(
    kotlin stdlib
    而不是
    kotlin-stdlib-jre8