[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7517":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":18,"lastSyncTime":30,"discoverSource":31},7517,"skiko","JetBrains\u002Fskiko","JetBrains","Kotlin Multiplatform bindings to Skia","",null,"Kotlin",2150,183,32,24,0,1,2,15,3,63.29,"Apache License 2.0",false,"master",true,[],"2026-06-12 04:00:34","[![official project](http:\u002F\u002Fjb.gg\u002Fbadges\u002Fofficial.svg)](https:\u002F\u002Fconfluence.jetbrains.com\u002Fdisplay\u002FALL\u002FJetBrains+on+GitHub)\n[![version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdynamic\u002Fjson.svg?color=orange&label=latest%20version&query=%24.tag_name&url=https%3A%2F%2Fgithub.com%2FJetBrains%2Fskiko%2Freleases%2Flatest)](https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fskiko\u002Freleases\u002Flatest)\n# Kotlin Multiplatform library for Skia and window management #\n\nSkiko (short for Skia for Kotlin) is the graphical library exposing significant part\nof [Skia library](https:\u002F\u002Fskia.org) APIs to Kotlin, along with the gluing code for rendering context.\n\nSupported platforms:\n   * Kotlin\u002FJVM on Linux(x86_64 and arm64)\n   * Kotlin\u002FJVM on Windows(x86_64)\n   * Kotlin\u002FJVM on macOS(x86_64 and arm64)\n   * Kotlin\u002FJVM on Android(x86_64 and arm64), starting with API version 24\n   * Kotlin\u002FJS + WebAssembly in browsers\n   * Kotlin\u002FNative on iOS(arm64 and x64)\n   * Kotlin\u002FNative on macOS (arm64 and x64)\n\n## API documentation\n\n See autogenerated API docs at [https:\u002F\u002Fjetbrains.github.io\u002Fskiko\u002F](https:\u002F\u002Fjetbrains.github.io\u002Fskiko\u002F)\n\n## Using as dependency\n\nTo use in build scripts one has to compute appropriate target platform and version,\ni.e. something like this\n\n```kotlin\n    repositories {\n        mavenCentral()\n        maven(\"https:\u002F\u002Fredirector.kotlinlang.org\u002Fmaven\u002Fcompose-dev\")\n    }\n\n    val osName = System.getProperty(\"os.name\")\n    val targetOs = when {\n        osName == \"Mac OS X\" -> \"macos\"\n        osName.startsWith(\"Win\") -> \"windows\"\n        osName.startsWith(\"Linux\") -> \"linux\"\n        else -> error(\"Unsupported OS: $osName\")\n    }\n\n    val osArch = System.getProperty(\"os.arch\")\n    val targetArch = when (osArch) {\n        \"x86_64\", \"amd64\" -> \"x64\"\n        \"aarch64\" -> \"arm64\"\n        else -> error(\"Unsupported arch: $osArch\")\n    }\n\n    val version = \"0.8.9\" \u002F\u002F or any more recent version\n    val target = \"${targetOs}-${targetArch}\"\n    dependencies {\n        implementation(\"org.jetbrains.skiko:skiko-awt-runtime-$target:$version\")\n    }\n```\n\nSimple example for Kotlin\u002FJVM\n```kotlin\nfun main() {\n    val skiaLayer = SkiaLayer()\n    skiaLayer.renderDelegate = SkiaLayerRenderDelegate(skiaLayer, object : SkikoRenderDelegate {\n        val paint = Paint().apply {\n            color = Color.RED\n        }\n        override fun onRender(canvas: Canvas, width: Int, height: Int, nanoTime: Long) {\n            canvas.clear(Color.CYAN)\n            val ts = nanoTime \u002F 5_000_000\n            canvas.drawCircle( (ts % width).toFloat(), (ts % height).toFloat(), 20f, paint )\n        }\n    })\n    SwingUtilities.invokeLater {\n        val window = JFrame(\"Skiko example\").apply {\n            defaultCloseOperation = WindowConstants.EXIT_ON_CLOSE\n            preferredSize = Dimension(800, 600)\n        }\n        skiaLayer.attachTo(window.contentPane)\n        skiaLayer.needRedraw()\n        window.pack()\n        window.isVisible = true\n    }\n}\n```\n\nSimple example for iOS\n```kotlin\nfun main() {\n    val args = emptyArray\u003CString>()\n    memScoped {\n        val argc = args.size + 1\n        val argv = (arrayOf(\"skikoApp\") + args).map { it.cstr.ptr }.toCValues()\n        autoreleasepool {\n            UIApplicationMain(argc, argv, null, NSStringFromClass(SkikoAppDelegate))\n        }\n    }\n}\n\nclass SkikoAppDelegate : UIResponder, UIApplicationDelegateProtocol {\n    companion object : UIResponderMeta(), UIApplicationDelegateProtocolMeta\n\n    @ObjCObjectBase.OverrideInit\n    constructor() : super()\n\n    private var _window: UIWindow? = null\n    override fun window() = _window\n    override fun setWindow(window: UIWindow?) {\n        _window = window\n    }\n\n    override fun application(application: UIApplication, didFinishLaunchingWithOptions: Map\u003CAny?, *>?): Boolean {\n        window = UIWindow(frame = UIScreen.mainScreen.bounds)\n        window!!.rootViewController = SkikoViewController(\n            SkikoUIView(\n                SkiaLayer().apply {\n                    renderDelegate = SkiaLayerRenderDelegate(skiaLayer, object : SkikoRenderDelegate {\n                      val paint = Paint().apply { color = Color.RED }\n                      override fun onRender(canvas: Canvas, width: Int, height: Int, nanoTime: Long) {\n                        canvas.clear(Color.CYAN)\n                        val ts = nanoTime \u002F 5_000_000\n                        canvas.drawCircle( (ts % width).toFloat(), (ts % height).toFloat(), 20f, paint )\n                      }\n                    })\n                }\n            )\n        )\n        window!!.makeKeyAndVisible()\n        return true\n    }\n}\n```\nSee this [sample](\u002Fsamples\u002FSkiaMultiplatformSample) for complete example.\n","Skiko 是一个为 Kotlin 多平台提供 Skia 图形库绑定的项目。它将 Skia 的大部分 API 暴露给 Kotlin，并提供了渲染上下文所需的粘合代码，支持包括 Linux、Windows、macOS、Android、Web 浏览器以及 iOS 在内的多种平台。其核心功能在于允许开发者使用统一的 Kotlin 代码来创建跨平台图形应用，极大地简化了开发流程。适用于需要在不同操作系统上实现一致图形表现的应用场景，如跨平台桌面应用、移动应用或网页应用等。","2026-06-11 03:12:50","top_language"]