Skip to main content

Installation

Analytics Notice

We collect some non-identifiable analytics data to help design and improve SKIE features. This is OPTIONAL. You can read more about what we're capturing and how to configure it here.

To install SKIE, you'll need to do the following:

1. Locate the KMP module where you are creating Xcode Frameworks.

Usually, the build.gradle.kts in this module either applies the kotlin("native.cocoapods") plugin or has a framework block somewhere inside the kotlin configuration block.

tip

The plugin needs to be applied only in the modules that create Xcode Frameworks. Any code exported in that Framework will be instrumented by SKIE, no matter which Kotlin module it belongs to.

As a result, SKIE will also run on all exported dependencies. This is important to keep in mind, and you may want to use the configuration to change this behavior.

2. Add the SKIE Gradle plugin to the build.gradle.kts of the module that builds the Xcode Framework:

build.gradle.kts
plugins {
id("co.touchlab.skie") version "0.10.0"
}
info

The SKIE plugin is currently deployed to Maven Central. If you get errors about not finding the plugin, you'll need to add mavenCentral() to your plugin repositories.

Example
One way is to add the following into your settings.gradle.kts
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}

dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
Gradle Cache

Gradle fails to resolve some SKIE artifacts sometimes and caches the 404 result. The problem seems to be related to Gradle's caching mechanism - it takes some time for all artifacts to propagate to all regional caches after we release a new version. When that happens, people can see weird errors thrown by Gradle. Either it won't be able to resolve a SKIE artifact, or it'll crash on ClassNotFoundException because it loaded a wrong .jar file.

To resolve the issue, users need to run ./gradlew dependencies --refresh-dependencies (the task shouldn't matter, it could be model or assemble too). If that doesn't work, users need to wait for their region's cache to refresh and then run the task with the --refresh-dependencies flag again. If the problem persists for over a day, please open an issue. We're working with Gradle to alleviate the issue.

3. Are you integrating SKIE into an existing project? Be sure to read the migration documentation if you haven't done so already.

4. That's it! Go ahead and try building your Xcode Framework, or read about SKIE features and how to customize them.