Build, test, and submit your app using Xcode, Apple's integrated development environment.

Xcode Documentation

Posts under Xcode subtopic

Post

Replies

Boosts

Views

Activity

Getting 18.3.1 (22D8075) Simulator via xcodebuild
On my local machine I'm running Xcode 16.2. I currently have: iOS SDK 18.2 (22C146) Simulator 18.3.1 (22D8075) I'm setting up a CI machine to match my local setup, but I can't seem to get the 18.3.1 simulator on there. I'm running: xcodebuild -downloadPlatform iOS -exportPath ~/Downloads -buildVersion 16.2 The -buildVersion is 16.2 (I'm pretty sure to match the 16.2 of Xcode, as oppose to 18.2 for iOS) but this doesn't fetch the 18.3.1 simulator. Is someone able to explain to me what's going on here? I've not seen this mismatch before between Simulator and iOS but according to another post this seems like a valid setup, but I could be misinterpreting it.
2
0
167
Mar ’25
Failed to Install Preview App on iPhone in Xcode Previews (HelloWorldApp)
Hi everyone, I'm encountering an issue when trying to run Xcode Previews for my HelloWorldApp on a real iPhone device. The app fails to install, and I get the following error message: Development Environment: Xcode Version: 16C5032a macOS Version: 23H420 Test Device (iPhone): iPhone 12 mini, iOS 15.5 (19F77) MacBook: MacBook Air (M1, arm64e) Error Message: Whenever I attempt to preview the app using SwiftUI Previews on my iPhone (iPhone của Định), I get the following installation error: FailedToInstallAppError: Failed to install ”HelloWorldApp.app” Could not install the preview host ”HelloWorldApp.app” on iPhone của Định Here’s part of the detailed log: agentBundle = com.DihNgx.HelloWorldApp { url: file:///Users/dihngx/Library/Developer/Xcode/DerivedData/HelloWorldApp-eyeszqttvaydocbdmoiwcczlazrt/Build/Intermediates.noindex/Previews/iphoneos/HelloWorldApp/Products/Debug-iphoneos/HelloWorldApp.app signingInformation: Code Signing { identifier: com.DihNgx.HelloWorldApp identity: A9A830FA23874E2047C974D6621D441EB9CBC7CC hasGetTaskAllow: true isSandboxed: false } } Device Information: Device Name: iPhone của Định Device Identifier: 00008101-001C482922C0001E iOS Version: 15.5 Provisioning profile installed: "iOS Team Provisioning Profile: com.DihNgx.HelloWorldApp" Steps I’ve already tried (but the issue persists): Ensured that Xcode recognizes the iPhone and that the device is connected properly. Checked Code Signing and Provisioning Profile (no issues were shown). Cleaned the build folder (Cmd + Shift + K) and deleted Derived Data. I’d really appreciate any advice or suggestions on how to solve this issue. Has anyone else faced a similar error or knows how to fix this? Thanks so much in advance!
1
0
180
Mar ’25
Unable to localise CFBundleName on iOS Home Screen in en-US
Hi, I have an app that has a different name in en-GB and en-US. In the past I have created localised InfoPlist.strings files, InfoPlist.strings (English) InfoPlist.strings (English (United Kingdom)) InfoPlist.strings (English (United States)) and added CFBundleName = "Default Name", CFBundleName = "UK Name", and CFBundleName = "US Name", for example to each of the three files respectively. After building/installing/running this has worked as expected; if you set the device language to en_GB the display name on the iOS Home Screen is "UK Name", if you set it to en_AU for example it would be "Default Name" and if you set it to en_US it would be "US Name". Furthermore, when the name appears in system modals the correct name would appear based on locale too. For example, with the device language set to en_US, if you long press the app icon on the iOS home screen and tap Remove App, a modal will appear which says 'Remove "US Name"?'. This no longer appears to work correctly. For that same project having made no changes, simply running it on an iOS 17 or iOS 18 device; with the language set to en_US, the name on the home screen will be "Default Name", however, if you again long press and tap remove app, it will say 'Remove "US Name"'. It works correctly for en-GB. Like I said, I remember this working in the past, so I checked on an old device I have running iOS 15.8.2 as well as a simulator running iOS 15.2 and it does work as expected in both of those cases. I tried to create a new minimal project to see if something had changed and therefore if the setup I have is now incorrect and saw that the preferred method of localization now involves making a string catalog instead of multiple strings files. For a new project; duplicating the setup at the top of this post using a string catalogue file named InfoPlist.xcstrings results in the same incorrect behaviour when setting the device language to en_US. I guess my question is, is this a bug in iOS? Or is it likely that I am doing something wrong here?
4
0
231
Mar ’25
{Project}-LinkMap-normal-arm64.txt changed?
I upgraded xcode to 16.2 and found that the txt file generated by Write Link Map File is different from before, no longer containing detailed data. So, how to set it up to obtain the same link map file as the previous xcode version. # Path: /Users/....../xxx.app/__preview.dylib # Arch: arm64 # Object files: [ 0] linker synthesized # Sections: # Address Size Segment Section 0x00004000 0x00000000 __TEXT __text # Symbols: # Address Size File Name
0
0
90
Mar ’25
AppIcon not showing in "About" box or app switcher
I can't get my app's logo to show in the "About" box nor in the app switcher. I have: created "Assets.xcassets" created "AppIcon" added 10 image files of the logo to the AppIcon image well [? right terminology ?] saved and built the project – there are no errors or warnings When I run the project, I still get the default image showing in the About box and in the app switcher. Because first attempt failed, I changed "applet" to "AppIcon" in "App Icons and Launch Screen" in "General" settings. That did not change the result. I also toggled "Include all app icon assets" which also did not change the result. Weirdly, my app's logo DOES show beside the app name in every item of "Build Settings". Do I need to do something else to change the default image in the "About" box ? Thanks. [Xcode 16.2 on macOS 15.3.2.]
1
0
276
Mar ’25
Xcode 16 Build & Archive Error - SPM
Since upgrading from Xcode 15 to 16, we have been experiencing a build error during compilation. Building on Xcode 15 still works with no issues. The error happens only on the first build after a clean. Subsequent builds succeed. This is an issue because our CI process archives the project from a clean slate, and this causes it to fail every time. I will attempt to describe the issue and include information I believe is relevant in this document. The error occurs on this import line within an Objective-C file during the Scan Dependencies step of compiling. This line imports our custom Objective-C to Swift bridging header file - "Swift2Objc.h". Our custom Objective-C to Swift bridging header file is simply wrapping the project’s auto-generated Objective-C to Swift bridging header file - "KWISwift.h". The error is specific to the import of the OfflineServices Swift Package. Specifically, the OfflineServices-Swift.h file - the Swift Package’s auto-generated Objective-C to Swift bridging file. Module JRE not found - the exact error (Also included as text on the bottom of the post) JRE is a third-party library provided to us as an xcframework. It is placed directly into our Swift Package as a binary target. The xcframework itself is composed of .a file and a Headers folder which includes header files and a module.modulemap. The module.modulemap file looks like this.
0
0
230
Mar ’25
Are umbrella frameworks possible/discouraged?
I want to release a Framework F, containing several other frameworks (such as Realm, Appetitive, Cocoalumberjack, PhoneNumberKit) for use by app A. According to this article: https://medium.com/@bittudavis/how-to-create-an-umbrella-framework-in-swift-ca964d0a2345 They write, without referencing a source: "Although Apple discourage creating umbrella framework". Is that true, do Apple discourage umbrella frameworks, if so why and is it a very strong discourage or a mild one? If not discouraged, then how can this be achieved with Xcode 16? I've been attempting to follow a few tutorial to achieve this, such as https://medium.com/john-lewis-software-engineering/adding-a-third-party-framework-inside-a-first-party-framework-in-xcode-3ba58cfd08da however so far without any success. This last article mentions the Link Binary With Libraries section, which doesn't exist in Xcode 16. There's the Frameworks, Libraries, and Embedded Content section where I have been attempting to add the frameworks into my Framework F (choosing Embed without Signing). I'm able to successfully build Framework F, but when app A attempts to use it (adding F to the Frameworks, Libraries, and Embedded Content section with option embed and sign, or embed and don't sign, makes no difference) then I get run time errors about the umbrellaed frameworks not being able to be found.
3
0
811
Mar ’25
Linking arm64 static library for iPhoneSimulator
I work on an iOS app, written in Objective-C and C++, that uses a static library. I build this library using a Run Script in Build Phases in Xcode. This is a fat library, containing arm64 code built for iPhoneOS, and x86_64 code built for iPhoneSimulator. I'm trying to figure out how to create an arm64 iPhoneSimulator build of my app, and I'm running into a problem. If I simply enable arm64 debug builds, I get an error message saying "building for iOS Simulator, but linking in object file built for iOS", indicating that the arm64 iPhoneOS code in the library is not compatible with an arm64 iPhoneSimulator target. Now, I can build the library as arm64 for iPhoneSimulator, but that means I'll have to build a separate library for the simulator build, since lipo won't combine arm64 iPhoneOS and arm64 iPhoneSimulator builds in one file. My question: how can I get Xcode to link with a different library for iPhoneSimulator builds than for iPhoneOS builds? All I can come up with is to use completely separate targets for debugging in the simulator vs. debugging on a real device, but that seems ugly. (It would be even better if I could use the same library for both arm64 iPhoneSimulator and iPhoneOS builds. The library in question is a math library which makes no system calls, so I think the same code should be usable for both builds, if only I could get the linker to allow that.)
2
0
149
Mar ’25
How to create a new asset catalog in a package
I created a package using "File > New > Package" and now I want to add a new Asset Catalog to this package. With my package selected in the project navigator I select "File > New > File" but it creates a Swift file instead of showing the Template Selection dialog Ref: https://developer.apple.com/documentation/xcode/managing-assets-with-asset-catalogs#Create-a-new-asset-catalog
1
0
710
Mar ’25
Gradient rendering issue with alpha set to something other than one
Gradients with colors that have alpha are not rendered correctly anymore. I made a simple project to illustrate that. Just create Objective C project and paste this code inside the ViewController. `#import <UIKit/UIKit.h> @interface CustomView : UIView @property (nonatomic, strong) NSArray<NSNumber *> *colorsArray; // The color components array // Custom initializer that accepts an NSArray of color components (instancetype)initWithFrame:(CGRect)frame colors:(NSArray<NSNumber *> *)colorsArray; @end @implementation CustomView // Custom initializer (instancetype)initWithFrame:(CGRect)frame colors:(NSArray<NSNumber *> *)colorsArray { self = [super initWithFrame:frame]; if (self) { _colorsArray = colorsArray; // Store the colors array } return self; } (void)drawRect:(CGRect)rect { // Get the current context CGContextRef context = UIGraphicsGetCurrentContext(); // Convert NSArray to a C-style array of CGFloats size_t count = self.colorsArray.count; CGFloat colors[count]; for (size_t i = 0; i < count; i++) { colors[i] = [self.colorsArray[i] floatValue]; } // Create a color space CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); // Create the gradient with the passed colors CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, colors, NULL, count / 4); // Define the start and end points of the gradient CGPoint startPoint = CGPointMake(rect.origin.x, rect.origin.y); CGPoint endPoint = CGPointMake(rect.origin.x, rect.origin.y + rect.size.height); // Draw the rectangle with the gradient CGContextSaveGState(context); CGContextAddRect(context, rect); CGContextClip(context); CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0); CGContextRestoreGState(context); // Release resources CGGradientRelease(gradient); CGColorSpaceRelease(colorSpace); } @end @interface ViewController : UIViewController @end @implementation ViewController (void)viewDidLoad { [super viewDidLoad]; // Get the screen bounds CGRect screenBounds = [UIScreen mainScreen].bounds; // Define the size of each custom view CGFloat customViewWidth = screenBounds.size.width * 0.75; CGFloat customViewHeight = screenBounds.size.height * 0.75; // Define a dynamic set of colors for the first custom view (red to blue) NSArray<NSNumber *> *colorsArray1 = @[ @1.0, @0.0, @0.0, @1.0, // Red @0.0, @0.0, @1.0, @1.0 // Blue ]; // TODO: This is the bug, there is no transparency NSNumber *alpha = @0.0;// this is the ***** bug **** // Define a dynamic set of colors for the second custom view (green to yellow) NSArray<NSNumber *> *colorsArray2 = @[ @0.0, @1.0, @0.0, alpha, // Green @1.0, @1.0, @0.0, @1.0 // Yellow ]; // Calculate the position for the first view (centered horizontally and vertically, with slight offset) CGRect frame1 = CGRectMake((screenBounds.size.width - customViewWidth) / 2 - customViewWidth * 0.25, (screenBounds.size.height - customViewHeight) / 2 - customViewHeight * 0.25, customViewWidth, customViewHeight); CustomView *customView1 = [[CustomView alloc] initWithFrame:frame1 colors:colorsArray1]; // Calculate the position for the second view (slightly shifted from the first view to partially overlap) CGRect frame2 = CGRectMake((screenBounds.size.width - customViewWidth) / 2 + customViewWidth * 0.25, (screenBounds.size.height - customViewHeight) / 2 + customViewHeight * 0.25, customViewWidth, customViewHeight); CustomView *customView2 = [[CustomView alloc] initWithFrame:frame2 colors:colorsArray2]; // Set autoresizing so they adjust with the screen size customView1.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; customView2.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; // Add the custom views to the view controller's view [self.view addSubview:customView1]; [self.view addSubview:customView2]; } @end`
4
0
556
Mar ’25
Xcode beta documentation broken?
Is anyone else having trouble with the Documentation in the latest Xcode beta? I can't get any UIKit documentation to appear. UIKit is completely missing from the table of contents too. I've tried deleting the documentation caches but it isn't helping.
5
0
127
Mar ’25
Build Libraries For Distribution flag usage
I want to build an ios .xcframework (for external delivery) and .framework(for internal debugging) in order to package some code to a customer for incorporation into their app. My framework has a dependency upon RealmSwift, which I've added using SPM. There is a warning saying Module RealmSwift was not compiled with library evolution support. And when building SwiftVerifyEmittedModuleInterface fails with an error saying "missing required modules: 'Realm.Private', 'Realm', 'Realm.Swift'" By default, Build Libraries For Distribution was set to YES, however if I turn it off then the warning and error go away and I can cleanly build the framework. I've been attempting to get a good understanding of this flag and if it should be used or not, most material says yes but doesn't go a good job of explaining why. However anyway I can't get the framework to build with RealmSwift as a dependency without turning off this flag. Therefore is that ok to proceed down that route? Does the fact the xcframework will only ever be distributed to one consumer affect decisions (i.e. binary compatibility etc.) Thanks
0
0
134
Mar ’25
Can't submit to TestFlight due to RC releases out of sync
When I try to submit to TestFlight, I'm told: "Unsupported SDK or Xcode version ... You need to use the latest Release Candidates for SDKs and Xcode." I am using the latest Xcode RC, Version 16.3 (16E137). But my guess is that I am not being given, in conjunction with this, the latest iOS 18.4 RC. I need 22E239 but I'm unable to download and install it thru Xcode. What I'm being given is SDK version 18.4 (22E235).
3
0
95
Mar ’25
Can't build onto iPhone 16e with XCode 16.1
I'm trying to debug on my iPhone 16e and I'm running into this error: Error mounting image: 0xe800010f (kAMDMobileImageMounterPersonalizedBundleMissingVariantError: The bundle image is missing the requested variant for this device.) Since all of my other devices are working fine, I assume this is due to outdated XCode, which is something I see mentioned in other threads. What is the specific XCode version needed to build onto the 16e and is there any workaround for XCode 16.1? Thanks!
3
0
367
Mar ’25
Xcode App Crashing after Initial Launch
I'm quite new to Xcode development, and I've been having an issue test-running my app. When I run the app on my iPhone from my Mac, the app launches properly and works initially. However, when I close the app fully and try to reopen it, it keeps crashing. This occurs whether I test on a physical device or an iPhone simulator. Somehow, this issue does not occur when the app is run on Profile mode. I would appreciate any pointers to debug this.
2
0
126
Mar ’25
Xcode copy release build signed target
I am trying to find a way to copy the signed target from Xcode Release build to a local directory as part of the build process. If I use a "run script" build phase it executes BEFORE the target is signed, so will not accomplish that goal. If I use a "copy file" build phase, it does have an option for signing and so that does "work"; however it always copies the DEBUG version. Is there a way to copy the Release build target? EG can a run script execute the code sign program, and, if so what would the command line parameters be? OR is there a way to modify the copy file phase to copy the Release build rather than the Debug build? OR ??
4
0
114
Mar ’25
Call Tracking with CallKit Works in Debug Mode but Not in Release (TestFlight) – iOS
I am working on an iOS app using Flutter that tracks outgoing calls using CallKit. The call tracking functionality works perfectly in Debug mode but does not work when the app is published to TestFlight. I have already added Background Modes (voip, audio, processing, fetch) in Info.plist. I have added CallKit.framework in Xcode under Link Binary With Libraries (set to Optional). <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>aps-environment</key> <string>production</string> </dict> </plist> These are the necessary permission which I used in info.plist: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>BGTaskSchedulerPermittedIdentifiers</key> <array> <string>com.agent.mygenie</string> </array> <key>CADisableMinimumFrameDurationOnPhone</key> <true/> <key>CFBundleDevelopmentRegion</key> <string>$(DEVELOPMENT_LANGUAGE)</string> <key>CFBundleDisplayName</key> <string>MyGenie</string> <key>CFBundleDocumentTypes</key> <array/> <key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>mygenie</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> <string>$(FLUTTER_BUILD_NAME)</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>$(FLUTTER_BUILD_NUMBER)</string> <key>LSRequiresIPhoneOS</key> <true/> <key>NSCallKitUsageDescription</key> <string>This app needs access to CallKit for call handling</string> <key>NSContactsUsageDescription</key> <string>This app needs access to your contacts for calls</string> <key>NSMicrophoneUsageDescription</key> <string>This app needs access to microphone for calls</string> <key>NSPhotoLibraryUsageDescription</key> <string>This app needs access to photo library for profile picture updation</string> <key>UIApplicationSupportsIndirectInputEvents</key> <true/> <key>UIBackgroundModes</key> <array> <string>voip</string> <string>processing</string> <string>fetch</string> <string>audio</string> </array> <key>UILaunchStoryboardName</key> <string>LaunchScreen</string> <key>UIMainStoryboardFile</key> <string>Main</string> <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string> </array> <key>UISupportedInterfaceOrientations~ipad</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortraitUpsideDown</string> <string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string> </array> [code.txt](https://developer.apple.com/forums/content/attachment/0a327dbd-652e-41d5-8811-c462d09e0567) </dict> </plist> And below is the file are AppDelegate.swift, call_tracking_mixin.dart, & main_call.dart file for full knowledge
0
0
127
Mar ’25