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.

Identity, locale, and Android SDK values you set 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>

Whether first-contact recovery copies are kept 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>

Whether Android logo installation may 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>

Whether explicitly invoked source-changing tasks only preview their work. The 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>

Whether the selected Android app's locale filters are replaced 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>

Whether values from android { } reach compatible modules. The default is true.

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

Whether a set appName is applied. The default is true.

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

Whether the resolved platform identifiers are applied. The default is true.

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

Whether KiteSSOT's built-in interop markers are added to selected Native compilations.

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

Whether locale metadata reaches enabled consumers. The default is true.

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

Whether the explicitly invoked logo installer tasks are authorized. The default is false.

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

Whether explicit Podfile and Swift shared-module migration is authorized under syncIos. The default is false.

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

Whether set platform versions and build numbers are applied. The 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>

Whether KiteSSOT maintains its 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>

Whether the explicitly invoked Apple source tasks are authorized. The 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.