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?
Antwort
- Erstellen Sie ein Projekt in IntelliJ. Wählen Sie ein Gradle Projekt und dann Java (und was Sie sonst wollen)
- erstellen 3 neue Gradle Module:
common
,android-specific
undjs-specific
. Stellen Sie sicher, sie sind als Modul zu Ihrem Hauptmodul hinzugefügt
- Press nächste, dann beenden (und wiederholen Sie für
android-specific
undjs-specific
) - Entfernen Sie
settings.gradle
voncommon
, und die anderen 2 Module, wie Sie sie nicht benötigen 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'
- 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. - Wenn Sie wirklich sicher sein Sie anzeigen alles richtig gehen getan haben -> Werkzeug Windows -> Gradle
- Sie das sehen sollte Gradle Menü und es sollte wie diese aussieht
Die gradle Config sollte auch ohne IntelliJ arbeiten (oder Andro id Studio) aber ich habe es nicht getestet
Ich glaube nicht, dass Sie Kotlin (Java) 'common' verwenden können Modul als Abhängigkeit von einem Kotlin (JS) 'js-spezifischen' Modul. – Ilya
Um dies zu tun, fügte ich SourceSets { main.kotlin.srcDirs + = '../core/src/main/java' } zu den js-spezifischen/androidspezifischen Bibliotheken hinzu. – Andy
@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
Offizielle Multi-Plattform-Unterstützung für Kotlin wurde noch nicht veröffentlicht. Wenn Sie auf dem Laufenden bleiben möchten, empfehle ich die #multiplatform channel on the Kotlin Slack.
- 1. Wie richte ich einen eigenen Proxy ein?
- 2. Wie richte ich einen PHP-Daemon ein?
- 3. Wie richte ich PreAuthenticationAuthenticationProvider ein?
- 4. Wie richte ich einen Rails-Integrationstest für XML-Methoden ein?
- 5. Wie richte ich einen kopflosen X-Server mit Xdummy ein?
- 6. Wie richte ich einen einfachen dockerisierten RabbitMQ-Cluster ein?
- 7. Wie richte ich einen Server mit node.js und electron ein?
- 8. Wie richte ich einen globalen Fehlerhandler in WebApi ein?
- 9. Wie richte ich Apache ein, um einen Code 204 zurückzugeben?
- 10. Wie richte ich einen Code-Review mit Gitlab ein?
- 11. Wie richte ich einen OpenID-Provider (Server) in Ubuntu ein?
- 12. Wie richte ich einen SCM in Xcode ein?
- 13. Wie richte ich einen @BindingAdapter mit Picasso ein?
- 14. Wie richte ich einen öffentlichen Google Cloud Storage-Bucket ein?
- 15. Wie richte ich einen Server in einem lokalen Verzeichnis ein?
- 16. Wie richte ich einen Rückruf auf einer Schaltfläche ein?
- 17. Wie richte ich einen Float in Geld?
- 18. Wie richte ich 2 SSH-Tunnel ein?
- 19. Wie richte ich Microsoft OpenIdConnect ein?
- 20. Wie richte ich Geocoder mit google_premier ein?
- 21. Wie richte ich eine interne Website ein?
- 22. Wie richte ich diese API-Anfrage ein?
- 23. Wie richte ich proxymesh mit Scrapy ein?
- 24. Wie richte ich PHP und MySQL ein?
- 25. Wie richte ich Emacs-Farben korrekt ein?
- 26. Wie richte ich ein Paketobjekt an?
- 27. Wie richte ich gitlab CI-Läufer ein?
- 28. Wie richte ich eine Jcurses-Bibliothek ein?
- 29. Wie richte ich die nativ-Datei ein?
- 30. Wie richte ich nodebootstrap bei Heroku ein?
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
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
Dann nur ein Modul für die gemeinsame Logik und 2 separate je nach der gemeinsamen mit plattformspezifischen Code – Mibac