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

Xcode Documentation

Posts under Xcode subtopic

Post

Replies

Boosts

Views

Activity

A Summary of the WWDC25 Group Lab - Developer Tools
At WWDC25 we launched a new type of Lab event for the developer community - Group Labs. A Group Lab is a panel Q&A designed for a large audience of developers. Group Labs are a unique opportunity for the community to submit questions directly to a panel of Apple engineers and designers. Here are the highlights from the WWDC25 Group Lab for Developer Tools. Will my project codebase be used for training when I use Xcode's intelligent assistant powered by cloud-based models? When using ChatGPT without logging in, your data will not be used to improve any models. If you log in to a ChatGPT account, this is based on your ChatGPT account settings, which allows you to opt-out (it defaults to on). When using Xcode with accounts for other model providers, you should check with the policies of your provider. And finally, at no point will any portion of your codebase be used to train or improve any Apple models. We'd love to make our SwiftUI Previews (and soon, Playgrounds) as snappy as possible. Is there any way to skip certain build steps, such as running linters? It seems the build environment is exactly the same (compared to a debug build), but maybe there's a trick. Starting with Xcode 16, SwiftUI previews use the exact same build artifacts as the regular build. The new Playgrounds support in Xcode 26 uses these build artifacts too. Shell script build phases are the most common thing that introduces extra build time, so as a first step, try turning off all shell script build phases (like linters) to get an idea if that’s the issue. If those build phases add significant time to your build, consider moving some of those phases into asynchronous steps, such as running linters before committing instead of on every build. If you do need a shell script build phase to run during your build, make sure to explicitly define the input and output files, as that is a huge way to improve your build performance. Are we able to provide additional context for the models, like coding standards? Documentation for third party dependencies? Documentation on your own codebase that explains things like architecture and more? In general, Xcode will automatically search for the right context based on the question and the evolving answer, as the model can interact multiple times with your project as it develops an answer. This will automatically pick up the coding style of the code it sees, and can include files that contain architecture comments, etc. Beyond automatic context, you can manually attach other documents, even if they aren't in your project. For example, you could make a file with rules and ideas and attach it, and it will influence the response. We are very aware of other kinds of automatic context like rule files, etc, though Xcode does not support these at this time. Once ChatGPT is enabled for Coding Intelligence in Xcode 26, and I sign into my existing ChatGPT account, will the ChatGPT Coding Intelligence model in Xcode know about chat conversations on Xcode development done previously in the ChatGPT Mac app? Xcode does not use information from other conversations, and conversations started in Xcode are not accessible in the web UI or ChatGPT app. Is there a plan to make SwiftUI views easier to locate and understand in the view hierarchy like UIKit views? SwiftUI uses a declarative paradigm to define your user interface. That allows you to specify what you want, with the system translating that into an efficient representation at runtime. Unlike traditional AppKit and UIKit, seeing the runtime representation of SwiftUI views isn't sufficient in order to understand why it's not doing what you want. This year, we introduced a SwiftUI Instrument that shows why things are happening, like view re-rendering. Is it possible to use the AI chat with ChatGPT Enterprise? My company doesn't allow us to use the general ChatGPT, only the enterprise version they have setup that prevents data from being leaked Yes, Xcode 26 supports logging into any existing ChatGPT account, including enterprise accounts. If that does not meet your needs, you can also setup a local server that implements the popular chat completions REST API to talk to your enterprise account how you need. Now that Icon Composer is here, how does it complement or replace existing vector design tools such as Sketch for icon design? Icon Composer complements your existing vector design tools. You should continue to create your shapes, gradients, and layers in another tool like Sketch, and compose the exported SVG layers in Icon Composer. Once you bring your layers into Icon Composer, you can then use it to influence the translucency, blur, and specular highlights for your icon. What’s one feature or improvement in the new Xcode that you personally think developers will love, but might not immediately discover? Maybe something tucked away or quietly powerful that’s flown under the radar so far? One feature we're particularly excited about is the new power profiler for iOS, which gives you further insights into the energy consumption of your app beyond what was possible with the energy instrument previously. You can learn more about how to use this instrument and how it can help you greatly reduce your apps battery usage in the documentation, as well as the session Profile and optimize power usage in your app. There were also improvements in accessibility this year with Voice Control, where you can naturally speak your Swift code to Xcode, and it understands the Swift syntax as you speak. To see it in action, take a look at the demonstration in What’s new in Xcode 26. We have a software advisory council that is very sensitive to having our private information going to the cloud in any form. What information do you have to help me guide Xcode and Apple Intelligence through the acceptance process? One thing you can do is configure a proxy for your enterprise that implementing the popular Chat Completions API endpoint protocol. When using a model provider via URL, you can use your proxy endpoint to inspect the network traffic for anything that you do not want sent outside of your enterprise, and then forward the traffic through the proxy to your chosen model provider. Are there list of recommended LLMs to use with Xcode via Intelligence/Local? I've tried Gemma3-12B, but.. I hope there are better options? Apple doesn't have a published list of recommended local models. This is a fast-moving space, and so a recommendation would become out of date very quickly as new models are released. We encourage you to try out the local model support in Xcode 26 with models that you find meet your needs, and let us and the community know! (continued below)
1
0
1.1k
Jul ’25
How to call API of tested app in UI Testing of Xcode7?
Hi guys, recently I've been investigating new UI Testing in Xcode7. There seems to be limited APIs we can call direct in UI test. Can I include header files and call public API of my tested app in UI Test? so that I can have more flexibility to set my app status before running test. I intent to call API method "-(void)reloadURL:(NSURL *)url" of my app in UI Test, but test failed with "XCTRunner -[_XCTRunnerAppDelegate myAppDelegateUtils]: unrecoginzed selector sent to instance 0x7cf0a992fe10"In Unit Test we can call any API of the tested app, does it support in UI Testing too? I'm a start learner of Xcode and its testing...could anyone help to answer this question? Thanks!
3
0
2k
5d
Deep link to a file in Xcode
Hi, is there documentation on how to write a deep link that will open Xcode on a given file, and optionally a line number? I know about xed, and I would like exactly that functionality, but in link form, so that I can link to a certain file from an app such as Obsidian or from a README.md file. I checked Xcode's Info.plist and it understands several URL schemes, the most promising of which is xcode://, which successfully launches the app, but no matter what I tried, I get an error dialog telling me that Xcode did not understand the URL. Any help on this topic would be greatly appreciated. Victor
0
0
305
Mar ’25
UI Testing Issues
Hi everyone, I've been working on an iOS app for about a year and a half. That application comes with unit and UI automated testings. Recently I started the development of the tvOS application so I added a new target and used the same bundle id as I want to eventually share purchases. What I need I'm working on an application that uses VLC (Need to play media more exotic than MP4) through these two pods pod 'MobileVLCKit', '3.6.0' (Only for iOS) pod 'TVVLCKit', '3.6.0' (Only for tvOS) What works Compilation works fine for both targets Unit tests work fine for both targets UI tests work fine ONLY for the original iOS target What doesn't work and how it fails When I launch the UI tests for the tvOS target, the compilation succeeds, but I get an error when calling app.launch() from my XCTestCase. Failed to get launch progress for <XCUIApplicationImpl: 0x600000c61e90 abergia.com.iptv at ...AppPath...>: App installation failed: Unable to Install “...AppName...”. This app is not made for this device. This app was not built to support this device family; app is compatible with ( 1, 2 ) but this device supports ( 3 ). (Underlying Error: Unable to Install “...AppName...”. This app is not made for this device. This app was not built to support this device family; app is compatible with ( 1, 2 ) but this device supports ( 3 ). What I tried Single target - Both Pods It looks like I can 'cheat' a little the system and make the Xcode target compatible with both iOS and tvO, but when declaring both pods inside the same CocoaPod target, the installation fails as one of the library is not compatible. Use a newer version of VLC (4.0.0) Works BUT that version is way too unstable, I will eventually use it again once they fix all the issues. Different Bundle ID Changing the bundle id of the tvOS application resolves the issue BUT I really want to use the same bundle id to share the purchases. Not UI testing the tvOS version It's an option I'm starting to contemplate out of frustration but I'm sure that we have people here who can help me!
1
0
324
Mar ’25
Classic Linker error after renaming project
We are renaming the project and a Static Library the is critical to the operation on the app is not found during compiling. We have the same project working fine. We have reviewed the project.pbxproj file and searched for erroneous linking, reviewed the Target settings and there is nothing obviously wrong. (Copied and secured the original) Typically workflow is: Clean Delete Derived Data dir D/l Swift Packages Build/Run The team has many years using Xcode / Swift and the project and this is not clear how to resolve. We have scoured SO and the solutions do not apply. Facts: -No cocoapods -Search Paths all set Linker all set Thoughts?
0
0
154
Mar ’25
Very hard Watch communication after update of Xcode, MacOs, Watch OS ?
I have a swift project with a Watch companion. Since the update of Xcode in 16.3 version after updating MAcOs , Watch OS, iOS to the latest version . It is quasi impossible for me to make Xcode work with my series 10 Watch. I have a lot of alert box, messages in the "device & Simulator" tool like this Previous preparation error: A connection to this device could not be established.; Timed out while attempting to establish tunnel using negotiated network parameters. And many message telling me that Xcode is preparing the Watch , then that it has lost the connexion. I have to wait some minutes after EACH run of the App to test it again. This is very annoying . Some of the alerts I have : And the best to know , is that I can run the APP outside of Xcode , it works, Connects to the iPhone, fetch data and so. the iPhone sees the Watch without and problem. Reboots can solve for a few minutes the problem. But that is not a solution.
0
0
127
Apr ’25
iOS app build error with iOS 18 SDK and Xcode 16
Hi, I am able to build my iOS app successfully, developed in objective-C with iOS 17.5 SDK and Xcode 15. Due to requirement of Appstore we are trying to build with iOS 18 SDK and Xcode 16. When building getting error in LAEnvironmentState.h file: a) "Property requires field to be named" b) "Expected member name or ';' after declaration specifiers" Same app when opening with Xcode 15 gets build without any issue. Any help/suggestion would be appreciated.
0
0
161
Apr ’25
CLLocationManagerDelegate not working on Siri Intents
I need to elicit the location of the user in the Siri intents and so I call: override init(){ super.init() self.locationManager=CLLocationManager() self.locationManager.delegate = self; self.locationManager.startUpdatingLocation() self.locationManager.requestWhenInUseAuthorization() } Still neither public func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) nor public func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) are ever called, notwithstanding the presence of the correct entry in the info.plist, the inclusion of the library and the indication of the delegation with: class IntentHandler: INExtension, INSendMessageIntentHandling, CLLocationManagerDelegate, UISceneDelegate are ever called. Is there any problem with CLLocation manager on intents? What would be a big problem as there is no way to share information with the main app!
2
0
116
Apr ’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
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
SwiftUI Preview Fails to Load While Project Builds and Runs Fine: Alamofire Module Map Issue
I'm having an issue specifically with SwiftUI previews in my iOS project. The project builds and runs fine on devices and simulators (in Rosetta mode), but SwiftUI previews fail to load in both Rosetta and native arm64 simulator environments. The main error in the preview is related to the Alamofire dependency in my SiriKit Intents extension: Module map file '[DerivedData path]/Build/Products/Debug-iphonesimulator/Alamofire/Alamofire.modulemap' not found This error repeats for multiple Swift files within my SiriKit Intents extension. Additionally, I'm seeing: Cannot load underlying module for 'Alamofire Environment Xcode version: 16.2 macOS version: Sonoma 14.7 Swift version: 6.0.3 (swiftlang-6.0.3.1.10 clang-1600.0.30.1) Dependency management: CocoaPods Alamofire version: 5.8 My project is a large, older codebase that contains a mix of UIKit, Objective-C and Swift Architecture Issue: The project only builds successfully in Rosetta mode for simulators. SwiftUI previews are failing in both Rosetta and native arm64 environments. This suggests there may be a fundamental issue with how the preview system interacts with the project's architecture configuration. What I've Tried I've attempted several solutions without success: Cleaning the build folder (⇧⌘K and Option+⇧⌘K) Deleting derived data Reinstalling dependencies Restarting Xcode Removing and re-adding Alamofire
1
0
157
Mar ’25
devicectl: clarify username requirement for "certain" domains
Hi there, When using devicectl to manage files: It's unclear for which domains the username should be provided It's unclear how to determine the username Listing files USAGE: devicectl device info files [<options>] --device <uuid|ecid|serial_number|udid|name|dns_name> --domain-type <domain-type> FILE OPTIONS: --username <username> The username of the user we should target. Only relevant for certain domains. --domain-type <domain-type> The file service domain. Valid values are: temporary, appDataContainer, appGroupDataContainer, systemCrashLogs. You must specify a valid domain and identifier pair. Certain domains must be accompanied by an identifier that provides additional context. For example, if the domain is an app data container, the identifier is the bundle ID of the app. For temporary directories, the identifier is a unique client-provided string which is used to get your own space, separate from those of other clients. --domain-identifier <domain-identifier> A unique string used to provide additional context to the domain. --username The username of the user we should target. Only relevant for certain domains. In the domains, the username requirements are not mentioned. Copying files USAGE: devicectl device copy to --device <uuid|ecid|serial_number|udid|name|dns_name> --source <source> [--destination <destination>] [--user <user>] --domain-type <domain-type> [--domain-identifier <domain-identifier>] [--remove-existing-content <remove-existing-content>] [--verbose] [--quiet] [--timeout <seconds>] [--json-output <path>] [--log-output <path>] DEVICE OPTIONS: -d, --device <uuid|ecid|serial_number|udid|name|dns_name> The identifier, ECID, serial number, UDID, user-provided name, or DNS name of the device. FILE OPTIONS: --source <source> The item which should be copied. --destination <destination> The location to which the item should be copied. -u, --user <user> The name of the user we should target. Only relevant for certain domains. --domain-type <domain-type> The file service domain. Valid values are: temporary, appDataContainer, appGroupDataContainer, systemCrashLogs. You must specify a valid domain and identifier pair. Certain domains must be accompanied by an identifier that provides additional context. For example, if the domain is an app data container, the identifier is the bundle ID of the app. For temporary directories, the identifier is a unique client-provided string which is used to get your own space, separate from those of other clients. --domain-identifier <domain-identifier> A unique string used to provide additional context to the -u, --user The name of the user we should target. Only relevant for certain domains. The "certain domains" are not specified. user vs username The list files command takes: --username <username> The username of the user we should target. Only relevant for certain domains The copy command takes: -u, --user <user> The name of the user we should target. Only relevant for certain domains. Is there a difference between username and user? How do we figure out the user or username? From https://developer.apple.com/forums/thread/749649 I learned that about the "mobile" value, but why, and how? It would help if these arguments could be explained in more detail.
0
0
96
Apr ’25
JSON Tutorial
HiSuppose i made a macOS App and want to connect to Oracle or mySQL Database I heard best way is using JSON which i dontknow anything about it, where can I find good reading about it thats specifically related to macOS or iOS Apps ?--Kindest Regards
3
0
446
3w
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