KiteConfigIosSyncExtension

Apple source sync policy inside kiteConfig { ios { rewrite { ... } } }.

Writing this block is the opt-in. Its presence is what authorizes the explicit Apple source tasks, and it replaces the old syncIos = true flag.

kiteConfig {
ios {
rewrite {
targets("iosApp")
cleanPlist = true
onConflict = PlistConflictPolicy.KEEP

renameSharedModule(from = "OldShared", to = "Shared")
}
}
}

Authorizing is not running. This block starts nothing. An ordinary build still never touches an Apple source file. You run kiteInternalIosConfig, kiteInternalPlistClean, or kiteInternalIosLogo yourself, and every safety rail still applies: the root dryRun previews instead of writing, the root backups keeps recovery copies, and onConflict decides what happens when an existing plist value disagrees with yours.

Which task this block unlocks

TaskWritesAlso needs
kiteInternalIosConfigproject.pbxproj, Podfile, Swift importsnothing else
kiteInternalPlistCleansource Info.plistcleanPlist
kiteInternalIosLogoAppIcon.appiconseta logo { } block and KiteConfigIosExtension.deploymentTarget

What happens on a plist conflict

onConflictExisting valueBuild
PlistConflictPolicy.FAIL (default)untouchedfails, nothing is written
PlistConflictPolicy.KEEPkeptcontinues with a warning
PlistConflictPolicy.REPLACEoverwrittencontinues

See also

for the values these tasks propagate.

for the policy this block selects.

Constructors

Link copied to clipboard
constructor()

Properties

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

Run this rewrite automatically before the iOS framework builds instead of waiting for kiteRewriteXcode. Default: false. Discouraged twice over: ordinary builds edit committed files, and when Xcode drives Gradle the pbxproj is rewritten while Xcode is reading it.

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

Whether KiteConfig maintains its own keys in the source XML Info.plist.

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

Value for ITSAppUsesNonExemptEncryption in Info.plist.

Link copied to clipboard
abstract val onConflict: Property<PlistConflictPolicy>

What to do when an existing Info.plist value differs from the requested value.

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

Value for CADisableMinimumFrameDurationOnPhone in Info.plist.

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

The exact Xcode application targets whose build configurations may change.

Functions

Link copied to clipboard

Rename the CocoaPods and Swift module across the Apple sources: from is the name in the files today, to is the name you want.

Link copied to clipboard
fun targets(vararg names: String)

Add Xcode application target names, for example targets("iosApp").