├── .idea ├── .gitignore ├── misc.xml ├── modules.xml ├── multiplatform-development-docs.iml └── vcs.xml ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── cfg ├── build-script.xml ├── buildprofiles.xml └── thirdparty │ ├── dpk-gtm-analytics.html │ └── favicons.html ├── images ├── app.general.warning.svg ├── compose-create-first │ ├── compose-multiplatform-ui-app.png │ ├── compose-project-structure.png │ ├── compose-resources-project-structure.png │ ├── compose-run-android.png │ ├── compose-run-desktop-temp.png │ ├── compose-run-desktop.png │ ├── compose-run-ios.png │ ├── compose-run-wasm-distribution-task.png │ ├── compose-run-web.png │ ├── compose-unresolved-references.png │ ├── compose-web-artifacts.png │ ├── create-compose-multiplatform-project.png │ ├── first-compose-project-on-android-1.png │ ├── first-compose-project-on-android-ios-2.png │ ├── first-compose-project-on-android-ios-3.png │ ├── first-compose-project-on-android-ios-4.png │ ├── first-compose-project-on-android-ios-5.png │ ├── first-compose-project-on-android-ios-6.png │ ├── first-compose-project-on-android-ios-7.png │ ├── first-compose-project-on-android-ios-8.png │ ├── first-compose-project-on-desktop-1.png │ ├── first-compose-project-on-desktop-2.png │ ├── first-compose-project-on-desktop-3.png │ ├── first-compose-project-on-desktop-4.png │ ├── first-compose-project-on-desktop-5.png │ ├── first-compose-project-on-desktop-6.png │ ├── first-compose-project-on-desktop-7.png │ ├── first-compose-project-on-desktop-8.png │ ├── first-compose-project-on-desktop-9.png │ ├── first-compose-project-on-desktop-main.png │ ├── first-compose-project-on-ios-1.png │ ├── first-compose-project-on-web-2.png │ ├── first-compose-project-on-web.png │ ├── module-structure.png │ ├── multiplatform-web-wizard.png │ ├── publish-your-application-on-web.png │ └── select-project-view.png ├── compose-hot-reload │ ├── compose-hot-reload-gutter-run.png │ ├── compose-hot-reload-hello.png │ ├── compose-hot-reload-resize.gif │ ├── compose-hot-reload.gif │ └── create-desktop-project.png ├── compose-sources │ ├── CMP_badge.png │ ├── compose-1610-ios-magnifier.png │ ├── compose-180-LineHeightStyle.png │ ├── compose-desktop-accessibility-macos.png │ ├── compose-desktop-accessibility.png │ ├── compose-desktop-context-menu-custom-actions.png │ ├── compose-desktop-context-menu-custom-area.png │ ├── compose-desktop-context-menu-custom-text.png │ ├── compose-desktop-context-menu-dark-mode.png │ ├── compose-desktop-context-menu-localization.png │ ├── compose-desktop-context-menu-swing.png │ ├── compose-desktop-context-menu-text.png │ ├── compose-desktop-context-menu-textfield.png │ ├── compose-desktop-key-focus.animated.gif │ ├── compose-desktop-key-focus.png │ ├── compose-desktop-key-window.animated.gif │ ├── compose-desktop-key-window.png │ ├── compose-desktop-lazy-scrollbar.animated.gif │ ├── compose-desktop-lazy-scrollbar.png │ ├── compose-desktop-scrollbar.animated.gif │ ├── compose-desktop-scrollbar.png │ ├── compose-desktop-separate-dialog.png │ ├── compose-desktop-swing-composepanel.animated.gif │ ├── compose-desktop-swing-composepanel.png │ ├── compose-desktop-swing-layout.animated.gif │ ├── compose-desktop-swing-layout.png │ ├── compose-desktop-swinglabel.animated.gif │ ├── compose-desktop-swinglabel.png │ ├── compose-desktop-swingpanel.animated.gif │ ├── compose-desktop-swingpanel.png │ ├── compose-desktop-tooltips.animated.gif │ ├── compose-desktop-tooltips.png │ ├── compose-mouse-click-listeners.animated.gif │ ├── compose-mouse-click-listeners.png │ ├── compose-mouse-enter-listeners.animated.gif │ ├── compose-mouse-enter-listeners.png │ ├── compose-mouse-move-listeners.animated.gif │ ├── compose-mouse-move-listeners.png │ ├── compose-mouse-scroll-listeners.animated.gif │ ├── compose-mouse-scroll-listeners.png │ ├── compose-multiple-windows.animated.gif │ ├── compose-multiple-windows.png │ ├── compose-onclick-modifier.animated.gif │ ├── compose-onclick-modifier.png │ ├── compose-ondrag-modifier.animated.gif │ ├── compose-ondrag-modifier.png │ ├── compose-opaque-property.png │ ├── compose-raw-awt-events.animated.gif │ ├── compose-raw-awt-events.png │ ├── compose-raw-events.animated.gif │ ├── compose-raw-events.png │ ├── compose-resources-android-webview.png │ ├── compose-resources-qualifiers.png │ ├── compose-resources-structure.png │ ├── compose-rtl-bidi.png │ ├── compose-rtl-emoji.png │ ├── compose-swingpanel-clipping.png │ ├── compose-swingpanel-overlapping.png │ ├── compose-view.png │ ├── compose-window-adaptive-size.png │ ├── compose-window-ask-to-close.animated.gif │ ├── compose-window-ask-to-close.png │ ├── compose-window-condition.animated.gif │ ├── compose-window-condition.png │ ├── compose-window-draggable-area.animated.gif │ ├── compose-window-draggable-area.png │ ├── compose-window-hide-tray.animated.gif │ ├── compose-window-hide-tray.png │ ├── compose-window-minimize.animated.gif │ ├── compose-window-minimize.png │ ├── compose-window-properties.animated.gif │ ├── compose-window-properties.png │ ├── lifecycle-states.svg │ ├── mapview.png │ ├── uikit.png │ └── uiview.png ├── config-options │ ├── kmp-shared-module.svg │ ├── local-source-distribution.svg │ ├── many-repositories.svg │ ├── monorepo-configuration-1.svg │ ├── monorepo-configuration-2.svg │ ├── remote-artifact-distribution.svg │ ├── single-shared-module.svg │ ├── three-repositories.svg │ ├── two-repositories.svg │ └── umbrella-framework.svg ├── connect-apis │ ├── expect-classes.svg │ ├── expect-di-framework.svg │ ├── expect-functions-properties.svg │ ├── expect-generate-uuid.svg │ ├── expect-interfaces.svg │ └── expect-viewmodel.svg ├── development │ ├── compiler-options-levels.svg │ ├── dependency-resolution-error.png │ ├── diagrams │ │ ├── common-code-diagram.svg │ │ ├── compilation-jvm-diagram.svg │ │ ├── compilations.svg │ │ ├── default-hierarchy-example.svg │ │ ├── dependency-propagation-diagram.svg │ │ ├── dependson-relations-diagram.svg │ │ ├── dependson-tree-diagram.svg │ │ ├── direct-integration-scheme.svg │ │ ├── final-structure-diagram.svg │ │ ├── flat-structure.svg │ │ ├── full-template-hierarchy.svg │ │ ├── intermediate-source-sets-diagram.svg │ │ ├── ios-compilation-diagram.svg │ │ ├── ios-integration-scheme.svg │ │ ├── jvm-js-main.svg │ │ ├── kotlin-multiplatform.svg │ │ ├── lib-hierarchical-structure.svg │ │ ├── manual-hierarchical-structure.svg │ │ ├── missing-dependson-diagram.svg │ │ ├── multiplatform-executables-diagram.svg │ │ ├── multiplatform-source-set-dependency-alignment.svg │ │ ├── specific-target-diagram.svg │ │ ├── structure-serialization-diagram.svg │ │ ├── target-diagram.svg │ │ ├── target-labels-diagram.svg │ │ └── test-main-source-set-dependency-alignment.svg │ ├── expect-actual-gutter.png │ ├── ios-integration │ │ ├── as-project-wizard.png │ │ ├── disable-sandboxing-cocoapods.png │ │ ├── disable-sandboxing-in-xcode-project-settings.png │ │ ├── github-release-description.png │ │ ├── github-release-link.png │ │ ├── multiplatform-spm-url.png │ │ ├── xcode-edit-schemes.png │ │ ├── xcode-filled-run-script-action.png │ │ ├── xcode-new-run-script-action.png │ │ ├── xcode-run-script-phase-1.png │ │ ├── xcode-run-script-phase-2.png │ │ ├── xcode-run-script-phase-3.png │ │ └── xcode-spm-usage.png │ ├── java-source-paths.png │ ├── src-directory-diagram.png │ └── unresolved-java-reference.png ├── fleet │ ├── fleet-code-editing.png │ ├── fleet-compose-preview-light.png │ ├── fleet-debug.png │ ├── fleet-logcat-window-light.png │ ├── fleet-navigation.animated.gif │ ├── fleet-navigation.png │ ├── fleet-project-wizard-1.png │ ├── fleet-project-wizard-2.png │ ├── fleet-refactor-code.animated.gif │ ├── fleet-refactor-code.png │ ├── fleet-run-configurations.png │ ├── fleet-run-icon.png │ ├── fleet-run-ios-app.png │ ├── fleet-show-usages.png │ ├── fleet-smart-mode.png │ └── fleet-web-wizard.png ├── gradle-sync.png ├── icons │ ├── android.svg │ ├── compose-multiplatform-logo.svg │ ├── desktop.svg │ ├── git-hub.svg │ ├── icon-1-done.svg │ ├── icon-1.svg │ ├── icon-2-done.svg │ ├── icon-2-todo.svg │ ├── icon-2.svg │ ├── icon-3-done.svg │ ├── icon-3-todo.svg │ ├── icon-3.svg │ ├── icon-4-done.svg │ ├── icon-4-todo.svg │ ├── icon-4.svg │ ├── icon-5-done.svg │ ├── icon-5-todo.svg │ ├── icon-5.svg │ ├── icon-6-done.svg │ ├── icon-6-todo.svg │ ├── icon-6.svg │ ├── icon-7-done.svg │ ├── icon-7-todo.svg │ ├── icon-7.svg │ ├── ide-preflight-checks.png │ ├── ios.svg │ ├── jb-kotlin-multiplatform-logo.svg │ ├── reddit.svg │ ├── server.svg │ ├── slack.svg │ ├── stackoverflow.svg │ ├── twitter.svg │ ├── web.svg │ └── youtube.svg ├── journal │ ├── before-kotlin-multiplatform.svg │ ├── compose-multiplatform-and-jetpack-compose.png │ ├── crossplatform-native-mobile-dev-trends.png │ ├── discover-kmp.svg │ ├── explore-compose.svg │ ├── get-started-with-kmp.svg │ ├── google-trends-cross-platform.png │ ├── kmp-case-studies.png │ ├── kmp-get-started-action.svg │ ├── kmp-journey-start.svg │ ├── kmp-libraries-over-years.png │ ├── kmp-libs-over-years.png │ ├── kmp-logic-and-ui.svg │ ├── kmp-logic-and-ui_dark.svg │ ├── kmp-success-stories.svg │ ├── kmp-survey-results-2023.png │ ├── kmp-use-cases-1.svg │ ├── kotlin-satisfaction-rate.png │ ├── parts-of-code-share.png │ ├── see-kmp-in-action.svg │ ├── survey-results-q1-q2-21.png │ ├── survey-results-q1-q2-22.png │ └── with-compose-multiplatform.svg ├── kotlin-native-and-jvm-binaries.png ├── ktor-sql │ ├── android-and-ios.png │ ├── android-application.png │ ├── create-ktor-sqldelight-multiplatform-project.png │ ├── expect-actual-gutter-sql.png │ ├── ios-application.png │ ├── ktor-wizard.png │ ├── select-files-view.png │ └── theme-directory.png ├── logos │ ├── autodesk.svg │ ├── baidu.svg │ ├── balary.png │ ├── bilibili.png │ ├── bitkey.svg │ ├── bolt.svg │ ├── careem.svg │ ├── cash-app.svg │ ├── chalk-com.svg │ ├── down-dog.svg │ ├── fast-and-fit.svg │ ├── fastwork.svg │ ├── feres.svg │ ├── forbes.svg │ ├── ice-rock.svg │ ├── instabee.svg │ ├── kuaishou.svg │ ├── leroy-merlin.svg │ ├── markaz.png │ ├── mcdonalds.svg │ ├── meetup.svg │ ├── meituan-rms.svg │ ├── memrise.svg │ ├── mirego.svg │ ├── music-work.png │ ├── net-virta.svg │ ├── netflix.svg │ ├── nine-gag.svg │ ├── philips.svg │ ├── physics-wallah.svg │ ├── posten-bring.svg │ ├── quizlet.svg │ ├── touchlab.svg │ ├── unflow.svg │ ├── vmware.svg │ ├── wallhub.svg │ ├── worldline.svg │ └── wrike.svg ├── migrate-app │ ├── android-iphone-password-error.png │ ├── android-login.png │ ├── android-studio-ios-run-configuration.png │ ├── app-list-android.png │ ├── business-logic-to-share.png │ ├── debug-android.png │ ├── direct-integration-scheme.svg │ ├── disable-sandboxing-in-xcode-project-settings.png │ ├── ios-directory-renamed-in-as.png │ ├── ios-project-in-as.png │ ├── ios-project-wizard-1.png │ ├── ios-project-wizard-2.png │ ├── ios-run-configuration-simplelogin.png │ ├── moving-business-logic.png │ ├── multiplatform-mobile-module-wizard.png │ ├── refactor-business-logic-package.png │ ├── shared-directory-structure.png │ ├── shared-module-greeting 2.png │ ├── shared-module-greeting.png │ ├── switch-to-project.png │ ├── warnings-android-specific-code.png │ ├── xcode-add-framework-search-path.png │ ├── xcode-add-run-phase-2.png │ ├── xcode-edit-schemes.png │ ├── xcode-filled-run-script-action.png │ ├── xcode-iphone-hello.png │ ├── xcode-iphone-login.png │ ├── xcode-new-run-script-action.png │ ├── xcode-run-script-phase-1.png │ ├── xcode-run-script-phase-2.png │ ├── xcode-run-script-phase-3.png │ └── xcode-spm-usage.png ├── multiplatform-create-app │ ├── basic-project-structure-2.png │ ├── basic-project-structure.svg │ ├── create-first-multiplatform-app.png │ ├── first-multiplatform-project-3.png │ ├── first-multiplatform-project-on-android-1.png │ ├── first-multiplatform-project-on-android-2.png │ ├── first-multiplatform-project-on-ios-1.png │ ├── first-multiplatform-project-on-ios-2.png │ ├── ios-edit-configurations.png │ ├── ios-new-configuration.png │ ├── ios-new-simulator.png │ ├── modules-structure.png │ ├── multiplatform-add-package.png │ ├── multiplatform-import-kmp-nativecoroutines.png │ ├── multiplatform-mobile-upgrade-android.png │ ├── multiplatform-mobile-upgrade-ios.png │ ├── multiplatform-mobile-upgrade.png │ └── multiplatform-web-wizard-1.png ├── multiplatform-create-library │ ├── gradle-source-sets-list.png │ ├── gradle-sync-icon.png │ ├── library-gradle-build-window-tasks.png │ ├── multiplatform-library-template-project.png │ └── publish-maven-local-gradle-task.png ├── publish │ ├── app-store-required-reasons-warning.png │ ├── create_release_and_tag.png │ ├── github_secrets.png │ └── published_on_maven_central.png ├── quickstart │ ├── as-wizard-1.png │ ├── as-wizard-1step.png │ ├── as-wizard-3step.png │ ├── double-shift-preflight-checks.png │ ├── idea-wizard-1step.png │ ├── run-android-app.png │ ├── run-android-configuration.png │ ├── run-desktop-app.png │ ├── run-desktop-configuration.png │ ├── run-ios-app.png │ ├── run-ios-configuration.png │ ├── run-wasm-app.png │ └── run-wasm-configuration.png ├── tests │ ├── code-and-test-structure.png │ ├── create-android-test-dir.png │ ├── create-common-test-dir.png │ ├── create-ios-test-dir.png │ ├── create-test-multiplatform-project.png │ ├── gradle-alltests.png │ ├── multiplatform-test-report.png │ ├── multiplatform-web-wizard-test.png │ ├── run-test-results.png │ ├── run-test-tasks.png │ └── shared-tests-folder-reports.png └── xcode-schemes.png ├── labels.list ├── mpd.tree ├── snippets ├── android-ios-tutorial │ └── ContentView.swift └── multiplatform-tutorial │ ├── Entity.kt │ ├── activity_main.xml │ └── item_launch.xml ├── topics ├── compose-onboard │ ├── compose-multiplatform-create-first-app.md │ ├── compose-multiplatform-explore-composables.md │ ├── compose-multiplatform-modify-project.md │ └── compose-multiplatform-new-project.md ├── compose │ ├── compose-adaptive-layouts.md │ ├── compose-android-only-components.md │ ├── compose-compatibility-and-versioning.md │ ├── compose-compiler.md │ ├── compose-desktop-accessibility.md │ ├── compose-desktop-components.md │ ├── compose-desktop-context-menus.md │ ├── compose-desktop-keyboard.md │ ├── compose-desktop-mouse-events.md │ ├── compose-desktop-scrollbars.md │ ├── compose-desktop-swing-interoperability.md │ ├── compose-desktop-tooltips.md │ ├── compose-desktop-top-level-windows-management.md │ ├── compose-desktop-ui-testing.md │ ├── compose-drag-drop.md │ ├── compose-layout-modifiers.md │ ├── compose-layout.md │ ├── compose-lifecycle.md │ ├── compose-localization-tests.md │ ├── compose-localize-strings.md │ ├── compose-multiplatform-and-jetpack-compose.md │ ├── compose-multiplatform-resources-setup.md │ ├── compose-multiplatform-resources-usage.md │ ├── compose-multiplatform-resources.md │ ├── compose-multiplatform.topic │ ├── compose-native-distribution.md │ ├── compose-navigation-deep-links.md │ ├── compose-navigation-routing.md │ ├── compose-navigation.md │ ├── compose-platform-specifics.md │ ├── compose-regional-format.md │ ├── compose-resource-environment.md │ ├── compose-rtl.md │ ├── compose-test.md │ ├── compose-viewmodel.md │ └── ios │ │ ├── compose-ios-accessibility.md │ │ ├── compose-ios-migration.md │ │ ├── compose-ios-touch.md │ │ ├── compose-swiftui-integration.md │ │ └── compose-uikit-integration.md ├── create-kotlin-multiplatform-library.md ├── development │ ├── multiplatform-add-dependencies.md │ ├── multiplatform-advanced-project-structure.md │ ├── multiplatform-android-dependencies.md │ ├── multiplatform-android-layout.md │ ├── multiplatform-build-native-binaries.md │ ├── multiplatform-cocoapods-dsl-reference.md │ ├── multiplatform-cocoapods-libraries.md │ ├── multiplatform-cocoapods-overview.md │ ├── multiplatform-cocoapods-xcode.md │ ├── multiplatform-compatibility-guide.md │ ├── multiplatform-configure-compilations.md │ ├── multiplatform-connect-to-apis.md │ ├── multiplatform-direct-integration.md │ ├── multiplatform-discover-project.md │ ├── multiplatform-expect-actual.md │ ├── multiplatform-hierarchy.md │ ├── multiplatform-intro.md │ ├── multiplatform-ios-dependencies.md │ ├── multiplatform-ios-integration-overview.md │ ├── multiplatform-ktor-sqldelight.md │ ├── multiplatform-plugin-releases.md │ ├── multiplatform-privacy-manifest.md │ ├── multiplatform-project-configuration.md │ ├── multiplatform-publish-lib-setup.md │ ├── multiplatform-share-on-platforms.md │ ├── multiplatform-spm-export.md │ └── multiplatform-spm-local-integration.md ├── journal │ ├── choosing-web-target.md │ ├── cross-platform-frameworks.md │ ├── cross-platform-mobile-development.md │ ├── kotlin-multiplatform-flutter.md │ ├── multiplatform-introduce-your-team.md │ ├── multiplatform-reasons-to-try.md │ ├── native-and-cross-platform.md │ └── programming-languages-cross-platform.md ├── kotlin-multiplatform-roadmap.md ├── multiplatform-integrate-in-existing-app.md ├── multiplatform-onboard │ ├── multiplatform-create-first-app.md │ ├── multiplatform-dependencies.md │ ├── multiplatform-update-ui.md │ ├── multiplatform-upgrade-app.md │ └── multiplatform-wrap-up.md ├── multiplatform-publish-apps.md ├── multiplatform-publish-libraries.md ├── multiplatform-run-tests.md ├── multiplatform-samples.md ├── multiplatform-setup.md ├── overview │ ├── case-studies.topic │ ├── faq.md │ ├── get-started.topic │ └── supported-platforms.md ├── quickstart.md ├── tools │ ├── amper.md │ ├── compose-hot-reload.md │ ├── multiplatform-dsl-reference.md │ └── recommended-ides.md └── whats-new │ ├── whats-new-compose-1610.md │ ├── whats-new-compose-170.md │ ├── whats-new-compose-180.md │ ├── whats-new-compose-eap.md │ └── whats-new-compose.md ├── v.list └── writerside.cfg /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | /detekt.xml 10 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/multiplatform-development-docs.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @JetBrains/kotlin-technical-writing 2 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Code of Conduct 2 | 3 | This project and the corresponding community are governed by the 4 | [JetBrains Open Source and Community Code of Conduct](https://confluence.jetbrains.com/display/ALL/JetBrains+Open+Source+and+Community+Code+of+Conduct). 5 | Please make sure you read it. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Kotlin multiplatform development documentation 2 | [![Official project](https://jb.gg/badges/official.svg)](https://github.com/JetBrains#jetbrains-on-github) 3 | [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) 4 | 5 | This repository is the source for [https://www.jetbrains.com/help/kotlin-multiplatform-dev](https://www.jetbrains.com/help/kotlin-multiplatform-dev). 6 | 7 | * [Repository structure](#repository-structure) 8 | * [Contribution](#contribution) 9 | * [Feedback and issues](#feedback-and-issues) 10 | 11 | ## Repository structure 12 | 13 | * **Content**: 14 | * [images](images) directory contains images and charts. 15 | * [snippets](snippets) directory contains embedded code snippets. 16 | * [topics](topics) directory contains markdown files. 17 | * **Variables**: [v.list](v.list) file contains variables used in documentation. 18 | * **Navigation**: [mpd.tree](mpd.tree) file contains the navigation tree located on the left side of the site. 19 | * **Configuration**: [cfg](cfg) directory and [writerside.cfg](writerside.cfg) file contain configuration for the documentation. 20 | 21 | ## Contribution 22 | 23 | You can contribute to the documentation by submitting a pull request. 24 | Please follow the provided [style and formatting guidelines](https://docs.google.com/document/d/1mUuxK4xwzs3jtDGoJ5_zwYLaSEl13g_SuhODdFuh2Dc/edit?usp=sharing). 25 | 26 | The [Samples](https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-samples.html) page aims to show robust and unique applications of Kotlin Multiplatform and is heavily curated. We currently don't accept edits to this page directly. To feature your project as an example of Kotlin Multiplatform, use the [kotlin-multiplatform-sample](https://github.com/topics/kotlin-multiplatform-sample) topic on GitHub. For projects related to Kotlin Multiplatform in general, use the [kotlin-multiplatform](https://github.com/topics/kotlin-multiplatform) topic. 27 | 28 | You can also [create a YouTrack issue](https://youtrack.jetbrains.com/newIssue?project=KT&c=Subsystems+Docs+%26+Examples) to discuss your suggestion with the Kotlin Technical Writing team. 29 | 30 | ## Feedback and issues 31 | 32 | You have several options for providing feedback or reporting issues: 33 | 34 | * **Issue Tracker**: Report issues to [our issue tracker](https://youtrack.jetbrains.com/newIssue?project=KT). 35 | * **Kotlin public Slack**: Share feedback in the [#multiplatform](https://kotl.in/gamt3a) channel in our Kotlin public Slack. 36 | * **Feedback widget**: Use the feedback widget located at the end of each documentation page. 37 | 38 | -------------------------------------------------------------------------------- /cfg/build-script.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /cfg/buildprofiles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | thirdparty/dpk-gtm-analytics.html 6 | thirdparty/favicons.html 7 | %instance% Documentation 8 | false 9 | jb-kotlin-multiplatform-logo.svg 10 | https://www.jetbrains.com/kotlin-multiplatform/ 11 | frozen 12 | true 13 | https://github.com/JetBrains/kotlin-multiplatform-dev-docs/edit/master/ 14 | https://www.jetbrains.com/help 15 | 16 | false 17 | https://forms-service.jetbrains.com/feedback 18 | true 19 | https://data.services.jetbrains.com/search/ 20 | @kotlin 21 | https://resources.jetbrains.com/storage/products/jetbrains/img/meta/preview.png 22 | false 23 | [:,.;]$|\.{3}$|[^a-zA-Z0-9}')]+$ 24 | 25 | 26 | https://resources.jetbrains.com/storage/ui/favicons/favicon.ico, 27 | https://resources.jetbrains.com/storage/ui/favicons/apple-touch-icon-57x57.png, 28 | https://resources.jetbrains.com/storage/ui/favicons/apple-touch-icon-60x60.png, 29 | https://resources.jetbrains.com/storage/ui/favicons/apple-touch-icon-72x72.png, 30 | https://resources.jetbrains.com/storage/ui/favicons/apple-touch-icon-76x76.png, 31 | https://resources.jetbrains.com/storage/ui/favicons/apple-touch-icon-114x114.png, 32 | https://resources.jetbrains.com/storage/ui/favicons/apple-touch-icon-120x120.png, 33 | https://resources.jetbrains.com/storage/ui/favicons/apple-touch-icon-144x144.png, 34 | https://resources.jetbrains.com/storage/ui/favicons/apple-touch-icon-152x152.png, 35 | https://resources.jetbrains.com/storage/ui/favicons/apple-touch-icon-180x180.png, 36 | https://resources.jetbrains.com/storage/ui/favicons/apple-mask-icon.svg 37 | 38 | 39 |
40 | GitHub 41 | X (former Twitter) 42 | Kotlin Multiplatform blog 43 | Kotlin YouTube channel 44 | 45 | Kotlin Multiplatform Slack 46 |
47 | 48 |
-------------------------------------------------------------------------------- /cfg/thirdparty/dpk-gtm-analytics.html: -------------------------------------------------------------------------------- 1 | 11 | 12 | -------------------------------------------------------------------------------- /cfg/thirdparty/favicons.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 8 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /images/app.general.warning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/compose-create-first/compose-multiplatform-ui-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/compose-multiplatform-ui-app.png -------------------------------------------------------------------------------- /images/compose-create-first/compose-project-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/compose-project-structure.png -------------------------------------------------------------------------------- /images/compose-create-first/compose-resources-project-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/compose-resources-project-structure.png -------------------------------------------------------------------------------- /images/compose-create-first/compose-run-android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/compose-run-android.png -------------------------------------------------------------------------------- /images/compose-create-first/compose-run-desktop-temp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/compose-run-desktop-temp.png -------------------------------------------------------------------------------- /images/compose-create-first/compose-run-desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/compose-run-desktop.png -------------------------------------------------------------------------------- /images/compose-create-first/compose-run-ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/compose-run-ios.png -------------------------------------------------------------------------------- /images/compose-create-first/compose-run-wasm-distribution-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/compose-run-wasm-distribution-task.png -------------------------------------------------------------------------------- /images/compose-create-first/compose-run-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/compose-run-web.png -------------------------------------------------------------------------------- /images/compose-create-first/compose-unresolved-references.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/compose-unresolved-references.png -------------------------------------------------------------------------------- /images/compose-create-first/compose-web-artifacts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/compose-web-artifacts.png -------------------------------------------------------------------------------- /images/compose-create-first/create-compose-multiplatform-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/create-compose-multiplatform-project.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-android-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-android-1.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-android-ios-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-android-ios-2.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-android-ios-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-android-ios-3.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-android-ios-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-android-ios-4.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-android-ios-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-android-ios-5.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-android-ios-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-android-ios-6.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-android-ios-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-android-ios-7.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-android-ios-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-android-ios-8.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-desktop-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-desktop-1.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-desktop-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-desktop-2.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-desktop-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-desktop-3.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-desktop-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-desktop-4.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-desktop-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-desktop-5.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-desktop-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-desktop-6.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-desktop-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-desktop-7.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-desktop-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-desktop-8.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-desktop-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-desktop-9.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-desktop-main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-desktop-main.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-ios-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-ios-1.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-web-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-web-2.png -------------------------------------------------------------------------------- /images/compose-create-first/first-compose-project-on-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/first-compose-project-on-web.png -------------------------------------------------------------------------------- /images/compose-create-first/module-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/module-structure.png -------------------------------------------------------------------------------- /images/compose-create-first/multiplatform-web-wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/multiplatform-web-wizard.png -------------------------------------------------------------------------------- /images/compose-create-first/publish-your-application-on-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/publish-your-application-on-web.png -------------------------------------------------------------------------------- /images/compose-create-first/select-project-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-create-first/select-project-view.png -------------------------------------------------------------------------------- /images/compose-hot-reload/compose-hot-reload-gutter-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-hot-reload/compose-hot-reload-gutter-run.png -------------------------------------------------------------------------------- /images/compose-hot-reload/compose-hot-reload-hello.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-hot-reload/compose-hot-reload-hello.png -------------------------------------------------------------------------------- /images/compose-hot-reload/compose-hot-reload-resize.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-hot-reload/compose-hot-reload-resize.gif -------------------------------------------------------------------------------- /images/compose-hot-reload/compose-hot-reload.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-hot-reload/compose-hot-reload.gif -------------------------------------------------------------------------------- /images/compose-hot-reload/create-desktop-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-hot-reload/create-desktop-project.png -------------------------------------------------------------------------------- /images/compose-sources/CMP_badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/CMP_badge.png -------------------------------------------------------------------------------- /images/compose-sources/compose-1610-ios-magnifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-1610-ios-magnifier.png -------------------------------------------------------------------------------- /images/compose-sources/compose-180-LineHeightStyle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-180-LineHeightStyle.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-accessibility-macos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-accessibility-macos.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-accessibility.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-accessibility.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-context-menu-custom-actions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-context-menu-custom-actions.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-context-menu-custom-area.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-context-menu-custom-area.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-context-menu-custom-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-context-menu-custom-text.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-context-menu-dark-mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-context-menu-dark-mode.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-context-menu-localization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-context-menu-localization.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-context-menu-swing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-context-menu-swing.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-context-menu-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-context-menu-text.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-context-menu-textfield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-context-menu-textfield.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-key-focus.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-key-focus.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-key-focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-key-focus.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-key-window.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-key-window.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-key-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-key-window.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-lazy-scrollbar.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-lazy-scrollbar.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-lazy-scrollbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-lazy-scrollbar.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-scrollbar.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-scrollbar.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-scrollbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-scrollbar.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-separate-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-separate-dialog.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-swing-composepanel.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-swing-composepanel.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-swing-composepanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-swing-composepanel.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-swing-layout.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-swing-layout.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-swing-layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-swing-layout.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-swinglabel.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-swinglabel.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-swinglabel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-swinglabel.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-swingpanel.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-swingpanel.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-swingpanel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-swingpanel.png -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-tooltips.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-tooltips.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-desktop-tooltips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-desktop-tooltips.png -------------------------------------------------------------------------------- /images/compose-sources/compose-mouse-click-listeners.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-mouse-click-listeners.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-mouse-click-listeners.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-mouse-click-listeners.png -------------------------------------------------------------------------------- /images/compose-sources/compose-mouse-enter-listeners.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-mouse-enter-listeners.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-mouse-enter-listeners.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-mouse-enter-listeners.png -------------------------------------------------------------------------------- /images/compose-sources/compose-mouse-move-listeners.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-mouse-move-listeners.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-mouse-move-listeners.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-mouse-move-listeners.png -------------------------------------------------------------------------------- /images/compose-sources/compose-mouse-scroll-listeners.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-mouse-scroll-listeners.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-mouse-scroll-listeners.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-mouse-scroll-listeners.png -------------------------------------------------------------------------------- /images/compose-sources/compose-multiple-windows.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-multiple-windows.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-multiple-windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-multiple-windows.png -------------------------------------------------------------------------------- /images/compose-sources/compose-onclick-modifier.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-onclick-modifier.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-onclick-modifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-onclick-modifier.png -------------------------------------------------------------------------------- /images/compose-sources/compose-ondrag-modifier.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-ondrag-modifier.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-ondrag-modifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-ondrag-modifier.png -------------------------------------------------------------------------------- /images/compose-sources/compose-opaque-property.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-opaque-property.png -------------------------------------------------------------------------------- /images/compose-sources/compose-raw-awt-events.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-raw-awt-events.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-raw-awt-events.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-raw-awt-events.png -------------------------------------------------------------------------------- /images/compose-sources/compose-raw-events.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-raw-events.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-raw-events.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-raw-events.png -------------------------------------------------------------------------------- /images/compose-sources/compose-resources-android-webview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-resources-android-webview.png -------------------------------------------------------------------------------- /images/compose-sources/compose-resources-qualifiers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-resources-qualifiers.png -------------------------------------------------------------------------------- /images/compose-sources/compose-resources-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-resources-structure.png -------------------------------------------------------------------------------- /images/compose-sources/compose-rtl-bidi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-rtl-bidi.png -------------------------------------------------------------------------------- /images/compose-sources/compose-rtl-emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-rtl-emoji.png -------------------------------------------------------------------------------- /images/compose-sources/compose-swingpanel-clipping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-swingpanel-clipping.png -------------------------------------------------------------------------------- /images/compose-sources/compose-swingpanel-overlapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-swingpanel-overlapping.png -------------------------------------------------------------------------------- /images/compose-sources/compose-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-view.png -------------------------------------------------------------------------------- /images/compose-sources/compose-window-adaptive-size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-adaptive-size.png -------------------------------------------------------------------------------- /images/compose-sources/compose-window-ask-to-close.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-ask-to-close.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-window-ask-to-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-ask-to-close.png -------------------------------------------------------------------------------- /images/compose-sources/compose-window-condition.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-condition.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-window-condition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-condition.png -------------------------------------------------------------------------------- /images/compose-sources/compose-window-draggable-area.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-draggable-area.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-window-draggable-area.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-draggable-area.png -------------------------------------------------------------------------------- /images/compose-sources/compose-window-hide-tray.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-hide-tray.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-window-hide-tray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-hide-tray.png -------------------------------------------------------------------------------- /images/compose-sources/compose-window-minimize.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-minimize.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-window-minimize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-minimize.png -------------------------------------------------------------------------------- /images/compose-sources/compose-window-properties.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-properties.animated.gif -------------------------------------------------------------------------------- /images/compose-sources/compose-window-properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/compose-window-properties.png -------------------------------------------------------------------------------- /images/compose-sources/mapview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/mapview.png -------------------------------------------------------------------------------- /images/compose-sources/uikit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/uikit.png -------------------------------------------------------------------------------- /images/compose-sources/uiview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/compose-sources/uiview.png -------------------------------------------------------------------------------- /images/development/dependency-resolution-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/dependency-resolution-error.png -------------------------------------------------------------------------------- /images/development/expect-actual-gutter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/expect-actual-gutter.png -------------------------------------------------------------------------------- /images/development/ios-integration/as-project-wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/as-project-wizard.png -------------------------------------------------------------------------------- /images/development/ios-integration/disable-sandboxing-cocoapods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/disable-sandboxing-cocoapods.png -------------------------------------------------------------------------------- /images/development/ios-integration/disable-sandboxing-in-xcode-project-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/disable-sandboxing-in-xcode-project-settings.png -------------------------------------------------------------------------------- /images/development/ios-integration/github-release-description.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/github-release-description.png -------------------------------------------------------------------------------- /images/development/ios-integration/github-release-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/github-release-link.png -------------------------------------------------------------------------------- /images/development/ios-integration/multiplatform-spm-url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/multiplatform-spm-url.png -------------------------------------------------------------------------------- /images/development/ios-integration/xcode-edit-schemes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/xcode-edit-schemes.png -------------------------------------------------------------------------------- /images/development/ios-integration/xcode-filled-run-script-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/xcode-filled-run-script-action.png -------------------------------------------------------------------------------- /images/development/ios-integration/xcode-new-run-script-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/xcode-new-run-script-action.png -------------------------------------------------------------------------------- /images/development/ios-integration/xcode-run-script-phase-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/xcode-run-script-phase-1.png -------------------------------------------------------------------------------- /images/development/ios-integration/xcode-run-script-phase-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/xcode-run-script-phase-2.png -------------------------------------------------------------------------------- /images/development/ios-integration/xcode-run-script-phase-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/xcode-run-script-phase-3.png -------------------------------------------------------------------------------- /images/development/ios-integration/xcode-spm-usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/ios-integration/xcode-spm-usage.png -------------------------------------------------------------------------------- /images/development/java-source-paths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/java-source-paths.png -------------------------------------------------------------------------------- /images/development/src-directory-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/src-directory-diagram.png -------------------------------------------------------------------------------- /images/development/unresolved-java-reference.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/development/unresolved-java-reference.png -------------------------------------------------------------------------------- /images/fleet/fleet-code-editing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-code-editing.png -------------------------------------------------------------------------------- /images/fleet/fleet-compose-preview-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-compose-preview-light.png -------------------------------------------------------------------------------- /images/fleet/fleet-debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-debug.png -------------------------------------------------------------------------------- /images/fleet/fleet-logcat-window-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-logcat-window-light.png -------------------------------------------------------------------------------- /images/fleet/fleet-navigation.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-navigation.animated.gif -------------------------------------------------------------------------------- /images/fleet/fleet-navigation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-navigation.png -------------------------------------------------------------------------------- /images/fleet/fleet-project-wizard-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-project-wizard-1.png -------------------------------------------------------------------------------- /images/fleet/fleet-project-wizard-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-project-wizard-2.png -------------------------------------------------------------------------------- /images/fleet/fleet-refactor-code.animated.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-refactor-code.animated.gif -------------------------------------------------------------------------------- /images/fleet/fleet-refactor-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-refactor-code.png -------------------------------------------------------------------------------- /images/fleet/fleet-run-configurations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-run-configurations.png -------------------------------------------------------------------------------- /images/fleet/fleet-run-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-run-icon.png -------------------------------------------------------------------------------- /images/fleet/fleet-run-ios-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-run-ios-app.png -------------------------------------------------------------------------------- /images/fleet/fleet-show-usages.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-show-usages.png -------------------------------------------------------------------------------- /images/fleet/fleet-smart-mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-smart-mode.png -------------------------------------------------------------------------------- /images/fleet/fleet-web-wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/fleet/fleet-web-wizard.png -------------------------------------------------------------------------------- /images/gradle-sync.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/gradle-sync.png -------------------------------------------------------------------------------- /images/icons/android.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/desktop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/git-hub.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/icons/icon-1-done.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-2-done.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-2-todo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-3-done.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-3-todo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-4-done.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-4-todo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-5-done.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-5-todo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-6-done.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-6-todo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-7-done.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-7-todo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/icon-7.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/ide-preflight-checks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/icons/ide-preflight-checks.png -------------------------------------------------------------------------------- /images/icons/ios.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/jb-kotlin-multiplatform-logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/reddit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/icons/server.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/slack.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/icons/stackoverflow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/icons/web.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/youtube.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/journal/compose-multiplatform-and-jetpack-compose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/journal/compose-multiplatform-and-jetpack-compose.png -------------------------------------------------------------------------------- /images/journal/crossplatform-native-mobile-dev-trends.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/journal/crossplatform-native-mobile-dev-trends.png -------------------------------------------------------------------------------- /images/journal/google-trends-cross-platform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/journal/google-trends-cross-platform.png -------------------------------------------------------------------------------- /images/journal/kmp-case-studies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/journal/kmp-case-studies.png -------------------------------------------------------------------------------- /images/journal/kmp-libraries-over-years.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/journal/kmp-libraries-over-years.png -------------------------------------------------------------------------------- /images/journal/kmp-libs-over-years.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/journal/kmp-libs-over-years.png -------------------------------------------------------------------------------- /images/journal/kmp-survey-results-2023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/journal/kmp-survey-results-2023.png -------------------------------------------------------------------------------- /images/journal/kotlin-satisfaction-rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/journal/kotlin-satisfaction-rate.png -------------------------------------------------------------------------------- /images/journal/parts-of-code-share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/journal/parts-of-code-share.png -------------------------------------------------------------------------------- /images/journal/survey-results-q1-q2-21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/journal/survey-results-q1-q2-21.png -------------------------------------------------------------------------------- /images/journal/survey-results-q1-q2-22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/journal/survey-results-q1-q2-22.png -------------------------------------------------------------------------------- /images/kotlin-native-and-jvm-binaries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/kotlin-native-and-jvm-binaries.png -------------------------------------------------------------------------------- /images/ktor-sql/android-and-ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/ktor-sql/android-and-ios.png -------------------------------------------------------------------------------- /images/ktor-sql/android-application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/ktor-sql/android-application.png -------------------------------------------------------------------------------- /images/ktor-sql/create-ktor-sqldelight-multiplatform-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/ktor-sql/create-ktor-sqldelight-multiplatform-project.png -------------------------------------------------------------------------------- /images/ktor-sql/expect-actual-gutter-sql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/ktor-sql/expect-actual-gutter-sql.png -------------------------------------------------------------------------------- /images/ktor-sql/ios-application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/ktor-sql/ios-application.png -------------------------------------------------------------------------------- /images/ktor-sql/ktor-wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/ktor-sql/ktor-wizard.png -------------------------------------------------------------------------------- /images/ktor-sql/select-files-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/ktor-sql/select-files-view.png -------------------------------------------------------------------------------- /images/ktor-sql/theme-directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/ktor-sql/theme-directory.png -------------------------------------------------------------------------------- /images/logos/balary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/logos/balary.png -------------------------------------------------------------------------------- /images/logos/bilibili.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/logos/bilibili.png -------------------------------------------------------------------------------- /images/logos/bolt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/logos/careem.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/logos/fast-and-fit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /images/logos/feres.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 12 | 13 | 21 | 29 | 37 | 40 | 41 | -------------------------------------------------------------------------------- /images/logos/ice-rock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/logos/instabee.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/logos/kuaishou.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /images/logos/leroy-merlin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/logos/markaz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/logos/markaz.png -------------------------------------------------------------------------------- /images/logos/mirego.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/logos/music-work.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/logos/music-work.png -------------------------------------------------------------------------------- /images/logos/net-virta.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/logos/netflix.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/logos/nine-gag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /images/logos/philips.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/logos/posten-bring.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /images/logos/quizlet.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/logos/unflow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /images/logos/wrike.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /images/migrate-app/android-iphone-password-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/android-iphone-password-error.png -------------------------------------------------------------------------------- /images/migrate-app/android-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/android-login.png -------------------------------------------------------------------------------- /images/migrate-app/android-studio-ios-run-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/android-studio-ios-run-configuration.png -------------------------------------------------------------------------------- /images/migrate-app/app-list-android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/app-list-android.png -------------------------------------------------------------------------------- /images/migrate-app/business-logic-to-share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/business-logic-to-share.png -------------------------------------------------------------------------------- /images/migrate-app/debug-android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/debug-android.png -------------------------------------------------------------------------------- /images/migrate-app/disable-sandboxing-in-xcode-project-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/disable-sandboxing-in-xcode-project-settings.png -------------------------------------------------------------------------------- /images/migrate-app/ios-directory-renamed-in-as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/ios-directory-renamed-in-as.png -------------------------------------------------------------------------------- /images/migrate-app/ios-project-in-as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/ios-project-in-as.png -------------------------------------------------------------------------------- /images/migrate-app/ios-project-wizard-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/ios-project-wizard-1.png -------------------------------------------------------------------------------- /images/migrate-app/ios-project-wizard-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/ios-project-wizard-2.png -------------------------------------------------------------------------------- /images/migrate-app/ios-run-configuration-simplelogin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/ios-run-configuration-simplelogin.png -------------------------------------------------------------------------------- /images/migrate-app/moving-business-logic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/moving-business-logic.png -------------------------------------------------------------------------------- /images/migrate-app/multiplatform-mobile-module-wizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/multiplatform-mobile-module-wizard.png -------------------------------------------------------------------------------- /images/migrate-app/refactor-business-logic-package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/refactor-business-logic-package.png -------------------------------------------------------------------------------- /images/migrate-app/shared-directory-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/shared-directory-structure.png -------------------------------------------------------------------------------- /images/migrate-app/shared-module-greeting 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/shared-module-greeting 2.png -------------------------------------------------------------------------------- /images/migrate-app/shared-module-greeting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/shared-module-greeting.png -------------------------------------------------------------------------------- /images/migrate-app/switch-to-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/switch-to-project.png -------------------------------------------------------------------------------- /images/migrate-app/warnings-android-specific-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/warnings-android-specific-code.png -------------------------------------------------------------------------------- /images/migrate-app/xcode-add-framework-search-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/xcode-add-framework-search-path.png -------------------------------------------------------------------------------- /images/migrate-app/xcode-add-run-phase-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/xcode-add-run-phase-2.png -------------------------------------------------------------------------------- /images/migrate-app/xcode-edit-schemes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/xcode-edit-schemes.png -------------------------------------------------------------------------------- /images/migrate-app/xcode-filled-run-script-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/xcode-filled-run-script-action.png -------------------------------------------------------------------------------- /images/migrate-app/xcode-iphone-hello.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/xcode-iphone-hello.png -------------------------------------------------------------------------------- /images/migrate-app/xcode-iphone-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/xcode-iphone-login.png -------------------------------------------------------------------------------- /images/migrate-app/xcode-new-run-script-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/xcode-new-run-script-action.png -------------------------------------------------------------------------------- /images/migrate-app/xcode-run-script-phase-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/xcode-run-script-phase-1.png -------------------------------------------------------------------------------- /images/migrate-app/xcode-run-script-phase-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/xcode-run-script-phase-2.png -------------------------------------------------------------------------------- /images/migrate-app/xcode-run-script-phase-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/xcode-run-script-phase-3.png -------------------------------------------------------------------------------- /images/migrate-app/xcode-spm-usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/migrate-app/xcode-spm-usage.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/basic-project-structure-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/basic-project-structure-2.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/create-first-multiplatform-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/create-first-multiplatform-app.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/first-multiplatform-project-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/first-multiplatform-project-3.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/first-multiplatform-project-on-android-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/first-multiplatform-project-on-android-1.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/first-multiplatform-project-on-android-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/first-multiplatform-project-on-android-2.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/first-multiplatform-project-on-ios-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/first-multiplatform-project-on-ios-1.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/first-multiplatform-project-on-ios-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/first-multiplatform-project-on-ios-2.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/ios-edit-configurations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/ios-edit-configurations.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/ios-new-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/ios-new-configuration.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/ios-new-simulator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/ios-new-simulator.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/modules-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/modules-structure.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/multiplatform-add-package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/multiplatform-add-package.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/multiplatform-import-kmp-nativecoroutines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/multiplatform-import-kmp-nativecoroutines.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/multiplatform-mobile-upgrade-android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/multiplatform-mobile-upgrade-android.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/multiplatform-mobile-upgrade-ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/multiplatform-mobile-upgrade-ios.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/multiplatform-mobile-upgrade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/multiplatform-mobile-upgrade.png -------------------------------------------------------------------------------- /images/multiplatform-create-app/multiplatform-web-wizard-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-app/multiplatform-web-wizard-1.png -------------------------------------------------------------------------------- /images/multiplatform-create-library/gradle-source-sets-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-library/gradle-source-sets-list.png -------------------------------------------------------------------------------- /images/multiplatform-create-library/gradle-sync-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-library/gradle-sync-icon.png -------------------------------------------------------------------------------- /images/multiplatform-create-library/library-gradle-build-window-tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-library/library-gradle-build-window-tasks.png -------------------------------------------------------------------------------- /images/multiplatform-create-library/multiplatform-library-template-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-library/multiplatform-library-template-project.png -------------------------------------------------------------------------------- /images/multiplatform-create-library/publish-maven-local-gradle-task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/multiplatform-create-library/publish-maven-local-gradle-task.png -------------------------------------------------------------------------------- /images/publish/app-store-required-reasons-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/publish/app-store-required-reasons-warning.png -------------------------------------------------------------------------------- /images/publish/create_release_and_tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/publish/create_release_and_tag.png -------------------------------------------------------------------------------- /images/publish/github_secrets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/publish/github_secrets.png -------------------------------------------------------------------------------- /images/publish/published_on_maven_central.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/publish/published_on_maven_central.png -------------------------------------------------------------------------------- /images/quickstart/as-wizard-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/as-wizard-1.png -------------------------------------------------------------------------------- /images/quickstart/as-wizard-1step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/as-wizard-1step.png -------------------------------------------------------------------------------- /images/quickstart/as-wizard-3step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/as-wizard-3step.png -------------------------------------------------------------------------------- /images/quickstart/double-shift-preflight-checks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/double-shift-preflight-checks.png -------------------------------------------------------------------------------- /images/quickstart/idea-wizard-1step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/idea-wizard-1step.png -------------------------------------------------------------------------------- /images/quickstart/run-android-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/run-android-app.png -------------------------------------------------------------------------------- /images/quickstart/run-android-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/run-android-configuration.png -------------------------------------------------------------------------------- /images/quickstart/run-desktop-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/run-desktop-app.png -------------------------------------------------------------------------------- /images/quickstart/run-desktop-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/run-desktop-configuration.png -------------------------------------------------------------------------------- /images/quickstart/run-ios-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/run-ios-app.png -------------------------------------------------------------------------------- /images/quickstart/run-ios-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/run-ios-configuration.png -------------------------------------------------------------------------------- /images/quickstart/run-wasm-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/run-wasm-app.png -------------------------------------------------------------------------------- /images/quickstart/run-wasm-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/quickstart/run-wasm-configuration.png -------------------------------------------------------------------------------- /images/tests/code-and-test-structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/tests/code-and-test-structure.png -------------------------------------------------------------------------------- /images/tests/create-android-test-dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/tests/create-android-test-dir.png -------------------------------------------------------------------------------- /images/tests/create-common-test-dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/tests/create-common-test-dir.png -------------------------------------------------------------------------------- /images/tests/create-ios-test-dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/tests/create-ios-test-dir.png -------------------------------------------------------------------------------- /images/tests/create-test-multiplatform-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/tests/create-test-multiplatform-project.png -------------------------------------------------------------------------------- /images/tests/gradle-alltests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/tests/gradle-alltests.png -------------------------------------------------------------------------------- /images/tests/multiplatform-test-report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/tests/multiplatform-test-report.png -------------------------------------------------------------------------------- /images/tests/multiplatform-web-wizard-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/tests/multiplatform-web-wizard-test.png -------------------------------------------------------------------------------- /images/tests/run-test-results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/tests/run-test-results.png -------------------------------------------------------------------------------- /images/tests/run-test-tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/tests/run-test-tasks.png -------------------------------------------------------------------------------- /images/tests/shared-tests-folder-reports.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/tests/shared-tests-folder-reports.png -------------------------------------------------------------------------------- /images/xcode-schemes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/kotlin-multiplatform-dev-docs/89b219f502534283aa5f18b69d3ffca3ae29ec69/images/xcode-schemes.png -------------------------------------------------------------------------------- /snippets/multiplatform-tutorial/Entity.kt: -------------------------------------------------------------------------------- 1 | package com.jetbrains.spacetutorial.entity 2 | 3 | import kotlinx.datetime.TimeZone 4 | import kotlinx.datetime.toInstant 5 | import kotlinx.datetime.toLocalDateTime 6 | import kotlinx.serialization.SerialName 7 | import kotlinx.serialization.Serializable 8 | 9 | @Serializable 10 | data class RocketLaunch( 11 | @SerialName("flight_number") 12 | val flightNumber: Int, 13 | @SerialName("name") 14 | val missionName: String, 15 | @SerialName("date_utc") 16 | val launchDateUTC: String, 17 | @SerialName("details") 18 | val details: String?, 19 | @SerialName("success") 20 | val launchSuccess: Boolean?, 21 | @SerialName("links") 22 | val links: Links 23 | ) { 24 | var launchYear = launchDateUTC.toInstant().toLocalDateTime(TimeZone.UTC).year 25 | } 26 | 27 | @Serializable 28 | data class Links( 29 | @SerialName("patch") 30 | val patch: Patch?, 31 | @SerialName("article") 32 | val article: String? 33 | ) 34 | 35 | @Serializable 36 | data class Patch( 37 | @SerialName("small") 38 | val small: String?, 39 | @SerialName("large") 40 | val large: String? 41 | ) -------------------------------------------------------------------------------- /snippets/multiplatform-tutorial/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 13 | 14 | 15 | 16 | 20 | 21 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /snippets/multiplatform-tutorial/item_launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 9 | 10 | 13 | 14 | 17 | 18 | 21 | 22 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /topics/compose/compose-adaptive-layouts.md: -------------------------------------------------------------------------------- 1 | # Adaptive layouts 2 | 3 | To provide a consistent user experience on all types of devices, adapt your app's UI to different display sizes, orientations, 4 | and input modes. 5 | 6 | ## Designing adaptive layouts 7 | 8 | Follow these key guidelines when designing adaptive layouts: 9 | 10 | * Prefer [canonical layouts](https://developer.android.com/develop/ui/compose/layouts/adaptive/canonical-layouts) patterns 11 | like list-detail, feed, and supporting pane. 12 | * Maintain consistency by reusing shared styles for padding, typography, and other design elements. Keep navigation patterns 13 | consistent across devices while following platform-specific guidelines. 14 | * Break complex layouts into reusable composables for flexibility and modularity. 15 | * Adjust for screen density and orientation. 16 | 17 | ## Using window size classes 18 | 19 | Window size classes are predefined thresholds, also referred to as breakpoints, that categorize different screen 20 | sizes to help you design, develop, and test adaptive layouts. 21 | 22 | Window size classes categorize the display area available to your app into three categories for both width and height: 23 | compact, medium, and expanded. As you make layout changes, test the layout behavior across all window sizes, 24 | especially at the different breakpoint thresholds. 25 | 26 | To use `WindowSizeClass` classes, add the `material3.adaptive` dependency to the common source set in your module's 27 | `build.gradle.kts` file: 28 | 29 | ```kotlin 30 | commonMain.dependencies { 31 | implementation("org.jetbrains.compose.material3.adaptive:adaptive:%material3adaptiveVersion%") 32 | } 33 | ``` 34 | 35 | The `WindowSizeClass` API allows you to change your app's layout based on the available display space. 36 | For example, you can manage visibility of the top app bar depending on the window height: 37 | 38 | ```kotlin 39 | @Composable 40 | fun MyApp( 41 | windowSizeClass: WindowSizeClass = currentWindowAdaptiveInfo().windowSizeClass 42 | ) { 43 | // Determines whether the top app bar should be displayed 44 | val showTopAppBar = windowSizeClass.isHeightAtLeastBreakpoint(WindowSizeClass.HEIGHT_DP_MEDIUM_LOWER_BOUND) 45 | 46 | // Uses bar visibility to define UI 47 | MyScreen( 48 | showTopAppBar = showTopAppBar, 49 | /* ... */ 50 | ) 51 | } 52 | ``` 53 | 54 | 63 | 64 | ## What's next 65 | 66 | Learn more about adaptive layouts in the [Jetpack Compose documentation](https://developer.android.com/develop/ui/compose/layouts/adaptive). -------------------------------------------------------------------------------- /topics/compose/compose-desktop-tooltips.md: -------------------------------------------------------------------------------- 1 | [//]: # (title: Tooltips) 2 | 3 | You can add a tooltip to any component using the `TooltipArea` composable. `TooltipArea` is similar to the `Box` 4 | component and can show a tooltip. 5 | 6 | The `TooltipArea` composable has the following main parameters: 7 | 8 | * `tooltip`, composable content of the tooltip. 9 | * `tooltipPlacement`, defines the tooltip position. You can specify an anchor (the mouse cursor or the component), 10 | an offset, and an alignment. 11 | * `delayMillis`, time in milliseconds after which the tooltip is shown. The default value is 500 ms. 12 | 13 | ```kotlin 14 | import androidx.compose.foundation.ExperimentalFoundationApi 15 | import androidx.compose.foundation.TooltipArea 16 | import androidx.compose.foundation.TooltipPlacement 17 | import androidx.compose.foundation.layout.Arrangement 18 | import androidx.compose.foundation.layout.Column 19 | import androidx.compose.foundation.layout.fillMaxSize 20 | import androidx.compose.foundation.layout.padding 21 | import androidx.compose.foundation.shape.RoundedCornerShape 22 | import androidx.compose.material.Button 23 | import androidx.compose.material.Surface 24 | import androidx.compose.material.Text 25 | import androidx.compose.ui.Alignment 26 | import androidx.compose.ui.Modifier 27 | import androidx.compose.ui.draw.shadow 28 | import androidx.compose.ui.graphics.Color 29 | import androidx.compose.ui.unit.DpOffset 30 | import androidx.compose.ui.unit.dp 31 | import androidx.compose.ui.window.WindowState 32 | import androidx.compose.ui.window.singleWindowApplication 33 | 34 | @OptIn(ExperimentalFoundationApi::class) 35 | fun main() = singleWindowApplication( 36 | WindowState(width = 300.dp, height = 350.dp), 37 | title = "Tooltip Example" 38 | ) { 39 | val buttons = listOf("Button A", "Button B", "Button C", "Button D", "Button E", "Button F") 40 | Column(Modifier.fillMaxSize(), Arrangement.spacedBy(5.dp)) { 41 | buttons.forEachIndexed { index, name -> 42 | // Wrap the button in TooltipArea 43 | TooltipArea( 44 | tooltip = { 45 | // Composable tooltip content: 46 | Surface( 47 | modifier = Modifier.shadow(4.dp), 48 | color = Color(255, 255, 210), 49 | shape = RoundedCornerShape(4.dp) 50 | ) { 51 | Text( 52 | text = "Tooltip for $name", 53 | modifier = Modifier.padding(10.dp) 54 | ) 55 | } 56 | }, 57 | modifier = Modifier.padding(start = 40.dp), 58 | delayMillis = 600, // In milliseconds 59 | tooltipPlacement = TooltipPlacement.CursorPoint( 60 | alignment = Alignment.BottomEnd, 61 | offset = if (index % 2 == 0) DpOffset( 62 | (-16).dp, 63 | 0.dp 64 | ) else DpOffset.Zero // Tooltip offset 65 | ) 66 | ) { 67 | Button(onClick = {}) { Text(text = name) } 68 | } 69 | } 70 | } 71 | } 72 | ``` 73 | {initial-collapse-state="collapsed" collapsible="true" collapsed-title="TooltipArea(tooltip = { Surface( "} 74 | 75 | Tooltips 76 | 77 | ## What's next? 78 | 79 | Explore the tutorials about [other desktop components](https://github.com/JetBrains/compose-multiplatform/tree/master/tutorials#desktop). -------------------------------------------------------------------------------- /topics/compose/compose-desktop-ui-testing.md: -------------------------------------------------------------------------------- 1 | [//]: # (title: Testing Compose Multiplatform UI with JUnit) 2 | 3 | Compose Multiplatform for desktop provides a testing API based on JUnit and the Jetpack Compose testing API. 4 | For more details on implementation, see the [Test your Compose layout](https://developer.android.com/develop/ui/compose/testing) 5 | guide in the Jetpack Compose documentation. 6 | 7 | > For UI testing features available on all supported platforms, refer to the [Testing Compose Multiplatform UI](compose-test.md) article. 8 | > 9 | {style="tip"} 10 | 11 | To see JUnit-based tests in action, let's start with a project generated by the [Kotlin Multiplatform wizard](https://kmp.jetbrains.com/). 12 | If you are adding tests to an existing project, you may have to replace `composeApp` in paths 13 | and commands with the module name you are testing (`shared`, for example). 14 | 15 | Create the test source set and add the necessary dependencies: 16 | 17 | 1. Create a directory for tests: `composeApp/src/desktopTest/kotlin`. 18 | 2. In the `composeApp/build.gradle.kts` file, add the following dependencies: 19 | 20 | ```kotlin 21 | kotlin { 22 | //... 23 | sourceSets { 24 | //... 25 | val desktopTest by getting { 26 | dependencies { 27 | implementation(compose.desktop.uiTestJUnit4) 28 | implementation(compose.desktop.currentOs) 29 | } 30 | } 31 | } 32 | } 33 | ``` 34 | 35 | 3. Create a test file called `ExampleTest.kt` and copy the following code into it: 36 | 37 | ```kotlin 38 | import androidx.compose.material.* 39 | import androidx.compose.runtime.* 40 | import androidx.compose.ui.Modifier 41 | import androidx.compose.ui.test.* 42 | import androidx.compose.ui.platform.testTag 43 | import androidx.compose.ui.test.junit4.createComposeRule 44 | import org.junit.Rule 45 | import org.junit.Test 46 | 47 | class ExampleTest { 48 | @get:Rule 49 | val rule = createComposeRule() 50 | 51 | @Test 52 | fun myTest(){ 53 | // Declares a mock UI to demonstrate API calls 54 | // 55 | // Replace with your own declarations to test the code in your project 56 | rule.setContent { 57 | var text by remember { mutableStateOf("Hello") } 58 | 59 | Text( 60 | text = text, 61 | modifier = Modifier.testTag("text") 62 | ) 63 | Button( 64 | onClick = { text = "Compose" }, 65 | modifier = Modifier.testTag("button") 66 | ) { 67 | Text("Click me") 68 | } 69 | } 70 | 71 | // Tests the declared UI with assertions and actions of the JUnit-based testing API 72 | rule.onNodeWithTag("text").assertTextEquals("Hello") 73 | rule.onNodeWithTag("button").performClick() 74 | rule.onNodeWithTag("text").assertTextEquals("Compose") 75 | } 76 | } 77 | ``` 78 | 79 | 4. To run the test, click the run icon in the gutter next to the `myTest()` function or run the following command in the terminal: 80 | 81 | ```shell 82 | ./gradlew desktopTest 83 | ``` 84 | 85 | ## What's next? 86 | 87 | * See how to [create and run multiplatform tests](multiplatform-run-tests.md). 88 | * For a general overview of JUnit-based testing in a Kotlin project, see the [Test code using JUnit in JVM](https://kotlinlang.org/docs/jvm-test-using-junit.html) tutorial. -------------------------------------------------------------------------------- /topics/compose/compose-layout.md: -------------------------------------------------------------------------------- 1 | # Layout basics 2 | 3 | To effectively build user interfaces in Compose Multiplatform, it's important to understand the key concepts of layout 4 | construction, including core principles, layout phases, and common components and tools available for 5 | structuring your UI. 6 | 7 | ## Composable functions 8 | 9 | You can build user interfaces by defining a set of composable functions. These functions take in data and emit 10 | UI elements. The `@Composable` annotation informs the Compose compiler that the function converts data into a UI. 11 | 12 | A simple composable function that displays text: 13 | 14 | ```kotlin 15 | @Composable 16 | fun Greeting(name: String) { 17 | Text(text = "Hello, $name!") 18 | } 19 | ``` 20 | 21 | ## Column, Row, and Box 22 | 23 | To structure your layouts, you can use these basic building blocks: 24 | 25 | * Use `Column` to place items vertically on the screen. 26 | * Use `Row` to place items horizontally on the screen. 27 | * Use `Box` to stack elements on top of each other. 28 | * Use the `FlowRow` and `FlowColumn` versions of `Row` and `Column` to build responsive layouts. 29 | Items automatically flow into the next line when the container runs out of space, creating multiple rows or columns: 30 | 31 | ```kotlin 32 | @Composable 33 | fun ResponsiveLayout() { 34 | FlowRow { 35 | Text(text = "Item 1") 36 | Text(text = "Item 2") 37 | Text(text = "Item 3") 38 | } 39 | } 40 | ``` 41 | 42 | ## Modifiers 43 | 44 | Modifiers allow you to decorate or adjust the behavior of composables in a declarative way. 45 | They are essential for customizing layouts and interactions by providing control over dimensions, alignment, padding, 46 | interaction behaviors, and much more. 47 | 48 | For example, you can add padding and center alignment to text: 49 | 50 | ```kotlin 51 | @Composable 52 | fun ModifierExample() { 53 | Text( 54 | text = "Hello with padding", 55 | modifier = Modifier.padding(16.dp) 56 | ) 57 | } 58 | ``` 59 | 60 | Learn more in [](compose-layout-modifiers.md). 61 | 62 | ## What's next 63 | 64 | * For a deep dive on layouts, see [Jetpack Compose documentation](https://developer.android.com/develop/ui/compose/layouts). 65 | * Learn about the [lifecycle](compose-lifecycle.md) of components. -------------------------------------------------------------------------------- /topics/compose/compose-localization-tests.md: -------------------------------------------------------------------------------- 1 | # Localization tests 2 | 3 | 4 | To test localization, verify that the correct translated strings are displayed for different locales, 5 | and ensure that formatting and layout adapt to the locale’s requirements. 6 | 7 | ## Testing locales on different platforms 8 | 9 | ### Android 10 | 11 | On Android, you can change the device's system locale via **Settings | System | Languages & input | Languages**. 12 | For automated tests, you can modify the locale directly on the emulator using the `adb` shell: 13 | 14 | ```shell 15 | adb -e shell 16 | setprop persist.sys.locale [BCP-47 language tag];stop;sleep 5;start 17 | ``` 18 | 19 | This command restarts the emulator, allowing you to relaunch the app with the new locale. 20 | 21 | Alternatively, you can configure the locale programmatically before running tests using frameworks like Espresso. 22 | For example, you can use `LocaleTestRule()` to automate locale switching during tests. 23 | 24 | ### iOS 25 | 26 | On iOS, you can change the device's system language and region via **Settings | General | Language & Region**. 27 | For automated UI tests using the XCUITest framework, use launch arguments to simulate locale changes: 28 | 29 | ```swift 30 | app.launchArguments = [ 31 | "-AppleLanguages", "(es)", 32 | "-AppleLocale", "es_ES" 33 | ] 34 | ``` 35 | 36 | ### Desktop 37 | 38 | On desktop, the JVM locale typically defaults to the operating system's locale. 39 | The settings location varies for different desktop platforms. 40 | 41 | You can programmatically set the JVM default locale in your test setup or application entry point before the UI is initialized: 42 | 43 | ```java 44 | java.util.Locale.setDefault(java.util.Locale("es_ES")) 45 | ``` 46 | 47 | ### Web 48 | 49 | For a quick check, you can change language settings in the browser preferences. 50 | For automated testing, browser automation tools like Selenium or Puppeteer can simulate locale changes. 51 | 52 | Alternatively, you can try bypassing the read-only restriction of the `window.navigator.languages` property to introduce 53 | a custom locale. Learn more in the [](compose-resource-environment.md) tutorial. 54 | 55 | ## Key testing scenarios 56 | 57 | ### Custom locale 58 | 59 | * Override the locale programmatically. 60 | * Assert that UI elements, formatted strings, and layouts adapt correctly for the selected locale, 61 | including handling of right-to-left text if applicable. 62 | 63 | ### Default resources 64 | 65 | Default resources are used when no translation is available for the specified locale. 66 | The application must correctly fall back to these defaults. 67 | 68 | * Configure the locale to an unsupported value using platform-specific methods described above. 69 | * Verify that fallback mechanisms load the default resources correctly and display them properly. 70 | 71 | ### Locale-specific cases 72 | 73 | To avoid common localization issues, consider these locale-specific cases: 74 | 75 | * Test [locale-specific formatting](compose-regional-format.md), such as date formatting (`MM/dd/yyyy` vs. `dd/MM/yyyy`) 76 | and number formatting. 77 | * Validate [RTL and LTR behavior](compose-rtl.md), ensuring that right-to-left languages like Arabic and Hebrew display strings, 78 | layouts, and alignment properly. 79 | -------------------------------------------------------------------------------- /topics/compose/compose-localize-strings.md: -------------------------------------------------------------------------------- 1 | # Localizing strings 2 | 3 | Localization is the process of adapting your app to different languages, regions, and cultural conventions. 4 | This guide explains how to set up translation directories, 5 | [work with region-specific formats](compose-regional-format.md), 6 | [handle right-to-left (RTL) languages](compose-rtl.md), 7 | and [test localization](compose-localization-tests.md) across platforms. 8 | 9 | To localize strings in Compose Multiplatform, you need to provide translated texts for your application's user interface 10 | elements in all supported languages. Compose Multiplatform simplifies this process by offering a common resource 11 | management library and code generation for easy access to translations. 12 | 13 | ## Set up translation directories 14 | 15 | Store all string resources in a dedicated `composeResources` directory within your common source set. 16 | Place the default texts in the `values` directory, and create corresponding directories for each language. 17 | Use the following structure: 18 | 19 | ``` 20 | commonMain/composeResources/ 21 | ├── values/ 22 | │ └── strings.xml 23 | ├── values-es/ 24 | │ └── strings.xml 25 | ├── values-fr/ 26 | │ └── strings.xml 27 | └── ... (other locale directories) 28 | ``` 29 | 30 | Within the `values` directories and its localized variants, define string resources in `strings.xml` files using key-value pairs. 31 | For example, add English texts to `commonMain/composeResources/values/strings.xml`: 32 | 33 | ```xml 34 | 35 | My Application 36 | Hello, world! 37 | Welcome, %s! 38 | 39 | ``` 40 | 41 | Then, create corresponding localized files for translations. For example, add Spanish translations 42 | to `commonMain/composeResources/values-es/strings.xml`: 43 | 44 | ```xml 45 | 46 | Mi Aplicación 47 | ¡Hola mundo! 48 | ¡Bienvenido, %s! 49 | 50 | ``` 51 | 52 | ## Generate class for static access 53 | 54 | Once you've added all translations, build the project to generate a special class that provides access to resources. 55 | Compose Multiplatform processes the `strings.xml` resource files in `composeResources` and creates static accessor properties 56 | for each string resource. 57 | 58 | The resulting `Res.strings` object allows you to safely access localized strings from your shared code. 59 | To display strings in your app's UI, use the `stringResource()` composable function. 60 | This function retrieves the correct text based on the user's current locale: 61 | 62 | ```kotlin 63 | import project.composeapp.generated.resources.Res 64 | 65 | @Composable 66 | fun MyApp() { 67 | Text(stringResource(Res.strings.app_name)) 68 | Text(stringResource(Res.strings.greeting)) 69 | Text(stringResource(Res.strings.welcome_message, "User")) 70 | } 71 | ``` 72 | 73 | In the example above, the `welcome_message` string includes a placeholder (`%s`) for a dynamic value. 74 | Both the generated accessor and the `stringResource()` function support passing such parameters. 75 | 76 | ## What's next 77 | 78 | * [Learn how to manage regional formats](compose-regional-format.md) 79 | * [Read about handling Right-to-left languages](compose-rtl.md) -------------------------------------------------------------------------------- /topics/compose/compose-multiplatform-resources.md: -------------------------------------------------------------------------------- 1 | [//]: # (title: Resources overview) 2 | 3 | Compose Multiplatform provides a special `compose-multiplatform-resources` library and 4 | Gradle plugin support for accessing resources in common code across all supported platforms. 5 | Resources are static content, such as images, fonts, and strings, which you can use in your application. 6 | 7 | When working with resources in Compose Multiplatform, consider the current conditions: 8 | 9 | * Almost all resources are read synchronously in the caller thread. The only exceptions are raw files 10 | and web resources that are read asynchronously. 11 | * Reading big raw files, like long videos, as a stream is not supported yet. 12 | Use the [`getUri()`](compose-multiplatform-resources-usage.md#accessing-multiplatform-resources-from-external-libraries) function to pass separate files to a system API, 13 | for example, the [kotlinx-io](https://github.com/Kotlin/kotlinx-io) library. 14 | * Starting with 1.6.10, you can place resources in any module or source set, 15 | as long as you are using Kotlin 2.0.0 or newer, and Gradle 7.6 or newer. 16 | 17 | ### Set up a project with multiplatform resources 18 | 19 | To add the `resources` library dependency and set up all resources that your app should be able to access, see [](compose-multiplatform-resources-setup.md). 20 | 21 | ### Access the available resources in your code 22 | 23 | To access resources in your UI, use the automatically generated accessors. 24 | For the reference and various use cases, see [](compose-multiplatform-resources-usage.md). 25 | 26 | ### Manage local resource environment 27 | 28 | To manage the application's resource environment like in-app theme and language, 29 | see the [Local resource environment](compose-resource-environment.md) tutorial. 30 | -------------------------------------------------------------------------------- /topics/compose/compose-regional-format.md: -------------------------------------------------------------------------------- 1 | # Manage regional formats 2 | 3 | Text fields and related components, such as date and time pickers, automatically apply locale-specific formatting patterns. 4 | These include the formatting of numbers, dates, times, and currencies. 5 | The patterns are determined by the system's locale or a custom locale set within your application, 6 | ensuring consistent data display across platforms. 7 | 8 | ## Locale formatting patterns 9 | 10 | Formatting in Compose Multiplatform respects platform-specific locale conventions for: 11 | 12 | * Numeric separators. Thousands can get separated by a comma or a period: `1,234.56` in `en-US` and `1.234,56` in `de-DE`. 13 | * Date/Time patterns. The date of December 1 looks like `12/1/20` in `en-US`, 14 | while the same date in `fr-CA` looks like `2020-12-01`. 15 | * Currency symbols and placement. The local currency symbol can be placed either before or after the digits: 16 | `$5,001` in `en-US` and `5.001,00 €` in `fr-FR`. 17 | 18 | These regional formats work out of the box for both system locales and custom locale overrides defined in your app. 19 | 20 | Formatting is currently implemented using the `kotlinx-datetime` library on iOS and the JDK API on Android and desktop. 21 | Here is an example of managing localized date and currency values in the iOS source set: 22 | 23 | ```kotlin 24 | import androidx.compose.foundation.layout.Column 25 | import androidx.compose.material.Text 26 | import androidx.compose.runtime.Composable 27 | import kotlinx.datetime.Clock 28 | import kotlinx.datetime.TimeZone 29 | import kotlinx.datetime.todayIn 30 | import platform.Foundation.NSNumber 31 | import platform.Foundation.NSNumberFormatter 32 | import platform.Foundation.NSNumberFormatterCurrencyStyle 33 | import platform.Foundation.NSLocale 34 | import platform.Foundation.currentLocale 35 | 36 | @Composable 37 | fun RegionalFormatExample() { 38 | val currentLocale = NSLocale.current 39 | val languageCode = currentLocale.languageCode 40 | val countryCode = currentLocale.countryCode 41 | 42 | // Sample value to format as currency 43 | val amount = 1234.56 44 | 45 | // Uses NSNumberFormatter for currency formatting on iOS 46 | val currencyFormatter = NSNumberFormatter().apply { 47 | numberStyle = NSNumberFormatterCurrencyStyle 48 | locale = currentLocale 49 | } 50 | val formattedCurrency = currencyFormatter.stringFromNumber(NSNumber(amount)) 51 | 52 | // Gets current date using `kotlinx-datetime` 53 | val today = Clock.System.todayIn(TimeZone.currentSystemDefault()) 54 | val formattedDate = today.toString() 55 | 56 | Column { 57 | Text("Current language: $languageCode") 58 | Text("Current country: $countryCode") 59 | Text("Amount: $amount") 60 | Text("Formatted currency: $formattedCurrency") 61 | Text("Today's date: $formattedDate") 62 | } 63 | } 64 | ``` 65 | 66 | ## Ensure consistent formatting 67 | 68 | Although there is no common API for a unified multiplatform solution, the formatting behavior is still consistent in most cases. 69 | To ensure the formatting is correct for all supported regions: 70 | 71 | * Test edge cases such as large numbers, negative values, or zeroes. 72 | * Verify formatting for all supported locales on all target platforms. 73 | 74 | ## What's next 75 | 76 | Learn how to manage the application's [resource environment](compose-resource-environment.md) like in-app theme and language. -------------------------------------------------------------------------------- /topics/compose/compose-viewmodel.md: -------------------------------------------------------------------------------- 1 | [//]: # (title: Common ViewModel) 2 | 3 | The Android [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) 4 | approach to building UI can be implemented in common code using Compose Multiplatform. 5 | 6 | ## Adding the common ViewModel to your project 7 | 8 | To use the multiplatform `ViewModel` implementation, add the following dependency to your `commonMain` source set: 9 | 10 | ```kotlin 11 | kotlin { 12 | // ... 13 | sourceSets { 14 | // ... 15 | commonMain.dependencies { 16 | // ... 17 | implementation("org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:%composeViewmodelVersion%") 18 | } 19 | // ... 20 | } 21 | } 22 | ``` 23 | {initial-collapse-state="collapsed" collapsible="true" collapsed-title="org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:%composeViewmodelVersion%"} 24 | 25 | ## Using ViewModel in common code 26 | 27 | Compose Multiplatform implements the common `ViewModelStoreOwner` interface, so in general using the `ViewModel` class 28 | in common code is not much different from Android best practices. 29 | 30 | Using the [navigation example](https://github.com/JetBrains/compose-multiplatform/tree/0e38f58b42d23ff6d0ad30b119d34fa1cd6ccedb/examples/nav_cupcake): 31 | 32 | 1. Declare the ViewModel class: 33 | 34 | ```kotlin 35 | import androidx.lifecycle.ViewModel 36 | import androidx.lifecycle.viewmodel.compose.viewModel 37 | 38 | class OrderViewModel : ViewModel() { 39 | private val _uiState = MutableStateFlow(OrderUiState(pickupOptions = pickupOptions())) 40 | val uiState: StateFlow = _uiState.asStateFlow() 41 | // ... 42 | } 43 | ``` 44 | 45 | 2. Add the ViewModel to your composable function: 46 | 47 | ```kotlin 48 | @Composable 49 | fun CupcakeApp( 50 | viewModel: OrderViewModel = viewModel { OrderViewModel() }, 51 | ) { 52 | // ... 53 | } 54 | ``` 55 | 56 | > When running coroutines in a `ViewModel`, remember that the `ViewModel.viewModelScope` value is tied to the `Dispatchers.Main.immediate` value, 57 | > which might be unavailable on desktop by default. 58 | > To make ViewModel coroutines work correctly with Compose Multiplatform, add the `kotlinx-coroutines-swing` dependency to your project. 59 | > See the [`Dispatchers.Main` documentation](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-dispatchers/-main.html) for details. 60 | > 61 | {style="tip"} 62 | 63 | On non-JVM platforms, objects cannot be instantiated using type reflection. 64 | So in common code you cannot call the `viewModel()` function without parameters: every time a `ViewModel` instance is created, 65 | you need to provide at least an initializer as an argument. 66 | 67 | If only an initializer is provided, the library creates a default factory under the hood. 68 | But you can implement your own factories and call more explicit versions of the common `viewModel(...)` function, 69 | just like [with Jetpack Compose](https://developer.android.com/topic/libraries/architecture/viewmodel#jetpack-compose). 70 | -------------------------------------------------------------------------------- /topics/development/multiplatform-android-dependencies.md: -------------------------------------------------------------------------------- 1 | [//]: # (title: Adding Android dependencies) 2 | 3 | The workflow for adding Android-specific dependencies to a Kotlin Multiplatform module is the same as it is for pure 4 | Android projects: declare the dependency in your Gradle file and import the project. After that, you can use this 5 | dependency in your Kotlin code. 6 | 7 | We recommend declaring Android dependencies in Kotlin Multiplatform projects by adding them to a specific Android source 8 | set. For that, update your `build.gradle(.kts)` file in the `shared` directory of your project: 9 | 10 | 11 | 12 | 13 | ```kotlin 14 | sourceSets { 15 | androidMain.dependencies { 16 | implementation("com.example.android:app-magic:12.3") 17 | } 18 | } 19 | ``` 20 | 21 | 22 | 23 | 24 | ```groovy 25 | sourceSets { 26 | androidMain { 27 | dependencies { 28 | implementation 'com.example.android:app-magic:12.3' 29 | } 30 | } 31 | } 32 | ``` 33 | 34 | 35 | 36 | 37 | Moving what was a top-level dependency in an Android project to a specific source set in a multiplatform project 38 | might be difficult if the top-level dependency had a non-trivial configuration name. For example, to move 39 | a `debugImplementation` dependency from the top level of an Android project, you'll need to add an implementation 40 | dependency to the source set named `androidDebug`. To minimize the effort you have to put in to deal with migration 41 | problems like this, you can add a `dependencies {}` block inside the `androidTarget {}` block: 42 | 43 | 44 | 45 | 46 | ```kotlin 47 | androidTarget { 48 | //... 49 | dependencies { 50 | implementation("com.example.android:app-magic:12.3") 51 | } 52 | } 53 | ``` 54 | 55 | 56 | 57 | 58 | ```groovy 59 | androidTarget { 60 | //... 61 | dependencies { 62 | implementation 'com.example.android:app-magic:12.3' 63 | } 64 | } 65 | ``` 66 | 67 | 68 | 69 | 70 | Dependencies declared here will be treated exactly the same as dependencies from the top-level block, but declaring them 71 | this way will also separate Android dependencies visually in your build script and make it less confusing. 72 | 73 | Putting dependencies into a standalone `dependencies {}` block at the end of the script, in a way that is idiomatic to 74 | Android projects, is also supported. However, we strongly recommend **against** doing this because configuring a build 75 | script with Android dependencies in the top-level block and other target dependencies in each source set is likely to 76 | cause confusion. 77 | 78 | ## What's next? 79 | 80 | Check out other resources on adding dependencies in multiplatform projects and learn more about: 81 | 82 | * [Adding dependencies in the official Android documentation](https://developer.android.com/studio/build/dependencies) 83 | * [Adding dependencies on multiplatform libraries or other multiplatform projects](multiplatform-add-dependencies.md) 84 | * [Adding iOS dependencies](multiplatform-ios-dependencies.md) -------------------------------------------------------------------------------- /topics/development/multiplatform-ios-integration-overview.md: -------------------------------------------------------------------------------- 1 | [//]: # (title: iOS integration methods) 2 | 3 | You can integrate a Kotlin Multiplatform shared module into your iOS app. For that, you generate an [iOS framework](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WhatAreFrameworks.html) 4 | from the shared module and then add it as a dependency to the iOS project: 5 | 6 | ![iOS integration scheme](ios-integration-scheme.svg) 7 | 8 | It's possible to consume this framework as a local or remote dependency. Choose local integration if you want to have 9 | full control over the entire codebase and get instant updates to final applications when the common code changes. 10 | 11 | If you want to explicitly separate the code base of your final application from the common code base, set up remote 12 | integration. In this case, the shared code will be integrated into final applications like a regular third-party 13 | dependency. 14 | 15 | ## Local integration 16 | 17 | In a local setup, there are two main integration options. You can use direct integration through a special script, which 18 | makes the Kotlin build a part of the iOS build. If you have Pod dependencies in your Kotlin Multiplatform project, 19 | take the CocoaPods integration approach. 20 | 21 | ### Direct integration 22 | 23 | You can connect the iOS framework directly from the Kotlin Multiplatform project by adding a special script to your Xcode 24 | project. The script is integrated into the build phase of your project's build settings. 25 | 26 | This integration method can work for you if you do **not** import CocoaPods dependencies in your Kotlin Multiplatform 27 | project. 28 | 29 | If you create a project in Android Studio, choose the **Regular framework** option to have this setup generated 30 | automatically. If you use the [Kotlin Multiplatform web wizard](https://kmp.jetbrains.com/), direct integration 31 | is applied by default. 32 | 33 | For more information, see [Direct integration](multiplatform-direct-integration.md). 34 | 35 | ### CocoaPods integration with a local podspec 36 | 37 | You can connect the iOS framework from the Kotlin Multiplatform project through [CocoaPods](https://cocoapods.org/), 38 | a popular dependency manager for Swift and Objective-C projects. 39 | 40 | This integration method works for you if: 41 | 42 | * You have a mono repository setup with an iOS project that uses CocoaPods 43 | * You import CocoaPods dependencies in your Kotlin Multiplatform project 44 | 45 | To set up a workflow with a local CocoaPods dependency, you can either edit the scripts manually or generate the project 46 | using a wizard in Android Studio. 47 | 48 | For more information, see [CocoaPods overview and setup](multiplatform-cocoapods-overview.md). 49 | 50 | ## Remote integration 51 | 52 | For remote integration, your project might use the Swift Package Manager (SPM) or the CocoaPods dependency manager to 53 | connect the iOS framework from a Kotlin Multiplatform project. 54 | 55 | ### Swift package manager with XCFrameworks 56 | 57 | You can set up a Swift package manager (SPM) dependency using XCFrameworks to connect the iOS framework from the Kotlin 58 | Multiplatform project. 59 | 60 | For more information, see [Swift package export setup](multiplatform-spm-export.md). 61 | 62 | ### CocoaPods integration with XCFrameworks 63 | 64 | You can build XCFrameworks with the Kotlin CocoaPods Gradle plugin and then distribute shared parts of your project 65 | separately from mobile apps through CocoaPods. 66 | 67 | For more information, see [Build final native binaries](multiplatform-build-native-binaries.md#build-frameworks). -------------------------------------------------------------------------------- /topics/tools/recommended-ides.md: -------------------------------------------------------------------------------- 1 | [//]: # (title: Recommended IDEs and code editors) 2 | 3 | ## IntelliJ IDEA 4 | 5 | [IntelliJ IDEA](https://www.jetbrains.com/idea/) provides full Kotlin Multiplatform support. 6 | 7 | On macOS with IntelliJ IDEA 2025.1.1.1, 8 | you can install the [Kotlin Multiplatform IDE plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform) 9 | that provides basic launching and debugging capabilities for iOS apps, 10 | preflight environment checks, and other helpful KMP functionality. 11 | 12 | ## Android Studio 13 | 14 | [Android Studio](https://developer.android.com/studio) is another stable solution for Kotlin Multiplatform. 15 | 16 | On macOS with Android Studio Narwhal 2025.1.1 (currently at RC 1), 17 | you can install the [Kotlin Multiplatform IDE plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform) 18 | that provides basic launching and debugging capabilities for iOS apps, 19 | preflight environment checks, and other helpful KMP functionality. 20 | 21 | > Make sure to turn on K2 mode in Android Studio to fully experience the technology, 22 | > as it might be turned off by default. 23 | > 24 | {style="note"} 25 | 26 | ## Other IDEs and code editors 27 | 28 | If basic Kotlin Multiplatform support is enough for you, you can use any IDE that supports Kotlin. 29 | 30 | > If you're targeting iOS in your Kotlin Multiplatform project, you'll also need [Xcode](https://developer.apple.com/xcode/) 31 | > installed on your machine to write iOS-specific code and run iOS applications. 32 | > 33 | {style="note"} 34 | -------------------------------------------------------------------------------- /v.list: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /writerside.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 17 | 18 | --------------------------------------------------------------------------------