KiteSsotExtension

abstract class KiteSsotExtension

Root configuration for KiteSSOT.

Apply the plugin and configure this model in the root project. Set only the values that KiteSSOT should own. Most unset scalar values leave existing project configuration alone. iosMarketingVersion can inherit versionName, locales can be discovered, and enabled features may require related inputs.

Present identity, locale, and Android SDK values are applied by default. Source changes, logo installation, Native compiler opt-ins, and Android resource filtering require explicit switches.

A small setup looks like this:

kiteSsot {
appName = "Jetzy"
versionName = "1.4.0"
bundleIdBase = "com.example.jetzy"
sharedProjectPath = ":shared"

android {
compileSdk = 36
minSdk = 26
targetSdk = 36
}
}

Scalar and list inputs use Gradle Property and ListProperty. Typed paths use DirectoryProperty and RegularFileProperty. Build logic can keep a value lazy, for example val minSdk = ssot.android.minSdk, and pass that provider to another Gradle property. The derived read-only providers are versionCode, androidApplicationId, iosBundleId, canonicalLocales, and resolvedSharedProjectPath.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard

Android SDK options. Configure them with kiteSsot { android { ... } }.

Link copied to clipboard
abstract val androidAppDirectory: DirectoryProperty

Optional Android app directory.

Link copied to clipboard

Read-only Android ID: bundleIdBase plus androidApplicationIdSuffix.

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

Optional suffix appended to bundleIdBase for the Android application ID.

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

Exact Android application project paths for app identity, versions, name, locale filters, and logo output.

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

Legacy Android app directory. Prefer androidApplicationProjects.

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

Fraction of Android's adaptive icon canvas used by the foreground.

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

Solid logo background in #RRGGBB or #AARRGGBB form.

Link copied to clipboard
abstract val appLogoPngBackground: RegularFileProperty

Background PNG used by both logo installers.

Link copied to clipboard
abstract val appLogoPngForeground: RegularFileProperty

Foreground PNG used by both logo installers.

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

Optional app display name.

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

Keep first-contact recovery copies for source rewrites and Apple icons.

Link copied to clipboard

Generated runtime constants for the selected KMP project's commonMain.

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

Optional reverse-DNS base for Android and Apple identifiers.

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

Read-only normalized and de-duplicated locale list.

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

Allow Android logo installation to take over known legacy icon files.

Link copied to clipboard
abstract val composeResourcesDirectory: DirectoryProperty

Optional Compose resources directory used for locale discovery.

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

Preview explicitly invoked source-changing tasks. Default is false.

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

Additional fully qualified opt-in markers for the selected Native scope.

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

Replace the selected Android app's locale filters with locales.

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

Exact KMP project paths for Native opt-ins.

Link copied to clipboard

Apple-only options. Configure them with kiteSsot { ios { ... } }.

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

Legacy relative path. Prefer iosAppDirectory.

Link copied to clipboard
abstract val iosAppDirectory: DirectoryProperty

Apple source tree searched by explicit Swift import migration.

Link copied to clipboard
abstract val iosAppIconDirectory: DirectoryProperty

Destination for Apple AppIcon installation.

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

Legacy Apple AppIcon directory. Prefer iosAppIconDirectory.

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

Optional Apple build number for CURRENT_PROJECT_VERSION.

Link copied to clipboard
val iosBundleId: Provider<String>

Read-only Apple ID: bundleIdBase plus iosBundleSuffix.

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

Optional suffix appended to bundleIdBase for the Apple bundle ID.

Link copied to clipboard
abstract val iosInfoPlistFile: RegularFileProperty

Source XML Info.plist used by explicit sanitization.

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

Legacy relative path. Prefer iosInfoPlistFile.

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

Optional Apple marketing version.

Link copied to clipboard
abstract val iosPbxprojFile: RegularFileProperty

Xcode project.pbxproj used by explicit Apple tasks.

Link copied to clipboard
abstract val iosPodfileFile: RegularFileProperty

Podfile used by explicit shared-module migration.

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

Legacy relative path. Prefer iosPodfileFile.

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

Previous CocoaPods and Swift module name for an explicit reference migration. Set it with iosSharedModuleName.

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

Legacy relative path. Prefer iosPbxprojFile.

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

New CocoaPods and Swift module name for an explicit reference migration. Set it with iosPreviousSharedModuleName.

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

Optional Java and Kotlin JVM level.

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

Optional locale tags such as en, en-US, and sr-Latn.

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

Legacy input for iosPreviousSharedModuleName.

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

Apply values from android {} to compatible modules. Default is true.

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

Apply a present appName. Default is true.

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

Apply resolved platform identifiers. Default is true.

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

Add KiteSSOT's built-in interop markers to selected Native compilations.

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

Add locale metadata to enabled consumers. Default is true.

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

Enable explicitly invoked logo installers. Default is false.

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

Enable explicit Podfile and Swift shared-module migration under syncIos. Default is false.

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

Apply present platform versions and build numbers. Default is true.

Link copied to clipboard

Read-only shared project path, including the legacy fallback.

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

Maintain KiteSSOT references in a source XML Info.plist.

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

Legacy shared module name. Prefer the specific selectors below.

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

Absolute Gradle path of the KMP project that owns generated commonMain source, for example :shared.

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

Authorize explicitly invoked Apple source tasks. Default is false.

Link copied to clipboard
val versionCode: Provider<Int>

Resolved Android version code.

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

Optional explicit Android versionCode.

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

Optional release version shown to users.

Link copied to clipboard

Browser Kotlin/JS options. Node.js and wasm targets are unsupported.

Functions

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

Configure the nested Android SDK/release model.

Link copied to clipboard

Configure optional common Kotlin constants generation.

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

Configure the nested Apple-specific model.

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

Configure optional browser Kotlin/JS source generation.