2017-07-19 3 views
0

Ich möchte den gleichen Kotlin-Quellcode in JavaScript und Java (Android) bauen. Gibt es einen Standardweg, um dies zu erreichen?Wie richte ich einen Kotlin-Multi-Plattform-Build ein?

+0

Sie meinen genau den gleichen Code für Android und JS? Du wirst das nicht bekommen. Das meiste, was Sie bekommen können, ist die gleiche Code-Basis, aber nicht den plattformspezifischen Code (wie JS DOM Manipulation und Android Activity bezogenen Code) – Mibac

+0

richtig - eine Menge der Logik in dem Projekt ist nicht plattformspezifisch. plattformspezifische Sachen wie Dom Manipulation und so weiter würde in Mood Standard-Module gebaut werden – Andy

+0

Dann nur ein Modul für die gemeinsame Logik und 2 separate je nach der gemeinsamen mit plattformspezifischen Code – Mibac

Antwort

2
  1. Erstellen Sie ein Projekt in IntelliJ. Wählen Sie ein Gradle Projekt und dann Java (und was Sie sonst wollen)

IntelliJ new project menu

  1. erstellen 3 neue Gradle Module: common, android-specific und js-specific. Stellen Sie sicher, sie sind als Modul zu Ihrem Hauptmodul hinzugefügt

Adding new module

Adding new module part 2

  1. Press nächste, dann beenden (und wiederholen Sie für android-specific und js-specific)
  2. Entfernen Sie settings.gradle von common, und die anderen 2 Module, wie Sie sie nicht benötigen
  3. Stellen Sie sicher, dass diese 3 neuen Module zum Hauptmodul settings.gradle des übergeordneten Moduls hinzugefügt werden. Es sollte mehr weniger aussehen:

    rootProject.name = 'parent' 
    
    include ':common' 
    include ':android-specific' 
    include ':js-specific' 
    
  4. bearbeiten common ‚s Modulabhängigkeits (build.gradle Datei, Zeile 24 für mich) org.jetbrains.kotlin:kotlin-stdlib-jre8-org.jetbrains.kotlin:kotlin-stdlib so ist es nicht plattformspezifisch.
  5. Wenn Sie wirklich sicher sein Sie anzeigen alles richtig gehen getan haben -> Werkzeug Windows -> Gradle

View -> Tool Windows -> Gradle

  1. Sie das sehen sollte Gradle Menü und es sollte wie diese
  2. aussieht

What it should look like

Die gradle Config sollte auch ohne IntelliJ arbeiten (oder Andro id Studio) aber ich habe es nicht getestet

+0

Ich glaube nicht, dass Sie Kotlin (Java) 'common' verwenden können Modul als Abhängigkeit von einem Kotlin (JS) 'js-spezifischen' Modul. – Ilya

+0

Um dies zu tun, fügte ich SourceSets { main.kotlin.srcDirs + = '../core/src/main/java' } zu den js-spezifischen/androidspezifischen Bibliotheken hinzu. – Andy

+0

@Ilya sollte es jetzt in Ordnung sein. Ich habe einen sechsten Punkt hinzugefügt, in dem Sie die Modul-Kotlin-Abhängigkeit nicht plattformspezifisch machen ('kotlin-stdlib' statt' kotlin-stdlib-jre8') – Mibac

Verwandte Themen