
Comprehensive cross-platform UI and logic solution offering high performance, unified codebase, and dynamic flexibility. Supports native UI rendering, lightweight SDK, and multiple programming paradigms.
Kuikly is a comprehensive cross-platform solution for UI and logic based on Kotlin multi-platform. It was launched by Tencent's company-level Oteam in the front-end field. It aims to provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. Currently supported platforms:
Since its launch, Kuikly has gained wide recognition from the business. It has been used by many products such as QQ, QQ Music, QQ Browser, Tencent News, Sogou Input Method, MyApp Hub(Tencent's app store), WeSing, Kugou Music, Kuwo Music, Tencent Self-selected Stock, ima.copilot, Weishi, etc.
.
├── core # Cross-platform module implementing core capabilities like responsive UI, layout algorithms, Bridge communication, etc.
├── src
├── commonMain # Shared cross-platform code, defining cross-platform interfaces
├── androidMain # Android platform implementation (outputs aar)
├── jvmMain # Generic JVM platform code (no Android APIs, outputs jar)
├── appleMain # apple platform (iOS & macOS) implementation (outputs framework)
├── ohosArm64Main # Ohos platform implementation(outputs so)
├── jsMain # H5 and MiniApp platform implementation(outputs js)
├── core-render-android # Android platform renderer module
├── core-render-ios # iOS platform renderer module
├── core-render-ohos # HarmonyOS platform rendering module
├── core-render-web # H5 and MiniApp platform rendering module
├── core-annotations # Annotations module, defining business annotations like @Page
├── core-ksp # Annotation processing module, generates Core entry files
├── buildSrc # Build scripts for compilation, packaging, and artifact splitting
├── demo # DSL example code
├── androidApp # Android host shell project
├── iosApp # iOS host shell project
├── macApp # macOS host shell project
├── ohosApp # Ohos host shell project
├── miniApp # miniApp host shell project
├── h5App # h5App host shell project
├── compose # Cross-platform module implementing Compose UI, layout, and Kuikly bridging capabilities
├── src
├── commonMain # Shared cross-platform code, including Compose UI components, layout and event handling
├── androidMain # Android platform specific implementation
└── nativeMain # iOS and HarmonyOS platform specific implementation
└── jsMain # H5 and MiniApp platform specific implementationNote: The Compose directory contains cross-platform source code based on Jetpack Compose 1.7.3 version. We have made necessary modifications and adaptations to the original Compose code to support Kuikly framework's rendering requirements. Some unnecessary features have been commented out to facilitate future upgrades. To ensure stable feature support and avoid conflicts with official code, we have changed the package name from
androidx.composetocom.tencent.kuikly.compose. The original Compose code is from JetBrains Compose Multiplatform.
Refer to Environment Configuration
if your Android Studio Version >= (2024.2.1) Please switch your Gradle JDK Version to JDK17 (this Version default Gradle JDK is 21, it incompatible with the configuration used by the project)
Android Studio -> Settings -> Build,Execution,Deployment -> Build Tools -> Gradle -> Gradle JDK
DevEco Studio 5.1.0 or newer(API Version >= 18)(You can check the API Version through【 DevECo Studio -> Help -> About HarmonyOS SDK 】)
JDK17
Ensure environment preparation is complete before building:
KuiklyUI root directory in Android Studio and sync projectEnsure environment preparation is complete before building:
iosApp directorypod install --repo-update
KuiklyUI root directory in Android Studio and sync projectAlternatively, open KuiklyUI/iosApp in Xcode and Run
Note: The iosApp project will execute the KMP script when compiling. If you encounter an error with the script read and write file permissions, you need to set
User Script SandboxingtoNoinXcode -> Build Setting.
Ensure environment preparation is complete before building:
KuiklyUI root directory, run the HarmonyOS cross-platform product compile script:
./2.0_ohos_demo_build.shKuiklyUI/ohosApp in DevEco Studio and sync projectFile -> Project Structure -> Signing Configs
entry, Run OhosAppConfigure environment variables pointing to HarmonyOS SDK path:
Variable: OHOS_SDK_HOME
Path: %TOOL_HOME%\sdk
Variable: TOOL_HOME
Path: D:\DevEcoStudio
Note: "D:\DevEcoStudio" uses D drive as an example. Any drive except C drive can be used.
In KuiklyUI root directory, run the Windows build script:
2.0_ohos_demo_build.batOr run manually:
set KUIKLY_AGP_VERSION=7.4.2
set KUIKLY_KOTLIN_VERSION=2.0.21-KBA-010
gradlew.bat -c settings.2.0.ohos.gradle.kts :demo:linkSharedDebugSharedOhosArm64Copy artifacts to ohosApp (automatically done by bat script):
demo\build\bin\ohosArm64\sharedDebugShared\libshared.so → ohosApp\entry\libs\arm64-v8a\
demo\build\bin\ohosArm64\sharedDebugShared\libshared_api.h → ohosApp\entry\src\main\cpp\thirdparty\biz_entry\
Open KuiklyUI/ohosApp in DevEco Studio and sync project
Connect to Ohos Phone or start the Ohos Emulator, and perform a signature operation File -> Project Structure -> Signing Configs
Use DevEco Studio Run entry, Run OhosApp
Note: Windows compilation requires Kotlin toolchain version
2.0.21-KBA-010which supports Windows/Linux platforms.
The KuiklyUI directory contains Gradle configurations for various Kotlin versions:
Naming convention: x.x.xx.gradle.kts (default uses Kotlin 2.0.21)
Test publishing scripts for each version are available as x.x.xx_test_publish.sh for building local artifacts.
Note: Kotlin 1.3.10/1.4.20 require JDK11
After successful build on any platform, you can modify Core, Render, and Demo to experience Kuikly development.
Scan the QR code with an Android phone to quickly try the demo. For iPhone and HarmonyOS phones, please follow the steps above to compile and experience the demo app from the source code.
We welcome all developers to submit issues or PRs for Kuikly. Please review our Contribution Guide before contributing.
All project participants are expected to adhere to our Code of Conduct. Participation constitutes agreement to these terms.
Kuikly cross-platform solutions in the frontend field, but also were the first to implement them in the QQ business.Kuikly:
Kuikly. It is your collective effort that drives the continuous growth and improvement of Kuikly.
At Tencent, Kuikly has been deeply used by 20+ applications, covering 1,000+ pages and serving 500 million+ daily active users, meeting diverse complex requirements across various scenarios.
Since going open-source, more external applications beyond Tencent have been actively adopting Kuikly. Additional use cases will be progressively shared upon obtaining approval from respective partners.For typical business application scenarios, please refer to: Application Scenario Cases
Scan the QR codes below to follow our latest updates or contact us for inquiries.
The copyright notice pertaining to the Tencent code in this repo was previously in the name of “THL A29 Limited.” That entity has now been de-registered. You should treat all previously distributed copies of the code as if the copyright notice was in the name of “Tencent.”
Kuikly is a comprehensive cross-platform solution for UI and logic based on Kotlin multi-platform. It was launched by Tencent's company-level Oteam in the front-end field. It aims to provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. Currently supported platforms:
Since its launch, Kuikly has gained wide recognition from the business. It has been used by many products such as QQ, QQ Music, QQ Browser, Tencent News, Sogou Input Method, MyApp Hub(Tencent's app store), WeSing, Kugou Music, Kuwo Music, Tencent Self-selected Stock, ima.copilot, Weishi, etc.
.
├── core # Cross-platform module implementing core capabilities like responsive UI, layout algorithms, Bridge communication, etc.
├── src
├── commonMain # Shared cross-platform code, defining cross-platform interfaces
├── androidMain # Android platform implementation (outputs aar)
├── jvmMain # Generic JVM platform code (no Android APIs, outputs jar)
├── appleMain # apple platform (iOS & macOS) implementation (outputs framework)
├── ohosArm64Main # Ohos platform implementation(outputs so)
├── jsMain # H5 and MiniApp platform implementation(outputs js)
├── core-render-android # Android platform renderer module
├── core-render-ios # iOS platform renderer module
├── core-render-ohos # HarmonyOS platform rendering module
├── core-render-web # H5 and MiniApp platform rendering module
├── core-annotations # Annotations module, defining business annotations like @Page
├── core-ksp # Annotation processing module, generates Core entry files
├── buildSrc # Build scripts for compilation, packaging, and artifact splitting
├── demo # DSL example code
├── androidApp # Android host shell project
├── iosApp # iOS host shell project
├── macApp # macOS host shell project
├── ohosApp # Ohos host shell project
├── miniApp # miniApp host shell project
├── h5App # h5App host shell project
├── compose # Cross-platform module implementing Compose UI, layout, and Kuikly bridging capabilities
├── src
├── commonMain # Shared cross-platform code, including Compose UI components, layout and event handling
├── androidMain # Android platform specific implementation
└── nativeMain # iOS and HarmonyOS platform specific implementation
└── jsMain # H5 and MiniApp platform specific implementationNote: The Compose directory contains cross-platform source code based on Jetpack Compose 1.7.3 version. We have made necessary modifications and adaptations to the original Compose code to support Kuikly framework's rendering requirements. Some unnecessary features have been commented out to facilitate future upgrades. To ensure stable feature support and avoid conflicts with official code, we have changed the package name from
androidx.composetocom.tencent.kuikly.compose. The original Compose code is from JetBrains Compose Multiplatform.
Refer to Environment Configuration
if your Android Studio Version >= (2024.2.1) Please switch your Gradle JDK Version to JDK17 (this Version default Gradle JDK is 21, it incompatible with the configuration used by the project)
Android Studio -> Settings -> Build,Execution,Deployment -> Build Tools -> Gradle -> Gradle JDK
DevEco Studio 5.1.0 or newer(API Version >= 18)(You can check the API Version through【 DevECo Studio -> Help -> About HarmonyOS SDK 】)
JDK17
Ensure environment preparation is complete before building:
KuiklyUI root directory in Android Studio and sync projectEnsure environment preparation is complete before building:
iosApp directorypod install --repo-update
KuiklyUI root directory in Android Studio and sync projectAlternatively, open KuiklyUI/iosApp in Xcode and Run
Note: The iosApp project will execute the KMP script when compiling. If you encounter an error with the script read and write file permissions, you need to set
User Script SandboxingtoNoinXcode -> Build Setting.
Ensure environment preparation is complete before building:
KuiklyUI root directory, run the HarmonyOS cross-platform product compile script:
./2.0_ohos_demo_build.shKuiklyUI/ohosApp in DevEco Studio and sync projectFile -> Project Structure -> Signing Configs
entry, Run OhosAppConfigure environment variables pointing to HarmonyOS SDK path:
Variable: OHOS_SDK_HOME
Path: %TOOL_HOME%\sdk
Variable: TOOL_HOME
Path: D:\DevEcoStudio
Note: "D:\DevEcoStudio" uses D drive as an example. Any drive except C drive can be used.
In KuiklyUI root directory, run the Windows build script:
2.0_ohos_demo_build.batOr run manually:
set KUIKLY_AGP_VERSION=7.4.2
set KUIKLY_KOTLIN_VERSION=2.0.21-KBA-010
gradlew.bat -c settings.2.0.ohos.gradle.kts :demo:linkSharedDebugSharedOhosArm64Copy artifacts to ohosApp (automatically done by bat script):
demo\build\bin\ohosArm64\sharedDebugShared\libshared.so → ohosApp\entry\libs\arm64-v8a\
demo\build\bin\ohosArm64\sharedDebugShared\libshared_api.h → ohosApp\entry\src\main\cpp\thirdparty\biz_entry\
Open KuiklyUI/ohosApp in DevEco Studio and sync project
Connect to Ohos Phone or start the Ohos Emulator, and perform a signature operation File -> Project Structure -> Signing Configs
Use DevEco Studio Run entry, Run OhosApp
Note: Windows compilation requires Kotlin toolchain version
2.0.21-KBA-010which supports Windows/Linux platforms.
The KuiklyUI directory contains Gradle configurations for various Kotlin versions:
Naming convention: x.x.xx.gradle.kts (default uses Kotlin 2.0.21)
Test publishing scripts for each version are available as x.x.xx_test_publish.sh for building local artifacts.
Note: Kotlin 1.3.10/1.4.20 require JDK11
After successful build on any platform, you can modify Core, Render, and Demo to experience Kuikly development.
Scan the QR code with an Android phone to quickly try the demo. For iPhone and HarmonyOS phones, please follow the steps above to compile and experience the demo app from the source code.
We welcome all developers to submit issues or PRs for Kuikly. Please review our Contribution Guide before contributing.
All project participants are expected to adhere to our Code of Conduct. Participation constitutes agreement to these terms.
Kuikly cross-platform solutions in the frontend field, but also were the first to implement them in the QQ business.Kuikly:
Kuikly. It is your collective effort that drives the continuous growth and improvement of Kuikly.
At Tencent, Kuikly has been deeply used by 20+ applications, covering 1,000+ pages and serving 500 million+ daily active users, meeting diverse complex requirements across various scenarios.
Since going open-source, more external applications beyond Tencent have been actively adopting Kuikly. Additional use cases will be progressively shared upon obtaining approval from respective partners.For typical business application scenarios, please refer to: Application Scenario Cases
Scan the QR codes below to follow our latest updates or contact us for inquiries.
The copyright notice pertaining to the Tencent code in this repo was previously in the name of “THL A29 Limited.” That entity has now been de-registered. You should treat all previously distributed copies of the code as if the copyright notice was in the name of “Tencent.”