KiteSsotExtension

abstract class KiteSsotExtension

The single source of truth for your app's identity.

Apply the plugin to the root project and describe your app once. KiteSSOT carries those values out to Android and Apple for you, so the same name, version, and bundle id cannot drift apart across platforms.

Three lines are a complete setup:

kiteSsot {
appName = "Jetzy"
version = "1.4.0"
appId = "com.example.jetzy"
}

Everything else is optional. Locales are discovered from your Compose resources, the shared module is detected when there is only one, and the Android application project is found the same way.

How the blocks work

Shared facts live here at the top. Anything that is genuinely Android-only or Apple-only lives in android or ios. Feature blocks such as logo and buildConfig switch themselves on simply by being configured, so there is no second flag to remember.

What runs, and when

Applying identity happens during an ordinary build. Changing files on disk never does. Logo installation and the Apple source tasks only run when you invoke them by name, and dryRun, backups, and the conflict policy still apply when you do.

Wiring values into your own build logic

Every input is a lazy Gradle Property, so you can hand one to another task without resolving it early:

val minSdk = kiteSsot.android.minSdk   // Provider<Int>, still lazy

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard

Android-only settings. Configure with kiteSsot { android { } }.

Link copied to clipboard
abstract val androidAppDirectory: DirectoryProperty

Use modules { androidAppDirectory = ... }.

Link copied to clipboard

Android application id: appId plus KiteSsotAndroidExtension.idSuffix.

Link copied to clipboard
abstract val androidApplicationIdSuffix: Property<String>

Use android { idSuffix = ... }.

Link copied to clipboard
abstract val androidApplicationProjects: ListProperty<String>

Use modules { androidApps(...) }.

Link copied to clipboard
abstract val appId: Property<String>

Reverse-DNS base for both platform identifiers, for example com.example.jetzy.

Link copied to clipboard
abstract val appLogoAndroidSafeZoneRatio: Property<Double>

Use logo { androidSafeZone = ... }.

Link copied to clipboard
abstract val appLogoBackgroundColor: Property<String>

Use logo { backgroundColor = ... }.

Link copied to clipboard
abstract val appLogoPngBackground: RegularFileProperty

Use logo { background = ... }.

Link copied to clipboard
abstract val appLogoPngForeground: RegularFileProperty

Use logo { foreground = ... }.

Link copied to clipboard
abstract val appName: Property<String>

The display name users see on their home screen.

Link copied to clipboard
abstract val backupBeforeRewrite: Property<Boolean>

Use backups.

Link copied to clipboard
abstract val backups: Property<Boolean>

Keep a first-contact recovery copy before rewriting a file.

Link copied to clipboard

Generated runtime constants for commonMain. Configure with kiteSsot { buildConfig { } }.

Link copied to clipboard
abstract val bundleIdBase: Property<String>

Use appId.

Link copied to clipboard
val canonicalLocales: Provider<List<String>>

Normalized, de-duplicated locale tags.

Link copied to clipboard
abstract val cleanupLegacyLogoArtifacts: Property<Boolean>

Use logo { takeOverLegacyIcons = ... }.

Link copied to clipboard
abstract val composeResourcesDirectory: DirectoryProperty

Use modules { composeResources = ... }.

Link copied to clipboard
abstract val dryRun: Property<Boolean>

Make the explicit source-changing tasks report what they would do and write nothing.

Link copied to clipboard
abstract val extraOptIns: ListProperty<String>

Use nativeOptIns { add(...) }.

Link copied to clipboard
abstract val filterAndroidResources: Property<Boolean>

Use android { filterResourcesToLocales = ... }.

Link copied to clipboard
abstract val interopProjectPaths: ListProperty<String>

Use nativeOptIns { projects(...) }.

Link copied to clipboard

Apple-only settings. Configure with kiteSsot { ios { } }.

Link copied to clipboard
abstract val iosAppDirectory: DirectoryProperty

Use ios { appDirectory = ... }.

Link copied to clipboard
abstract val iosAppIconDirectory: DirectoryProperty

Use ios { appIconDirectory = ... }.

Link copied to clipboard
abstract val iosBuildNumber: Property<String>

Use ios { buildNumber = ... }.

Link copied to clipboard
val iosBundleId: Provider<String>
Link copied to clipboard
abstract val iosBundleSuffix: Property<String>

Use ios { bundleIdSuffix = ... }.

Link copied to clipboard
abstract val iosInfoPlistFile: RegularFileProperty

Use ios { infoPlist = ... }.

