flowkey
UIKit-cross-platform
Swift

Cross-platform Swift implementation of UIKit, mostly for Android

Last updated Jul 6, 2026
664
Stars
39
Forks
19
Issues
+1
Stars/day
Attention Score
83
Language breakdown
No language data available.
โ–ธ Files click to expand
README

CircleCI Swift5.4 Platforms License codecov

UIKit-cross-platform

Your Swift UI Code on Android

UIKit-cross-platform is a UI framework for native apps, which enables code targeting iOS UIKit to run on other platforms, particularly on Android.

Goal

Currently 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.

This framework aims to combine both advantages, having native performance and writing code only once but still keeping a native look & feel.

How to run your iOS Project on Android

Try out the demo

This project includes a DemoApp which runs on iOS, Android and Mac.

How to run it on different platforms:

  • Clone this project, cd into it and run git submodule update --init --recursive
  • Open ./samples/getting-started/DemoApp.xcodeproj in Xcode
1. Run DemoApp target for the iOS App 2. Run DemoAppMac target for the Mac App

Additional setup instructions

Adding UIKit-cross-platform

UIKit-cross-platform has to be added as a dependency to your project including its subdependencies.

The recommended way is to use git submodules to add it to an UIKit subdirectory. In order to do so use the following command:

git submodule add git@github.com:flowkey/UIKit-cross-platform.git UIKit && git submodule update --init --recursive UIKit

Setup build environment

brew install cmake && brew install ninja
1. Open Preferences in Android Studio 2. Go to Appearance & Behavior -> System Settings -> Android SDK 3. under SDK Platforms: install SDK for API Level 29 4. under SDK Tools, install Android SDK Build Tools 5. under SDK Tools, install NDK 27.1.12297006 (tick Show Package Details to see all available versions) 6. Press Apply / OK to install SDKs 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)

Architecture

UIKit-cross-platform renders with SDLgpu which translates down to lower-level OpenGL instructions.

On Android, CMake compiles Swift Code into native binaries via Ninja, which are called through the NDK.

More detailed information about the architecture can be found here

API documentation

This framework uses the Apple UIKit API, therefore the official Apple Docs serve as documentation for the already implemented features.

How to contribute

Contributions are very welcome and helpful ๐Ÿ™Œ

If you are looking for a feature or find a bug, please create an Issue.

For additional information please refer to our contribution guidelines.

FAQs / Troubleshooting

Our FAQs can be found here.

License

UIKit-cross-platform is free software; you can redistribute it and/or modify it under the terms of the MIT License.

ยฉ 2026 GitRepoTrend ยท flowkey/UIKit-cross-platform ยท Updated daily from GitHub