├── .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 | [](https://github.com/JetBrains#jetbrains-on-github)
3 | [](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 |
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 |
--------------------------------------------------------------------------------
/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 |
4 |
--------------------------------------------------------------------------------
/images/icons/icon-1-done.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-1.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-2-done.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-2-todo.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-2.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-3-done.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-3-todo.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-3.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-4-done.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-4-todo.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-4.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-5-done.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-5-todo.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-5.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-6-done.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-6-todo.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-6.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-7-done.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-7-todo.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/icon-7.svg:
--------------------------------------------------------------------------------
1 |
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 |
4 |
--------------------------------------------------------------------------------
/images/icons/server.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/icons/slack.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/icons/stackoverflow.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/images/icons/twitter.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/images/icons/web.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/icons/youtube.svg:
--------------------------------------------------------------------------------
1 |
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 |
4 |
--------------------------------------------------------------------------------
/images/logos/careem.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/logos/fast-and-fit.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/logos/feres.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
41 |
--------------------------------------------------------------------------------
/images/logos/ice-rock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/logos/instabee.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/logos/kuaishou.svg:
--------------------------------------------------------------------------------
1 |
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 |
7 |
--------------------------------------------------------------------------------
/images/logos/philips.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/logos/posten-bring.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/images/logos/quizlet.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/logos/unflow.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/images/logos/wrike.svg:
--------------------------------------------------------------------------------
1 |
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 |
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 | 
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 |
--------------------------------------------------------------------------------