{"id":13816314,"url":"https://github.com/MarcinMoskala/KotlinMultiplatformExample","last_synced_at":"2025-05-15T15:32:25.471Z","repository":{"id":83821619,"uuid":"141330566","full_name":"MarcinMoskala/KotlinMultiplatformExample","owner":"MarcinMoskala","description":null,"archived":false,"fork":false,"pushed_at":"2018-09-26T19:00:55.000Z","size":275,"stargazers_count":45,"open_issues_count":0,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-10T22:37:24.804Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MarcinMoskala.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-07-17T18:51:55.000Z","updated_at":"2023-12-15T15:31:06.000Z","dependencies_parsed_at":"2024-01-23T07:14:44.646Z","dependency_job_id":null,"html_url":"https://github.com/MarcinMoskala/KotlinMultiplatformExample","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcinMoskala%2FKotlinMultiplatformExample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcinMoskala%2FKotlinMultiplatformExample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcinMoskala%2FKotlinMultiplatformExample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcinMoskala%2FKotlinMultiplatformExample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarcinMoskala","download_url":"https://codeload.github.com/MarcinMoskala/KotlinMultiplatformExample/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254367648,"owners_count":22059549,"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":[],"created_at":"2024-08-04T05:00:38.777Z","updated_at":"2025-05-15T15:32:25.082Z","avatar_url":"https://github.com/MarcinMoskala.png","language":"Kotlin","readme":"# Start\n\n# Known problems\n\nYou might see:\nConfiguration on demand is not supported by the current version of the Android Gradle plugin since you are using Gradle version 4.6 or above. Suggestion: disable configuration on demand by setting org.gradle.configureondemand=false in your gradle.properties file or use a Gradle version less than 4.6.\n\nAlso:\nError:The modules ['android', 'mobile'] point to the same directory in the file system.\nEach module must have a unique path.\n\n# Hacks\n\nMultiplatform development in Kotlin still have some limitations.\nThis is why I had to apply some hacks which are temporary.\n\n## Native dependencies\n\nCannot declare Gradle dependencies on Konan yet, so we just include sources.\n\nhttps://youtrack.jetbrains.net/issue/KT-25582\n\n## Names generated by JS\n\nGenerated names for functions have mashed names. This is why from:\n```\ninterface QuotationView {\n    fun showQuote(quote: Quote)\n}\n```\n\nWe have function required named `showQuote_4z1tej$`\n\nhttps://youtrack.jetbrains.net/issue/KT-25583\n\n## Mixing Kotlin and Swift dependencies is not allowed in Konan\n\nWe cannot do:\n```\nclass ViewController : UIViewController, QuotationView {\n\n    override fun showQuote(quote: Quote) {\n        textView.text = quote.text\n        authorView.text = quote.person\n    }\n\n    //...\n}\n```\n\nWe need to do instead:\n```\nclass ViewController : UIViewController {\n\n    private val quotationView = object : QuotationView {\n        override fun showQuote(quote: Quote) {\n            textView.text = quote.text\n            authorView.text = quote.person\n        }\n    }\n\n    // ...\n}\n```","funding_links":[],"categories":["Kotlin"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarcinMoskala%2FKotlinMultiplatformExample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMarcinMoskala%2FKotlinMultiplatformExample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarcinMoskala%2FKotlinMultiplatformExample/lists"}