Link copied to clipboard
abstract val iosMarketingVersion: Property<String>

Use ios { marketingVersion = ... }.

Link copied to clipboard
abstract val iosPbxprojFile: RegularFileProperty

Use ios { pbxproj = ... }.

Link copied to clipboard
abstract val iosPodfileFile: RegularFileProperty

Use ios { podfile = ... }.

Link copied to clipboard
abstract val iosPreviousSharedModuleName: Property<String>

Use ios { sync { renameSharedModule(from, to) } }.

Link copied to clipboard
abstract val iosSharedModuleName: Property<String>

Use ios { sync { renameSharedModule(from, to) } }.

Link copied to clipboard
abstract val javaVersion: Property<Int>
Link copied to clipboard
abstract val jvmTarget: Property<Int>

Java and Kotlin JVM level for the whole build, for example 21.

Link copied to clipboard
abstract val locales: ListProperty<String>

Locale tags such as en, en-US, or sr-Latn.

Link copied to clipboard

App icon installation. Configure with kiteSsot { logo { } }.

Link copied to clipboard

Where your modules live. Configure with kiteSsot { modules { } }.

Link copied to clipboard

Kotlin/Native interop opt-in markers. Configure with kiteSsot { nativeOptIns { } }.

Link copied to clipboard

Which values KiteSSOT is allowed to apply. Configure with kiteSsot { propagate { } }.

Link copied to clipboard
abstract val propagateAndroidSdk: Property<Boolean>

Use android { applySdkLevels = ... }.

Link copied to clipboard
abstract val propagateAppName: Property<Boolean>

Use propagate { appName = ... }.

Link copied to clipboard
abstract val propagateBundleId: Property<Boolean>

Use propagate { bundleId = ... }.

Link copied to clipboard
abstract val propagateInteropOptIns: Property<Boolean>

Configure nativeOptIns { } instead. Configuring the block is the opt-in.

Link copied to clipboard
abstract val propagateLocaleList: Property<Boolean>

Use propagate { locales = ... }.

Link copied to clipboard
abstract val propagateLogo: Property<Boolean>

Configure logo { } instead. Configuring the block is the opt-in.

Link copied to clipboard
abstract val propagateSharedModule: Property<Boolean>

Call ios { sync { renameSharedModule(from, to) } } instead.

Link copied to clipboard
abstract val propagateVersion: Property<Boolean>

Use propagate { version = ... }.

Link copied to clipboard

The selected shared KMP project path.

Link copied to clipboard
abstract val sanitizeIosProject: Property<Boolean>

Use ios { sync { sanitizePlist = ... } }.

Link copied to clipboard
abstract val scheme: Property<VersionCodeScheme>

The one formula that turns version into a store build number.

Link copied to clipboard
abstract val sharedProjectPath: Property<String>

Use modules { shared = ... }.

Link copied to clipboard
abstract val syncIos: Property<Boolean>

Configure ios { sync { } } instead. Configuring the block is the opt-in.

Link copied to clipboard
abstract val version: Property<String>

The release version you show to users, as x.y.z.

Link copied to clipboard
val versionCode: Provider<Int>

The resolved Android versionCode for this build.

Link copied to clipboard
abstract val versionCodeOverride: Property<Int>

Use android { versionCode = ... }.

Link copied to clipboard
abstract val versionName: Property<String>

Use version.

Link copied to clipboard

Browser Kotlin/JS helpers. Configure with kiteSsot { web { } }.

Functions

Link copied to clipboard
fun android(action: Action<in KiteSsotAndroidExtension>)

Configure SDK levels, the Android id suffix, and the Play re-upload dial.

Link copied to clipboard

Generate a Kotlin object of public runtime configuration.

Link copied to clipboard
fun ios(action: Action<in KiteSsotIosExtension>)

Configure the Apple bundle suffix, build number, paths, and source sync.

Link copied to clipboard
fun logo(action: Action<in KiteSsotLogoExtension>)

Point KiteSSOT at your foreground and background art.

Link copied to clipboard
fun modules(action: Action<in KiteSsotModulesExtension>)

Tell KiteSSOT where the shared and Android application projects are.

Link copied to clipboard

Add opt-in markers to the selected Kotlin/Native compilations.

Link copied to clipboard
fun propagate(action: Action<in KiteSsotPropagateExtension>)

Turn individual value categories off without deleting their configuration.

Link copied to clipboard

Set the shared build-number formula. See scheme.

Link copied to clipboard
fun web(action: Action<in KiteSsotWebExtension>)

Configure optional browser Kotlin/JS source generation.