2017-07-19 86 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