{"id":18818145,"url":"https://github.com/helloimkevo/composemultiplatformprojects","last_synced_at":"2026-01-15T14:30:21.099Z","repository":{"id":249315522,"uuid":"831173068","full_name":"HelloImKevo/ComposeMultiplatformProjects","owner":"HelloImKevo","description":"Compose Multiplatform Projects","archived":false,"fork":false,"pushed_at":"2024-08-22T22:35:54.000Z","size":865,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-30T02:30:44.162Z","etag":null,"topics":["compose-multiplatform","kotlin","kotlin-multiplatform","material3"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HelloImKevo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-19T20:53:47.000Z","updated_at":"2024-08-22T22:35:57.000Z","dependencies_parsed_at":"2024-07-20T01:54:02.453Z","dependency_job_id":"ff686aef-1e2b-480c-86db-10df7d890ecc","html_url":"https://github.com/HelloImKevo/ComposeMultiplatformProjects","commit_stats":null,"previous_names":["helloimkevo/composemultiplatformprojects"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelloImKevo%2FComposeMultiplatformProjects","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelloImKevo%2FComposeMultiplatformProjects/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelloImKevo%2FComposeMultiplatformProjects/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelloImKevo%2FComposeMultiplatformProjects/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HelloImKevo","download_url":"https://codeload.github.com/HelloImKevo/ComposeMultiplatformProjects/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239753732,"owners_count":19691162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compose-multiplatform","kotlin","kotlin-multiplatform","material3"],"created_at":"2024-11-08T00:15:09.214Z","updated_at":"2026-01-15T14:30:20.980Z","avatar_url":"https://github.com/HelloImKevo.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Compose Multiplatform Projects\n\n![kotlin-version](https://img.shields.io/badge/kotlin-2.0.0-blue) ![jdk-version](https://img.shields.io/badge/JDK-11-red)\n\nhttps://github.com/JetBrains/compose-multiplatform  \n\nCompose Multiplatform is a declarative framework for sharing UIs across multiple \nplatforms with Kotlin. It is based on Jetpack Compose and developed by JetBrains \nand open-source contributors.\n\nYou can choose the platforms across which to share your UIs using Compose Multiplatform:\n\n- iOS (Beta)\n- Android\n- Desktop (Windows, MacOS, Linux)\n- Web (Alpha)\n- For example, you can share UIs between iOS and Android or Windows and MacOS.\n\nhttps://www.jetbrains.com/fleet/  \n\nhttps://developer.android.com/studio  \n\nhttps://developer.apple.com/xcode/  \n\n\n# Live Action Screenshots\n\n| Running on an Android Pixel Emulator |\n| :--------------------------------: |\n| ![Android Emulator](Screenshots/android-emulator.png) |\n\n| Running on an iOS iPhone 15 Simulator |\n| :--------------------------------: |\n| ![iOS Simulator](Screenshots/ios-simulator.png) |\n\n\n# Environment Setup\n\n```shell\nbrew install kdoctor\n\n[!] CocoaPods\n  ! CocoaPods configuration is not required, but highly recommended for full-fledged development\n  ✖ System ruby is currently used\n    CocoaPods is not compatible with system ruby installation on Apple M1 computers.\n    Please install ruby via Homebrew, rvm, rbenv or other tool and make it default\n    Detailed information: https://stackoverflow.com/questions/64901180/how-to-run-cocoapods-on-apple-silicon-m1/66556339#66556339\n```\n\n```shell\nbrew install ruby\n\necho 'export PATH=\"/usr/local/opt/ruby/bin:$PATH\"' \u003e\u003e ~/.zshrc\n\nkdoctor\n\nEnvironment diagnose (to see all details, use -v option):\n[✓] Operation System\n[✓] Java\n[✓] Android Studio\n  ! Android Studio (AI-221.6008.13.2211.9619390)\n    Location: /Applications/Android Studio Electric Eel.app\n    Bundled Java: openjdk 11.0.15 2022-04-19\n    Kotlin Plugin: 221-1.8.0-release-for-android-studio-AS5591.52\n    Kotlin Multiplatform Mobile Plugin: not installed\n    Install Kotlin Multiplatform Mobile plugin - https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile\n  ! Android Studio (AI-222.4459.24.2221.10121639)\n    Location: /Applications/Android Studio Flamingo.app\n    Bundled Java: openjdk 17.0.6 2023-01-17\n    Kotlin Plugin: 222-1.8.20-release-AS3739.54\n    Kotlin Multiplatform Mobile Plugin: not installed\n    Install Kotlin Multiplatform Mobile plugin - https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile\n[✓] Xcode\n[✓] CocoaPods\n\nRecommendations:\n  ! Android Studio 2021.3 has the issue with running shared unit tests via run gutters.\n    Use a newer version.\n    More details: https://youtrack.jetbrains.com/issue/KTIJ-20362\nConclusion:\n  ✓ Your operation system is ready for Kotlin Multiplatform Mobile Development!\n```\n\n\n# KMP Kotlin Multiplatform New Project Wizard\n\nhttps://kmp.jetbrains.com/  \n\n\n# Fleet IDE: Quick Tips\n\nhttps://www.jetbrains.com/help/fleet/navigation.html\n\nGoto popup --\u003e `CMD + K` or click on the \"Search\" 🔍 button in the top-right corner.\n\nFull-text search (Find) --\u003e `CMD + Shift + F`\n\nFind Fleet IDE action --\u003e `CMD + Shift + K`\n\n\n# Android Studio IDE: Project Setup\n\n- Open Android Studio.\n- Download and install the Kotlin Multiplatform plugin:\n  https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform \n- Android Studio \u003e Preferences \u003e Plugins \u003e Marketplace \u003e Kotlin Multiplatform Mobile (by JetBrains)\n- Install and Restart Android Studio.\n\n| Kotlin Multiplatform Mobile Plugin |\n| :--------------------------------: |\n| ![Kotlin Multiplatform Mobile Plugin](Screenshots/kotlin-multiplatform-plugin.png) |\n\n## TODO: Android Compose Multiplatform Plugin\n\nTo resolve the Android Studio `testClasses` build error, refer to:  \nhttps://youtrack.jetbrains.com/issue/IDEA-340516  \nhttps://stackoverflow.com/questions/78133592/kmm-project-build-error-testclasses-not-found-in-project-shared  \n```kotlin\ntask(\"testClasses\").doLast {\n    project.logger.lifecycle(\"Task 'testClasses' does not do anything.\")\n}\n```\n\n\n# Running the Project\n\n## Android\n\nhttps://developer.android.com/studio/run/emulator-commandline  \n\nBe sure to add the `emulator` directory to your `~/.zprofile` or `~/.zshrc`:\n```shell\nexport PATH=~/android-sdks/emulator:${PATH}\n```\n\n```shell\nemulator -list-avds\n\nemulator -avd Pixel_2_API_31 -netdelay none -netspeed full\n```\n\nClick on the \"Run\" ▶️ button. In the \"RUN \u0026 DEBUG\" popup window, click on:\n`composeApp [Pixel 2 API 31]`.\n\n\n## iOS\n\nWas able to deploy the `CurrencyApp/composeApp` to an iPhone 15 Simulator. \nStill figuring out Fleet compatibility issues with Xcode and iOS Simulator.  \nRefer to:  \nhttps://youtrack.jetbrains.com/issue/FL-25004/Compose-multiplatform-cant-be-launched-in-iOS  \n\nmacOS \u003c-\u003e Xcode Compatibility List\nhttps://developer.apple.com/support/xcode/  \n\nAt the time of this writing, the minimum supported iOS \u0026 Xcode version for Fleet \nwith Compose Multiplatform is `iOS 17` and `Xcode 15`, which requires \n`macOS Ventura 13.5`.\n\nDownload Xcode 15:\nhttps://developer.apple.com/download/all/?q=xcode%2015.2\n\n```shell\n# List available software updates for macOS\nsoftwareupdate --list\n\n# Update to Xcode 15 Command Line Tools\nsoftwareupdate --install \"Command Line Tools beta 7 for Xcode-15.0\"\n```\n\n```shell\n# List all available simulators\nxcrun simctl list devices\n\n# Boot a specific simulator. It may not come to the foreground automatically;\n# you may need to use 'open' to open the Simulator UI.\nxcrun simctl boot \"iPhone 15\"\n\n# Launch a new default Simulator instance, or bring a Booted simulator to the\n# foreground. Example default emulator: iPhone 15 Pro Max, iOS 17.2\nopen -a Simulator.app\n```\n\nIn the Fleet IDE, click on the \"Run\" ▶️ button. In the \"RUN \u0026 DEBUG\" popup window,\nclick on: `iosApp [iPhone 15 | iOS 17.2]`.\n\n\n### iOS Simulator Troubleshooting\nIf you run into the below error:\n```\n$ xcrun simctl boot \"iPhone 15\"\n\nAn error was encountered processing the command (domain=NSPOSIXErrorDomain, code=60):\nUnable to boot the Simulator.\nlaunchd failed to respond.\nUnderlying error (domain=com.apple.SimLaunchHostService.RequestError, code=4):\n    Failed to start launchd_sim: could not bind to session, launchd_sim may have crashed or quit responding\n```\n\nClick Apple Icon =\u003e 'About this Mac' =\u003e More Info =\u003e System Setting  \n  =\u003e General =\u003e Storage =\u003e 'Storage Settings' =\u003e Developer =\u003e Delete 'Xcode Caches'.  \n\nThen you should be able to boot up a Simulator.\n\n\n## Desktop\n\nIn the Fleet IDE, click on the \"Run\" ▶️ button in the top-right corner, which\nwill open the \"RUN \u0026 DEBUG\" popup window. Click on `composeApp [Desktop]`. The\nproject will build, and a Desktop app window will be opened in about a minute.\n\n### Preview Composables in the IDE\n\nYou can view `@Preview @Composable` functions in the Fleet IDE by declaring a \ncomposable function like:\n```kotlin\n@Preview\n@Composable\nprivate fun HomeHeaderPreview() {\n    HomeHeader(\n        status = RateStatus.Stale,\n        onRatesRefresh = {}\n    )\n}\n```\n\nAnd then clicking the little tiny Blue + Green icon in the Fleet IDE line number\ngutter for the function signature. At the time of this writing, using \n`CMD + SHIFT + K` and clicking on the \"Open Compose Preview Output\" doesn't\nseem to be working correctly. I read on this conversation thread that only\nJDK 11 is supported at this time:  \nhttps://github.com/JetBrains/compose-multiplatform/issues/1515  \n\n\n# Third-Party Currency API\n\nhttps://currencyapi.com/  \n\nWork in Progress - Add your API key to:\n```shell\n# local.properties\nAPI_KEY=cur_live_your_api_key\n```\n\nFor Kotlin / Compose Multiplatform projects, it requires a bit of work to share \n`local.properties` code between Android and iOS. It is recommended to use the \nBuildKonfig plugin: https://github.com/yshrsmz/BuildKonfig\n\n\n# App Dependencies\n\n## App UI Material Theme\nMaterial 3 is the latest version of Google's open-source design system. Design \nand build beautiful, usable products with Material 3.\n\nhttps://m3.material.io/  \nhttps://material-foundation.github.io/material-theme-builder/  \n\n\n## Voyager\nCompose on Warp Speed. A multiplatform navigation library built for,\nand seamlessly integrated with, Jetpack Compose. Create scalable Single-Activity\napps powered by a pragmatic API.  \n\nhttps://github.com/adrielcafe/voyager\n\n\n## Koin\nKoin is a pragmatic lightweight dependency injection framework for Kotlin \ndevelopers. Koin is a DSL, a light container and a pragmatic API.  \n\nhttps://github.com/InsertKoinIO/koin\n\n\n## Ktor\nKtor is an asynchronous framework for creating microservices, web applications \nand more.  \n\nhttps://github.com/ktorio/ktor\n\n\n## kotlinx-datetime\nA multiplatform Kotlin library for working with date and time.  \n\nhttps://github.com/Kotlin/kotlinx-datetime\n\n\n## realm by MongoDB\nRealm is a mobile database that runs directly inside phones, tablets or \nwearables. Realm’s object-oriented data model is simple to learn, doesn’t \nneed an ORM, and lets you write less code.  \n\nhttps://github.com/realm/realm-kotlin\n\n\n## Stately\nStately is a state utility library to facilitate state management in\nKotlin Multiplatform. It was originally written to facilitate development with\nthe strict Kotlin/Native memory model. Stately currently provides concurrencly\nprimitives and concurrent collections.  \n\nhttps://github.com/touchlab/Stately\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelloimkevo%2Fcomposemultiplatformprojects","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhelloimkevo%2Fcomposemultiplatformprojects","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelloimkevo%2Fcomposemultiplatformprojects/lists"}