SyncIosConfigTask

@DisableCachingByDefault(because = "Explicit migration mutates user-owned source files and must execute its safety checks.")
abstract class SyncIosConfigTask : DefaultTask

Explicit legacy migration for a source Info.plist, project.pbxproj, Podfile, and Swift imports. It is deliberately non-cacheable and always computes the complete enabled text plan before writing. All targets are contained, symlink-free, staged, locked, and committed as one recoverable batch; write-once backups are created when the backup input is enabled. Swift discovery does not follow links and is bounded by depth and visited-entry count; all input snapshots and rendered outputs share a cumulative pre-commit budget.

pbxproj changes are allowed only for targetNames, or for the sole application target when that list is empty. Parser uncertainty, missing settings, and target ambiguity abort the whole plan. When propagateLogo is enabled, every selected configuration must declare ASSETCATALOG_COMPILER_APPICON_NAME; it is aligned to the configured appiconsetDir catalog rather than leaving installed assets disconnected from the application. Shared-module migration requires both iosPreviousSharedModuleName and iosSharedModuleName; it never guesses from a Podfile.

When splashEnabled is on, the same plist transaction also writes the UILaunchScreen dictionary, and the splash color/image sets are installed in the asset catalog that holds the configured appiconsetDir.

Safety rails on every source-writing task

RailBehaviour
Explicit onlynever runs as part of an ordinary build; you invoke it by name
Authorizedthe matching DSL block must be configured, or the task is skipped
-Pkiteconfig.dryRun=truereports what it would write and remove, changes nothing
-Pkiteconfig.backups=truekeeps a recovery copy before replacing anything (default)
Ownershiprefuses to overwrite or delete a file it does not own
Atomicstaged then swapped, so an interrupted run leaves the tree intact

Both -P switches accept exactly true or false; anything else fails the build rather than being read as false.

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
@get:Internal
abstract val appiconsetDir: DirectoryProperty
Link copied to clipboard
@get:Input
@get:Optional
abstract val appName: Property<String>
Link copied to clipboard
@get:Input
abstract val backup: Property<Boolean>
Link copied to clipboard
@get:Input
@get:Optional
abstract val buildNumber: Property<String>
Link copied to clipboard
@get:Input
@get:Optional
abstract val bundleId: Property<String>
Link copied to clipboard
var description: @Nullable String
Link copied to clipboard
@get:Input
abstract val dryRun: Property<Boolean>
Link copied to clipboard
@get:Internal
var enabled: Boolean
Link copied to clipboard
var group: @Nullable String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
@get:Internal
abstract val infoPlistFile: RegularFileProperty
Link copied to clipboard
@get:Internal
abstract val iosAppDir: DirectoryProperty
Link copied to clipboard
@get:Input
@get:Optional
abstract val iosPreviousSharedModuleName: Property<String>
Link copied to clipboard
@get:Input
@get:Optional
abstract val iosSharedModuleName: Property<String>
Link copied to clipboard
@get:Input
abstract val locales: ListProperty<String>
Link copied to clipboard
@get:Input
@get:Optional
abstract val marketingVersion: Property<String>
Link copied to clipboard
@get:Internal
abstract val pbxprojFile: RegularFileProperty
Link copied to clipboard
@get:Input
abstract val plistConflictPolicy: Property<PlistConflictPolicy>
Link copied to clipboard
@get:Internal
abstract val podfile: RegularFileProperty
Link copied to clipboard
@get:Internal
abstract val projectRootDir: DirectoryProperty
Link copied to clipboard
@get:Input
@get:Optional
abstract val proMotion120Hz: Property<Boolean>
Link copied to clipboard
@get:Input
abstract val propagateAppName: Property<Boolean>
Link copied to clipboard
@get:Input
abstract val propagateBundleId: Property<Boolean>
Link copied to clipboard
@get:Input
abstract val propagateLocaleList: Property<Boolean>
Link copied to clipboard
@get:Input
abstract val propagateLogo: Property<Boolean>
Link copied to clipboard
@get:Input
abstract val propagateSharedModule: Property<Boolean>
Link copied to clipboard
@get:Input
abstract val propagateVersion: Property<Boolean>
Link copied to clipboard
@get:Input
abstract val sanitizeSourcePlist: Property<Boolean>
Link copied to clipboard
@get:Input
@get:Optional
abstract val splashColor: Property<String>
Link copied to clipboard
@get:Input
@get:Optional
abstract val splashDarkColor: Property<String>
Link copied to clipboard
@get:Internal
abstract val splashDarkImage: RegularFileProperty
Link copied to clipboard
@get:Input
abstract val splashEnabled: Property<Boolean>

Off by default, so a project without splash { rewrite { } } stays byte-identical.

Link copied to clipboard
@get:Internal
abstract val splashImage: RegularFileProperty

Validated at execution like the other source paths, so a missing file gets an actionable message.

Link copied to clipboard
val state: TaskStateInternal
Link copied to clipboard
@get:Input
abstract val targetNames: ListProperty<String>
Link copied to clipboard
val timeout: Property<Duration>
Link copied to clipboard
@get:Input
@get:Optional
abstract val usesNonExemptEncryption: Property<Boolean>

Functions

