(By "stable," I don't mean in a crashing or breaking sense; I mean it in the sense of a stable sorting algorithm, where duplicate elements will be kept in the same order in which they appeared in the unsorted collection.)
I have a script that builds an XCFramework for iOS & tvOS, on simulator & device. It never changes the order in which the -framework
arguments are passed to xcodebuild -create-xcframework
. If I regenerate the XCFramework without any code or config changes, however, the order of entries in Info.plist
always changes. Sample git diff:
<string>x86_64</string> </array> <key>SupportedPlatform</key> - <string>tvos</string> + <string>ios</string> <key>SupportedPlatformVariant</key> <string>simulator</string> </dict> <dict> <key>LibraryIdentifier</key> - <string>ios-x86_64-simulator</string> + <string>ios-arm64</string> <key>LibraryPath</key> <string>Foo.framework</string> <key>SupportedArchitectures</key> <array> - <string>x86_64</string> + <string>arm64</string> </array> <key>SupportedPlatform</key> <string>ios</string> - <key>SupportedPlatformVariant</key> - <string>simulator</string> </dict> <dict> <key>LibraryIdentifier</key> - <string>ios-arm64</string> + <string>tvos-x86_64-simulator</string> <key>LibraryPath</key> <string>Foo.framework</string> <key>SupportedArchitectures</key> <array> - <string>arm64</string> + <string>x86_64</string> </array> <key>SupportedPlatform</key> - <string>ios</string> + <string>tvos</string> + <key>SupportedPlatformVariant</key> + <string>simulator</string> </dict> </array> <key>CFBundlePackageType</key>
It doesn't affect the runtime in any way, as far as I know, but it's a minor irritation that I have to commit the changes to source control every time. Is there a way for xcodebuild -create-xcframework
to either honor the order in which I passed the -framework
arguments in, or at least keep the Info.plist
file "stable" between script invocations?
(This behavior is the same on Xcode 12.x & the XCode 13 beta versions.)