Kite Config Ios Sync Extension
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
| Task | Writes | Also needs |
|---|---|---|
kiteInternalIosConfig | project.pbxproj, Podfile, Swift imports | nothing else |
kiteInternalPlistClean | source Info.plist | cleanPlist |
kiteInternalIosLogo | AppIcon.appiconset | a logo { } block and KiteConfigIosExtension.deploymentTarget |
What happens on a plist conflict
| onConflict | Existing value | Build |
|---|---|---|
| PlistConflictPolicy.FAIL (default) | untouched | fails, nothing is written |
| PlistConflictPolicy.KEEP | kept | continues with a warning |
| PlistConflictPolicy.REPLACE | overwritten | continues |
See also
for the values these tasks propagate.
for the policy this block selects.
Properties
Whether KiteConfig maintains its own keys in the source XML Info.plist.
Value for ITSAppUsesNonExemptEncryption in Info.plist.
What to do when an existing Info.plist value differs from the requested value.