Link copied to clipboard
open override fun acceptServiceReferences(serviceReferences: MutableSet<ServiceReferenceSpec>)
Link copied to clipboard
open override fun appendParallelSafeAction(action: Action<in Task>)
Link copied to clipboard
open operator override fun compareTo(other: Task): Int
Link copied to clipboard
open override fun configure(closure: Closure<Any>): Task
Link copied to clipboard
open override fun dependsOn(vararg paths: Any): Task
Link copied to clipboard
open override fun doFirst(action: Closure<Any>): Task
open override fun doFirst(action: Action<in Task>): Task
open override fun doFirst(actionName: String, action: Action<in Task>): Task
Link copied to clipboard
open override fun doLast(action: Closure<Any>): Task
open override fun doLast(action: Action<in Task>): Task
open override fun doLast(actionName: String, action: Action<in Task>): Task
Link copied to clipboard
open override fun doNotTrackState(reasonNotToTrackState: String)
Link copied to clipboard
open override fun doNotTrackStateIf(reason: String, spec: Spec<in TaskInternal>)
Link copied to clipboard
open override fun finalizedBy(vararg paths: Any): Task
Link copied to clipboard
open override fun getActions(): MutableList<Action<in Task>>
Link copied to clipboard
open override fun getAnt(): AntBuilder
Link copied to clipboard
@Internal
open override fun getAsDynamicObject(): DynamicObject
Link copied to clipboard
open override fun getDependsOn(): MutableSet<Any>
Link copied to clipboard
open override fun getDestroyables(): TaskDestroyables
Link copied to clipboard
open override fun getDidWork(): Boolean
Link copied to clipboard
open override fun getExtensions(): ExtensionContainer
Link copied to clipboard
open override fun getFinalizedBy(): TaskDependency
Link copied to clipboard
open override fun getIdentityPath(): Path
Link copied to clipboard
open override fun getInputs(): TaskInputsInternal
Link copied to clipboard
@Internal
open override fun getLifecycleDependencies(): TaskDependencyInternal
Link copied to clipboard
open override fun getLocalState(): TaskLocalState
Link copied to clipboard
open override fun getLogger(): Logger
Link copied to clipboard
open override fun getLogging(): LoggingManager
Link copied to clipboard
open override fun getMustRunAfter(): TaskDependency
Link copied to clipboard
open override fun getName(): String
Link copied to clipboard
open override fun getOnlyIf(): Spec<in TaskInternal>
Link copied to clipboard
open override fun getOutputs(): TaskOutputsInternal
Link copied to clipboard
open override fun getPath(): String
Link copied to clipboard
open override fun getProject(): Project
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun getRequiredServices(): TaskRequiredServices
Link copied to clipboard
open override fun getSharedResources(): MutableList<ResourceLock>
Link copied to clipboard
open override fun getShouldRunAfter(): TaskDependency
Link copied to clipboard
open override fun getStandardOutputCapture(): StandardOutputCapture
Link copied to clipboard
open override fun getTaskActions(): MutableList<InputChangesAwareTaskAction>
Link copied to clipboard
open override fun getTaskDependencies(): TaskDependencyInternal
Link copied to clipboard
open override fun getTaskIdentity(): TaskIdentity<*>
Link copied to clipboard
open override fun getTemporaryDir(): File
Link copied to clipboard
open override fun getTemporaryDirFactory(): Factory<File>
Link copied to clipboard
open override fun hasProperty(propertyName: String): Boolean
Link copied to clipboard
open override fun hasTaskActions(): Boolean
Link copied to clipboard
Link copied to clipboard
open override fun mustRunAfter(vararg paths: Any): Task
Link copied to clipboard
open override fun notCompatibleWithConfigurationCache(reason: String)
Link copied to clipboard
open override fun onlyIf(onlyIfClosure: Closure<Any>)
open override fun onlyIf(spec: Spec<in Task>)
open override fun onlyIf(onlyIfReason: String, spec: Spec<in Task>)
Link copied to clipboard
open override fun prependParallelSafeAction(action: Action<in Task>)
Link copied to clipboard
open override fun property(propertyName: String): Any
Link copied to clipboard
open override fun restoreOnlyIf(onlyIf: Spec<in TaskInternal>)
Link copied to clipboard
open override fun restoreTaskActions(taskActions: MutableList<InputChangesAwareTaskAction>)
Link copied to clipboard
open override fun setActions(replacements: MutableList<Action<in Task>>)
Link copied to clipboard
open override fun setDependsOn(dependsOn: MutableIterable<*>)
Link copied to clipboard
open override fun setDidWork(didWork: Boolean)
Link copied to clipboard
open override fun setFinalizedBy(finalizedByTasks: MutableIterable<*>)
Link copied to clipboard
open override fun setMustRunAfter(mustRunAfterTasks: MutableIterable<*>)
Link copied to clipboard
open override fun setOnlyIf(onlyIfClosure: Closure<Any>)
open override fun setOnlyIf(spec: Spec<in Task>)
open override fun setOnlyIf(onlyIfReason: String, spec: Spec<in Task>)
Link copied to clipboard
open override fun setProperty(name: String, value: Any)
Link copied to clipboard
open override fun setShouldRunAfter(shouldRunAfterTasks: MutableIterable<*>)
Link copied to clipboard
open override fun shouldRunAfter(vararg paths: Any): TaskDependency
Link copied to clipboard
fun sync()
Link copied to clipboard
open override fun usesService(service: Provider<out BuildService<*>>)