{"id":13871904,"url":"https://github.com/flowkey/UIKit-cross-platform","last_synced_at":"2025-07-16T01:32:08.601Z","repository":{"id":37885511,"uuid":"93588967","full_name":"flowkey/UIKit-cross-platform","owner":"flowkey","description":"Cross-platform Swift implementation of UIKit, mostly for Android","archived":false,"fork":false,"pushed_at":"2024-11-12T22:40:40.000Z","size":10824,"stargazers_count":603,"open_issues_count":22,"forks_count":40,"subscribers_count":29,"default_branch":"master","last_synced_at":"2024-11-12T23:27:26.508Z","etag":null,"topics":["android","cmake","cross-platform","macos","ndk","opengl-es","sdl-gpu","swift","uiframework","uikit"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flowkey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-07T03:34:07.000Z","updated_at":"2024-11-12T09:08:49.000Z","dependencies_parsed_at":"2024-01-30T12:27:13.827Z","dependency_job_id":"126af054-791f-4fa3-b074-018b9e8bc7ed","html_url":"https://github.com/flowkey/UIKit-cross-platform","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowkey%2FUIKit-cross-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowkey%2FUIKit-cross-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowkey%2FUIKit-cross-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowkey%2FUIKit-cross-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flowkey","download_url":"https://codeload.github.com/flowkey/UIKit-cross-platform/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226090000,"owners_count":17572112,"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":["android","cmake","cross-platform","macos","ndk","opengl-es","sdl-gpu","swift","uiframework","uikit"],"created_at":"2024-08-05T23:00:29.967Z","updated_at":"2025-07-16T01:32:08.587Z","avatar_url":"https://github.com/flowkey.png","language":"Swift","readme":"[![CircleCI](https://circleci.com/gh/flowkey/UIKit-cross-platform.svg?style=shield)](https://circleci.com/gh/flowkey/UIKit-cross-platform)\n[![Swift5.4](https://img.shields.io/badge/swift-5.4-orange.svg?style=flat)](https://swift.org/)\n[![Platforms](https://img.shields.io/badge/platform-Android%20%7C%20macOS-lightgrey.svg)](https://swift.org/)\n[![License](https://img.shields.io/badge/license-MIT-71787A.svg)](https://tldrlegal.com/license/mit-license)\n[![codecov](https://codecov.io/gh/flowkey/UIKit-cross-platform/branch/master/graph/badge.svg?token=7pkfn9WaxE)](https://codecov.io/gh/flowkey/UIKit-cross-platform)\n\n# UIKit-cross-platform\n\n### Your Swift UI Code on Android\n\nUIKit-cross-platform is a **UI framework** for native apps, which enables **code targeting iOS UIKit** to run on other platforms, particularly on **Android**.\u003cbr\u003e\n\n## Goal\n\nCurrently in mobile development apps have to be written twice, for iOS and Android, or native performance has to be sacrificed with a cross-platform solution such as React Native.\n\nThis framework aims to combine both advantages, having **native performance** and **writing code only once** but still keeping a native look \u0026 feel.\n\n## How to run your iOS Project on Android\n\n1. Create new iOS Project or open an existing one\n2. [Prepare your iOS Project](docs/PREPARE_IOS_PROJECT.md)\n3. [Add UIKit-cross-platform to your project](#adding-uikit-cross-platform)\n4. Run `./UIKit/create-android-project` from the root of your iOS project\n5. Open `./android` folder in [Android Studio](https://developer.android.com/studio/) ([install Android SDKs if necessary](#android-studio-setup)) and press \"run\" button\n\n## Try out the demo\n\nThis project includes a DemoApp which runs on iOS, Android and Mac.\n\nHow to run it on different platforms:\n\n1. Clone this project, `cd` into it and run `git submodule update --init --recursive`\n2. Open `./samples/getting-started/DemoApp.xcodeproj` in [Xcode](https://developer.apple.com/xcode/)\n    1. Run `DemoApp` target for the **iOS App**\n    2. Run `DemoAppMac` target for the **Mac App**\n3. Open `./samples/getting-started/android` with [Android Studio](https://developer.android.com/studio/) ([install Android SDKs if necessary](#android-studio-setup))\n4. Connect an Android device and press \"Run\" for the **Android App**\n\n## Additional setup instructions\n\n### Adding UIKit-cross-platform\n\n`UIKit-cross-platform` has to be added as a dependency to your project including its subdependencies.\n\nThe recommended way is to use `git submodules` to add it to an `UIKit` subdirectory.\nIn order to do so use the following command:\n\n```\ngit submodule add git@github.com:flowkey/UIKit-cross-platform.git UIKit \u0026\u0026 git submodule update --init --recursive UIKit\n```\n\n### Setup build environment\n\n1. Install [Cmake \u003e 3.16](https://cmake.org/download/) and [Ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages)\n\n```bash\nbrew install cmake \u0026\u0026 brew install ninja\n```\n\n2. Install [Android Studio](https://developer.android.com/studio/)\n3. Add SDKs in Android Studio\n    1. Open Preferences in Android Studio\n    2. Go to Appearance \u0026 Behavior -\u003e System Settings -\u003e Android SDK\n    3. under SDK Platforms: install SDK for API Level 29\n    4. under SDK Tools, install `Android SDK Build Tools`\n    5. under SDK Tools, install NDK 27.1.12297006 (tick `Show Package Details` to see all available versions)\n    6. Press Apply / OK to install SDKs\n    7. create a symlink in `/usr/local/ndk/27.1.12297006/` pointing to the path of the NDK (`ln -vsi ~/Library/Android/sdk/ndk/27.1.12297006 /usr/local/ndk/27.1.12297006`)\n\n## Architecture\n\nUIKit-cross-platform renders with [SDL_gpu](https://github.com/grimfang4/sdl-gpu) which translates down to lower-level [OpenGL](https://www.opengl.org/) instructions.\n\nOn Android, [CMake](https://cmake.org/) compiles Swift Code into native binaries via [Ninja](https://ninja-build.org/), which are called through the [NDK](https://developer.android.com/ndk/).\n\n[More detailed information about the architecture can be found here](docs/ARCHITECTURE.md)\n\n## API documentation\n\nThis framework uses the [Apple UIKit](https://developer.apple.com/documentation/uikit) API, therefore the official Apple Docs serve as documentation for the already implemented features.\n\n## How to contribute\n\nContributions are _very welcome_ and _helpful_ 🙌\n\nIf you are looking for a feature or find a bug, please create an [Issue](https://github.com/flowkey/UIKit-cross-platform/issues/new/choose).\n\nFor additional information please refer to our [contribution guidelines](docs/CONTRIBUTING.md).\n\n## FAQs / Troubleshooting\n\n[Our FAQs can be found here](docs/FAQs.md).\n\n## License\n\nUIKit-cross-platform is free software; you can redistribute it and/or modify it under the terms of the [MIT License](LICENSE).\n","funding_links":[],"categories":["Swift","HarmonyOS"],"sub_categories":["Windows Manager"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowkey%2FUIKit-cross-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflowkey%2FUIKit-cross-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowkey%2FUIKit-cross-platform/lists"}