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

Xcode Documentation

Posts under Xcode subtopic

Post

Replies

Boosts

Views

Activity

Recovery qualification before updating a development app: encrypted Finder backup and container export
I am qualifying a data-preserving update of my own development-signed iOS/iPadOS app (Target Keeper). I would like to understand the supported recovery guarantees and limitations before changing an existing installation, rather than treating a completed backup or successful model-open test as proof of full rollback. Environment: iOS/iPadOS 27.0.1 and Xcode 27.1. Existing development installations must be retained. The original signed packages for the older installed builds are unavailable. No update, uninstall, device erase or restore has been performed as part of this qualification. Evidence already retained privately: Completed encrypted Finder backup records for each device, with the password kept private. Apple Device Hub downloads of each existing app-data container, retained separately with file counts and SHA-256 manifests. Disposable copies of the actual prior SwiftData store, relevant WAL/SHM files, preferences and selected-photo data opened using the proposed version's existing model and guarded local-startup implementation. Model identities/content fingerprints were unchanged in those tests. The separate Codable Portfolio repository passed loading/reopening on disposable copies without changing the ledger bytes. Controlled process interruption/reopen tests passed on disposable local copies. These tests did not run the entire signed app-update lifecycle on a physical device, validate Keychain continuity, establish an atomic source-side multi-store snapshot, or test restore on the original devices. CloudKit records are not being mutated. I have read Apple's update-testing and container-download/replace guidance: https://developer.apple.com/documentation/xcode/testing-a-release-build https://help.apple.com/xcode/mac/current/en.lproj/dev816c242e1.html Specific questions: For a locally development-signed app that is not available from the App Store, what does an encrypted Finder backup preserve and what additional artifacts are needed to recover the usable app and its data if the original signed app package is missing? Does a backup completion record establish anything about restoration of that development executable? What consistency guarantees does Device Hub's app-container download provide when the app has multiple stores (SwiftData/SQLite with WAL, a separate JSON ledger, preferences and photos)? Is a quiescent/terminated app required, and what is the recommended way to qualify a coherent capture without modifying the original records? What is Apple's recommended recovery rehearsal on a disposable device/installation before an in-place update? Which identity, signing, file-protection and Keychain limitations must be considered, especially for ThisDeviceOnly items and same-device versus different-device restoration? Which preservation checks remain the developer's responsibility beyond successful container replacement or store opening? I do not want to mistake reinstalling an app binary for rolling back a migrated multi-store data set. Separately, an earlier strict source read rejected a file-metadata change, but its paired content hashes were not retained. I am not asserting an Apple defect, corruption or an identified writer, and newer successful copies cannot reconstruct that missing observation. Is there a recommended narrowly scoped Apple diagnostic for future capture that records before/after file identity and content consistency without weakening integrity rejection? No backups, passwords, personal device identifiers, private certificates, record contents or confidential logs are attached. I am seeking a supported qualification procedure, not instructions to bypass preservation safeguards or destructively test on the original devices.
0
0
137
1w
TestFlight Declared Age Range Sandbox Scenarios Not Reflected in App Responses
Hello team, We are testing the Declared Age Range/Age Signal functionality in a TestFlight build and would appreciate guidance on the correct setup and testing process. Current Behavior Observed We are seeing inconsistent behavior between the Sandbox environment and the age-range results returned to the application. Scenario 1: Apple Account Signed In A regular Apple ID is signed in on the device. The TestFlight build is installed and launched. The application returns Verified Adult (18+). We then sign in to the Sandbox environment using a Sandbox Test Account and select a different test scenario (for example, a child/minor scenario). After relaunching the application, the age signal response still remains Verified Adult (18+). Scenario 2: Apple Account Signed Out We sign out of the Apple account from the device. As a result, TestFlight is also signed out. When the application is launched, the response changes to Unable to Verify. Even after changing Sandbox test scenarios (such as child, teen, or adult scenarios), the application continues to return Unable to Verify rather than the selected test case response. Based on this behavior, it appears that the application is not reflecting the scenario selected in the Sandbox environment. Questions What is the correct process for connecting an application to the Sandbox environment when testing Declared Age Range scenarios? Does the Apple ID used for TestFlight need to be associated with or match the Sandbox Test Account? Should the device remain signed in to a regular Apple ID while the Sandbox Test Account is used for testing? How does the app determine whether it should use the selected Sandbox scenario versus the signed-in Apple account? Are there any additional device settings, account requirements, or configuration steps required for Sandbox age-range testing? Is there a way to verify that the application is successfully connected to the Sandbox environment and consuming the selected test scenario? If the Sandbox scenario is configured correctly, should we expect the API response to change immediately when switching between child, teen, and adult test cases? At present, regardless of the Sandbox scenario selected, the application either continues to return Verified Adult (18+) or Unable to Verify, and we have been unable to validate the documented Sandbox test scenarios. Could you please provide guidance on the expected setup and testing workflow for TestFlight applications using the Declared Age Range feature? Thank you for your assistance.
2
0
118
2w
Apple Watch Ultra 4 not visible in Xcode 27 Device Hub
Hello, I’m trying to pair an Apple Watch Ultra 4 running watchOS 27 with Xcode 27, but the watch does not appear in Device Hub or under “Pair Nearby Device”. The iPhone paired with the watch is detected correctly by Xcode. Developer Mode is enabled on both devices, and the Mac, iPhone, and Apple Watch are on the same Wi-Fi network. I have already tried restarting all devices, connecting the iPhone by USB, disabling and re-enabling Bluetooth and Wi-Fi, disabling VPN/firewall software, and checking that the watchOS Developer Disk Image is installed and usable. The watch still does not appear as a physical device. Only Apple Watch simulators are listed. Has anyone experienced this issue or found a workaround? Thank you.
2
1
424
2w
iOS 27.1 Simulator download stuck at "Preparing" (FB25345300)
Hi, xcodebuild -downloadPlatform iOS stays at "Preparing to download..." for the iOS 27.1 Simulator (24A94425). mobileassetd receives 0 bytes. Environment: MacBook Pro (M3), macOS 26.7.2, Xcode 27 Tried (no change): Reinstalled macOS from Recovery Safe Mode Reset Xcode preferences Network to Apple servers is OK This started in September when the iOS 27.1 beta Simulator install failed (low disk space). mobileassetd log: Failed to set xattr on '/System/Library/AssetsV2/com_apple_MobileAsset_iOSSimulatorRuntime/1d40f…asset' (errno 2) SecKeyVerifySignature failed: CSSMERR_CSP_VERIFY_FAILED GetDecryptionKey: Failed to obtain decryption key Is there a supported way to reset the MobileAsset state or install the runtime manually? Feedback: FB25345300 Thank you.
0
0
79
2w
Custom DWARF_DSYM_FOLDER_PATH breaks dSYM copying during "xcodebuild archive" job
It has always been this way. But I wonder why? Having the minimal xcode project, if you building and archive with: xcodebuild archive -project sample.xcodeproj -scheme sample -configuration Release -destination 'generic/platform=macOS' -archivePath out/sample.xcarchive DWARF_DSYM_FOLDER_PATH='out/dsym'final xcarchive will have empty dSYMs directory. At the same time, out/dsym/sample.app.dSYM exists. So it turns out that dSYM generation respects DWARF_DSYM_FOLDER_PATH variable, but archiving operation - doesn't. From my point of view, this is not logical because I explicitly specified the location and this location works partially. Am I missing anything? Is there some other variables that controls where archiving searchs for dSYM? Because at this moment it looks like it is internally hardcoded to somewhat like "$(BUILD_DIR)/$(CONFIGURATION)" Any help is appreciated, Best regards!
0
0
141
2w
swift-frontend continues running after quitting xcode - draining battery.
not only that but a new instance is created every time xcode quits and restarts. each instance runs at min 100% cpu constantly even when xcode quit. my batter has been draining super fast since the last xcode update. xcode is listed under Using Significant Energy all the time, even when idle in background. and even after quitting. I thought this might just be stale information but my activity monitor shows xcode as using 8,778 power in the last 12 hours even tho i quit it last night. swift-frontend doesn't show power usage. but in the CPU usage i saw 3 instances of swift-frontend each running above 100% CPU. i force quit them and xcode finally disappeared from the USP list.
0
0
75
2w
Xcode 27 beta: "Missing package product" for a Swift Package in a registry
I have a project that builds fine in macOS 26 with Xcode 26. On macOS 27 b4 and Xcode beta, the same project can't build because of a framework that should be pulled from a Swift Package from a package-registry (named Registry, for example below), hosted on JFrog. I have the registry set up and have the token in keychain. The resolution of the packages works. But when I build, I get error like this: error: Missing package product 'Registry.Package_Package.Package' (in target 'Target' from project 'Project') . The real package should just be 'Registry.Package'. Any help with that? Is it a bug?
15
4
2.3k
2w
New simulators do not show up in Device Hub
Xcode is completely broken since I installed Xcode 27.1 Beta for the first time. Since then every Xcode I installed is unable to properly install simulators. Even though the SDK appears as installed in settings: Device Hub doesn't show it: To fix it I have to manually add SDK image using "xcrun simctl runtime add" and then play with a couple more commands. I've just installed Xcode 27.2 with iOS 27.2 SDK and again the same problem: There is a problem with signature: Any idea how to fix it, so that I don't have to install it manually every time...?
1
0
581
2w
Storyboards stuck on "Loading iOS 27.1..." in Xcode 27.1, including new projects
SUMMARY In Xcode 27.1, opening any Main.storyboard never finishes loading. The editor shows "Loading iOS 27.1..." indefinitely. This happens in existing projects and in a brand-new iOS App project created with Interface: Storyboard. Before that, the editor showed "Failed to open Main.storyboard: iOS 27.1 Platform Not Installed." ENVIRONMENT Xcode 27.1 iOS SDK build: 24A94232 (from xcrun --sdk iphonesimulator --show-sdk-build-version) macOS: [YOUR macOS VERSION] Hardware: MacBook Air, Apple M1 Run destination: iPhone 17 Pro Max simulator STEPS TO REPRODUCE Open Xcode 27.1. Create a new project: iOS > App, Interface: Storyboard, Language: Swift. Click Main.storyboard in the Project Navigator. EXPECTED RESULT The storyboard renders in Interface Builder and the Objects library lists UI elements. ACTUAL RESULT The editor stays on "Loading iOS 27.1..." and the Objects library shows "No Matches." Opening the file as Source Code works, and the XML is valid (targetRuntime="iOS.CocoaTouch"), so the file itself is fine. RUNTIME STATE Initially the only iOS 27.1 runtime installed was build 24A94425, shown as Ready in xcrun simctl runtime list. Xcode reported "iOS 27.1 Platform Not Installed," and the runtime did not appear in Settings > Components. The Xcode SDK build is 24A94232, which does not match 24A94425. I ran xcodebuild -downloadPlatform iOS, which installed iOS 27.1 (24A94232). The error then changed to "Loading iOS 27.1..." and stayed there. Settings > Components then showed an "Update" button for iOS 27.1 (8.07 GB). Clicking it installed iOS 27.1 (24A94425) again, so both builds are now present and Ready. The storyboard is still stuck. WHAT I TRIED (none fixed it) Deleting ~/Library/Developer/Xcode/DerivedData sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService Removing and reinstalling the iOS 27.1 runtime Restarting the Mac Waiting several minutes on the first load (~/Library/Developer/Xcode/UserData/IB Support does not exist on this machine)
1
0
115
2w
Simulator Apple Account sign-in fails with GsService2/postdata 401 (-22411 / -42023) after 2FA, Xcode 27.1
On 25 October 2026, signing in to an Apple Account in the Simulator (Settings > Apple Account > Sign in Manually) fails on iOS 27.0 and iOS 26.5 runtimes (Xcode 27.1, macOS 27.0.1, Apple silicon), for a new account (SMS second factor) and for an established account (trusted-device second factor). The password and second-factor steps complete; then akd logs "Will check in with IDMS" and POST gsas.apple.com/grandslam/GsService2/postdata returns HTTP 401 with ec -22411, sec -42023 ("This action cannot be completed at this time"), followed by "Failed to check in with IDMS! ... AKAuthenticationError Code=-7026". Settings then says the account or password is incorrect. The host Mac checks in with IDMS successfully, and the account works on icloud.com. I need a second account in the Simulator to test CloudKit share acceptance. Is this a known issue, and is there a workaround? Feedback: FB25318712.
0
0
134
2w
built-in SwiftBuild temporary directory
Installed Xcode ProductBuildVersion 27A9275, SwiftBuild 25000.0.222. Synthetic static Swift framework and three arithmetic XCTest cases only. No real app, account, health data or code-signing identity is needed. A Seatbelt profile allows an exclusively owned child of the normal macOS per-user temporary directory, public SDK/toolchain reads and necessary build services, while denying private-home data and writes elsewhere. Network is denied. The process receives TMPDIR, TMP and TEMP set to that owned child. Fresh DerivedData and result-bundle paths also point inside it. A generic iOS Simulator build-for-testing stops at builtin-infoPlistUtility: mkdtemp tries to create swbuild.tmp.* directly in the per-user temporary parent and returns EPERM. The documented -userdefault=value argument syntax accepts -SWBBuildServiceEnvironmentOverrides='{ TMPDIR = "<owned-child>/"; TMP = "<owned-child>/"; TEMP = "<owned-child>/"; }' but a changed synthetic trial still selects the parent. Acceptance is not proof of the runtime dictionary type or transport adoption. A standalone process under the same profile, using installed Foundation, reports getenv("TMPDIR") as the owned child while both FileManager.default.temporaryDirectory and NSTemporaryDirectory return the parent. The installed SwiftBuild Path.temporaryDirectory implementation calls NSFileManager.defaultManager temporaryDirectory. The out-of-process initializer requires a string-to-string dictionary, then applies it to the child environment. Question for Apple: what supported per-invocation control makes built-in tasks use an explicitly owned temporary child on this version, and what supported no-build diagnostic proves its effective adoption? Is this Foundation behavior expected under Seatbelt? We cannot grant access to the shared parent or private home, change trust/keychain access, inject code, or modify installed libraries. CoreSimulator's separate runtime-availability error is not attributed to this temporary-path issue.
0
0
39
2w
Xcode 27.1 does not recognize iPhone 15 Pro — pairingState: unsupported
Hello, I am a beginner learning to develop iOS apps with SwiftUI. My setup: MacBook running macOS 27.0.1 Xcode 27.1 iPhone 15 Pro running iOS 27.0.1 Developer Mode enabled on the iPhone My iPhone is connected via USB-C and is recognized by Finder and macOS System Information. However, my iPhone does not appear as a run destination in Xcode. Only simulators are available. The command xcrun devicectl list devices detects the physical iPhone, but its connection information shows: pairingState: unsupported tunnelState: unavailable I have already restarted both devices, tried different USB ports, checked my Apple account in Xcode, and confirmed that Developer Mode is enabled. A simple SwiftUI test app runs correctly in the simulator, but I cannot install it on my physical iPhone. What could cause this pairing problem, and how can I resolve it? Thank you for your help.
8
0
212
2w
Unable to download iOS 27 simulator images on Xcode 27.1
Hello so i have been trying to download ios 27 simulator images in xcode but whenever i try to download it, it forever gets stuck in the state of preparing to download and never downloads it even after waiting for 2-3 hours, Can somebody please help me figure it out, i have tried uninstalling and reinstalling xcode but the issue isn't resolved please if someone has solution to this problem do share here!!
2
0
312
2w
XCUITest text entry drops characters on physical iOS 27 devices since Xcode 27 GA (FB24932647)
Since Xcode 27 GA, text entry from a UI test on a physical iOS 27 device delivers only the first 3–4 characters and then stops, while the call still returns success. Taps and scrolls are fine. The same tests pass on Xcode 27 beta 1. Filed as FB24932647. Broken: Xcode 27.0 (27A266a), 27.1 beta (27A9269), 27.2 beta 2 (27B5028f) Works: Xcode 27 beta 1 (27A5194q) Device: iPhone, iOS 27.0 (24A437) Repro. We drive it through WebDriverAgent. The failing step is XCTest's own event synthesis in testmanagerd, which is the same path XCUIElement.typeText goes through. Xcode 27.2 beta 2, run sudo xcodebuild -runFirstLaunch, reboot the device. Type subjectline into a plain UITextField. Read the field's value back. Expected subjectline. Actual sub or subj, in every one of 16 attempts. In a recipient-style field the fragment appears and is then erased, so nothing survives. 0 of 32 attempts completed. Device log, all within one second: testmanagerd Failed to load displays from CADisplay testmanagerd Failed to resolve displays. Defaulting to generic keyboard sender. testmanagerd Recap event action playback initiated UIKitCore hardwareKeyboardAttached = YES UIKitCore Moving from placement OnScreen to OffScreenDown UIKitCore Change to input view set: (empty) testmanagerd Recap event action playback completed testmanagerd can't resolve a display, so it falls back to a generic keyboard sender that registers a virtual HID keyboard. iOS then treats that as a hardware keyboard and dismisses the software keyboard while the text is still being typed. What changed. Comparing testmanagerd in the two DeveloperDiskImages: beta 1 derived the display from the app's identity (Computed display ID … from embeddedApplicationIdentifier … bundleID). GA removed that and added CADisplay enumeration with the generic fallback. That code is unchanged through 27.2 beta 2. This is not 181945323, which is marked fixed in 27.2 beta 2. That one needs Device Hub and clears on its own. Is anyone else seeing this on device? Is there a supported way to type on device under Xcode 27 GA, other than staying on beta 1?
1
3
391
2w
iOS app installation fails with 0xe8008018 for company team, but succeeds with another Apple Account
iOS app installation fails with 0xe8008018 for company team, but succeeds with another Apple Account Hello Apple Developer Community, We are facing a persistent code-signing issue while installing iOS development builds on a physical iPhone. We have contacted Apple Developer Support multiple times, but we have not yet received a technical explanation for the root cause. Environment Xcode: 26.6 (Build 17F113) macOS: 26.5.2 (Build 25F84) Device: iPhone 12 Pro Max (iPhone12,5) iOS: 26.5 (Build 23F77) Company Team ID: T6MQ4RXG46 Development certificate: Apple Development: Muthoot Money Limited (3MH4U8W7M5) Error message When installing the app through Xcode, installation fails with: 0xe8008018 — The identity used to sign the executable is no longer valid. The full error also contains: MIInstallerErrorDomain Code=13 CoreDeviceError Code=3002 IXUserPresentableErrorDomain Code=14 ApplicationVerificationFailed Troubleshooting performed Verified that the development certificate is within its validity period. Checked the provisioning profile's expiration date and confirmed that the test device UDID is included. Verified the app signature locally using codesign --verify --deep --strict. Confirmed that the app's signing authority and TeamIdentifier match our company team. Tested both our existing application and a newly created minimal iOS project named SigningTest. Important finding The newly created SigningTest app also fails to install when signed using our company team. However, the same test app installs successfully on the same iPhone when signed using another Apple Account's team. This suggests that the issue may be related to the company team's signing configuration or another team-specific factor, although we have not identified the root cause. Questions What could cause iOS to reject a locally valid app signature with error 0xe8008018? How can we identify the specific certificate, provisioning, trust, or device-verification check that is failing during installation? Is there any additional diagnostic command or device log we should collect? Could this indicate a team-specific signing issue that requires investigation by Apple? We would appreciate any technical guidance from developers who have encountered and resolved the same error. Thank you.
1
0
235
2w
iOS 17 Simulator Unresponsive in Xcode 27.1 — Unable to Type or Interact with the Screen
Hello, I am experiencing an issue when running an iOS application on an iOS 17.x Simulator using Xcode 27.1. The simulator becomes completely unresponsive to user input, whether my application is running or not. I cannot type anything or interact with the screen, including tapping UI elements. However, I can still switch between Light and Dark Mode, and the appearance changes accordingly. This makes it impossible to test my application on iOS 17.x using the simulator. Has anyone experienced a similar issue with Xcode 27.1 and the iOS 17.x Simulator? Is there a known workaround or configuration that could resolve this? Any help or suggestions would be appreciated. Thank you.
4
0
167
2w
Is it no longer possible in Xcode 27.1 to run/debug Apps on an iPhone X?
I've still an old iPhone X (running iOS 16.7.16) and like to also use this to test/debug my Apps, but it seems that XCode 27.1 does no longer support it. The device simply does not show up in the new Device Hub. I still have some App-specific data on this device, which I would like to use for the tests, but as XCode now ignores this device, I can't even copy the data over to the newer devices. Is it somhoe possible to add the device to the device Hub, or make it available to XCode so I can actually test on this device as well?
2
0
243
2w
Hosted test bundle links a second static copy of a package module already in a PackageProduct framework
I'm seeing Xcode link two copies of a Swift package module into one test process. The build succeeds without a warning or error, but at run time the app and its hosted unit tests each use their own copy of the module's globals and task-locals. Environment: Xcode 27.0 (27A266a), Swift 6.4, macOS 26.6.2, iPhone 17 Simulator (iOS 27.0, arm64). Sample project: <LINK TO HOSTED SAMPLE> Package graph Logging package Logging library target LoggingTesting → depends on the Logging *target* (same package) Content package Content → depends on the Logging *product* ContentTesting → depends on the Content target Repro (app) links products Logging, Content ReproTests (hosted unit test) links products LoggingTesting, ContentTesting TEST_HOST / BUNDLE_LOADER = Repro.appLoggingTesting depends on the Logging target rather than the product so it can use package-access API: a @TaskLocal package static var label on LoggingSystem. Libraries that ship a testing companion commonly use this layout. Steps to reproduce xcodebuild test -project Repro.xcodeproj -scheme Repro \ -destination 'platform=iOS Simulator,name=iPhone 17,OS=27.0' -derivedDataPath /tmp/repro-dd cd /tmp/repro-dd/Build/Products/Debug-iphonesimulator ls Repro.app/Frameworks nm Repro.app/PlugIns/ReproTests.xctest/ReproTests | xcrun swift-demangle | grep -v ' U ' | grep LoggingSystem otool -L Repro.app/PlugIns/ReproTests.xctest/ReproTestsExpected The test process contains one copy of Logging, so all three tests pass: Logger.shared is the same instance in the test bundle and the app, and a task-local bound through LoggingTesting is visible to app code and to Content. Actual All three tests fail: ✘ Test loggerShared_whenReadFromTestAndApp_isTheSameInstance() recorded an issue at ReproTests.swift:11:9: Expectation failed: ObjectIdentifier(Logger.shared) == appLoggerIdentity() ✘ Test taskLocal_whenBoundByLoggingTesting_isVisibleToApp() recorded an issue at ReproTests.swift:18:13: Expectation failed: appLoggingLabel() == "test" ✘ Test taskLocal_whenBoundByLoggingTesting_isVisibleToContent() recorded an issue at ReproTests.swift:26:13: Expectation failed: contentLoggingLabel() == "test"The built products explain it: Repro.app/Frameworks contains Content.framework and Logging_35C93DA702091ECE_PackageProduct.framework. The app and the test bundle both link Content, so Xcode builds it as a dynamic framework. That framework depends on the Logging product, so Xcode wraps the product in its own framework. ReproTests links the wrapper framework (otool -L lists @rpath/Logging_35C93DA702091ECE_PackageProduct.framework/…) and defines its own copy of the module: T static Logging.LoggingSystem.label.getter : Swift.String T Logging.LoggingSystem.$label.unsafeMutableAddressor : Swift.TaskLocal<Swift.String> S static Logging.LoggingSystem.$label : Swift.TaskLocal<Swift.String> T Logging.Logger.shared.unsafeMutableAddressor : Logging.Logger S static Logging.Logger.shared : Logging.Logger D type metadata for Logging.LoggerThis static copy comes from LoggingTesting's dependency on the Logging target. LoggingTesting binds $label in the test bundle's copy, while the app and Content read the wrapper framework's copy and still see "default". Control Removing ContentTesting from ReproTests (with its import and the third test) makes the problem go away. No second image links Content, so Xcode keeps it static and builds the Logging target as a single shared Logging.framework. The test bundle then only references the symbols (U Logging.LoggingSystem.$label…), and the remaining two tests pass. What I've tried Declaring the package products type: .static. Xcode still builds the target as a dynamic framework, and the duplicate remains. Moving the testing library into its own package that depends on the Logging product. This removes the duplicate, but package access can't cross package boundaries, so the task-local's binding API has to become public on Logging. Removing Content's dependency on Logging. This also removes the duplicate, but Content needs to log. Why it matters Our production app hit this when it adopted a new version of a package whose main library depends on our logging package's product and that ships its own testing companion. After the update, every unit test that asserted on logging through the logging package's testing library silently recorded nothing. Tests that inject mock loggers directly kept passing, so the update looked healthy. We found the cause only by inspecting symbols with nm. Questions Is it expected that Xcode links a second, static copy of a package module into a hosted test bundle that also links a framework Xcode generated for the same module? If not, I'll file a Feedback. If it is expected, why is there no diagnostic? What's the supported way to structure a library and its testing companion when the companion needs package access to the library, and an app and its hosted unit tests consume the library through another package? Is there a package declaration or build setting that makes Xcode use a single copy of Logging in this graph?
0
0
55
2w
Recovery qualification before updating a development app: encrypted Finder backup and container export
I am qualifying a data-preserving update of my own development-signed iOS/iPadOS app (Target Keeper). I would like to understand the supported recovery guarantees and limitations before changing an existing installation, rather than treating a completed backup or successful model-open test as proof of full rollback. Environment: iOS/iPadOS 27.0.1 and Xcode 27.1. Existing development installations must be retained. The original signed packages for the older installed builds are unavailable. No update, uninstall, device erase or restore has been performed as part of this qualification. Evidence already retained privately: Completed encrypted Finder backup records for each device, with the password kept private. Apple Device Hub downloads of each existing app-data container, retained separately with file counts and SHA-256 manifests. Disposable copies of the actual prior SwiftData store, relevant WAL/SHM files, preferences and selected-photo data opened using the proposed version's existing model and guarded local-startup implementation. Model identities/content fingerprints were unchanged in those tests. The separate Codable Portfolio repository passed loading/reopening on disposable copies without changing the ledger bytes. Controlled process interruption/reopen tests passed on disposable local copies. These tests did not run the entire signed app-update lifecycle on a physical device, validate Keychain continuity, establish an atomic source-side multi-store snapshot, or test restore on the original devices. CloudKit records are not being mutated. I have read Apple's update-testing and container-download/replace guidance: https://developer.apple.com/documentation/xcode/testing-a-release-build https://help.apple.com/xcode/mac/current/en.lproj/dev816c242e1.html Specific questions: For a locally development-signed app that is not available from the App Store, what does an encrypted Finder backup preserve and what additional artifacts are needed to recover the usable app and its data if the original signed app package is missing? Does a backup completion record establish anything about restoration of that development executable? What consistency guarantees does Device Hub's app-container download provide when the app has multiple stores (SwiftData/SQLite with WAL, a separate JSON ledger, preferences and photos)? Is a quiescent/terminated app required, and what is the recommended way to qualify a coherent capture without modifying the original records? What is Apple's recommended recovery rehearsal on a disposable device/installation before an in-place update? Which identity, signing, file-protection and Keychain limitations must be considered, especially for ThisDeviceOnly items and same-device versus different-device restoration? Which preservation checks remain the developer's responsibility beyond successful container replacement or store opening? I do not want to mistake reinstalling an app binary for rolling back a migrated multi-store data set. Separately, an earlier strict source read rejected a file-metadata change, but its paired content hashes were not retained. I am not asserting an Apple defect, corruption or an identified writer, and newer successful copies cannot reconstruct that missing observation. Is there a recommended narrowly scoped Apple diagnostic for future capture that records before/after file identity and content consistency without weakening integrity rejection? No backups, passwords, personal device identifiers, private certificates, record contents or confidential logs are attached. I am seeking a supported qualification procedure, not instructions to bypass preservation safeguards or destructively test on the original devices.
Replies
0
Boosts
0
Views
137
Activity
1w
TestFlight Declared Age Range Sandbox Scenarios Not Reflected in App Responses
Hello team, We are testing the Declared Age Range/Age Signal functionality in a TestFlight build and would appreciate guidance on the correct setup and testing process. Current Behavior Observed We are seeing inconsistent behavior between the Sandbox environment and the age-range results returned to the application. Scenario 1: Apple Account Signed In A regular Apple ID is signed in on the device. The TestFlight build is installed and launched. The application returns Verified Adult (18+). We then sign in to the Sandbox environment using a Sandbox Test Account and select a different test scenario (for example, a child/minor scenario). After relaunching the application, the age signal response still remains Verified Adult (18+). Scenario 2: Apple Account Signed Out We sign out of the Apple account from the device. As a result, TestFlight is also signed out. When the application is launched, the response changes to Unable to Verify. Even after changing Sandbox test scenarios (such as child, teen, or adult scenarios), the application continues to return Unable to Verify rather than the selected test case response. Based on this behavior, it appears that the application is not reflecting the scenario selected in the Sandbox environment. Questions What is the correct process for connecting an application to the Sandbox environment when testing Declared Age Range scenarios? Does the Apple ID used for TestFlight need to be associated with or match the Sandbox Test Account? Should the device remain signed in to a regular Apple ID while the Sandbox Test Account is used for testing? How does the app determine whether it should use the selected Sandbox scenario versus the signed-in Apple account? Are there any additional device settings, account requirements, or configuration steps required for Sandbox age-range testing? Is there a way to verify that the application is successfully connected to the Sandbox environment and consuming the selected test scenario? If the Sandbox scenario is configured correctly, should we expect the API response to change immediately when switching between child, teen, and adult test cases? At present, regardless of the Sandbox scenario selected, the application either continues to return Verified Adult (18+) or Unable to Verify, and we have been unable to validate the documented Sandbox test scenarios. Could you please provide guidance on the expected setup and testing workflow for TestFlight applications using the Declared Age Range feature? Thank you for your assistance.
Replies
2
Boosts
0
Views
118
Activity
2w
Apple Watch Ultra 4 not visible in Xcode 27 Device Hub
Hello, I’m trying to pair an Apple Watch Ultra 4 running watchOS 27 with Xcode 27, but the watch does not appear in Device Hub or under “Pair Nearby Device”. The iPhone paired with the watch is detected correctly by Xcode. Developer Mode is enabled on both devices, and the Mac, iPhone, and Apple Watch are on the same Wi-Fi network. I have already tried restarting all devices, connecting the iPhone by USB, disabling and re-enabling Bluetooth and Wi-Fi, disabling VPN/firewall software, and checking that the watchOS Developer Disk Image is installed and usable. The watch still does not appear as a physical device. Only Apple Watch simulators are listed. Has anyone experienced this issue or found a workaround? Thank you.
Replies
2
Boosts
1
Views
424
Activity
2w
iOS 27.1 Simulator download stuck at "Preparing" (FB25345300)
Hi, xcodebuild -downloadPlatform iOS stays at "Preparing to download..." for the iOS 27.1 Simulator (24A94425). mobileassetd receives 0 bytes. Environment: MacBook Pro (M3), macOS 26.7.2, Xcode 27 Tried (no change): Reinstalled macOS from Recovery Safe Mode Reset Xcode preferences Network to Apple servers is OK This started in September when the iOS 27.1 beta Simulator install failed (low disk space). mobileassetd log: Failed to set xattr on '/System/Library/AssetsV2/com_apple_MobileAsset_iOSSimulatorRuntime/1d40f…asset' (errno 2) SecKeyVerifySignature failed: CSSMERR_CSP_VERIFY_FAILED GetDecryptionKey: Failed to obtain decryption key Is there a supported way to reset the MobileAsset state or install the runtime manually? Feedback: FB25345300 Thank you.
Replies
0
Boosts
0
Views
79
Activity
2w
Custom DWARF_DSYM_FOLDER_PATH breaks dSYM copying during "xcodebuild archive" job
It has always been this way. But I wonder why? Having the minimal xcode project, if you building and archive with: xcodebuild archive -project sample.xcodeproj -scheme sample -configuration Release -destination 'generic/platform=macOS' -archivePath out/sample.xcarchive DWARF_DSYM_FOLDER_PATH='out/dsym'final xcarchive will have empty dSYMs directory. At the same time, out/dsym/sample.app.dSYM exists. So it turns out that dSYM generation respects DWARF_DSYM_FOLDER_PATH variable, but archiving operation - doesn't. From my point of view, this is not logical because I explicitly specified the location and this location works partially. Am I missing anything? Is there some other variables that controls where archiving searchs for dSYM? Because at this moment it looks like it is internally hardcoded to somewhat like "$(BUILD_DIR)/$(CONFIGURATION)" Any help is appreciated, Best regards!
Replies
0
Boosts
0
Views
141
Activity
2w
swift-frontend continues running after quitting xcode - draining battery.
not only that but a new instance is created every time xcode quits and restarts. each instance runs at min 100% cpu constantly even when xcode quit. my batter has been draining super fast since the last xcode update. xcode is listed under Using Significant Energy all the time, even when idle in background. and even after quitting. I thought this might just be stale information but my activity monitor shows xcode as using 8,778 power in the last 12 hours even tho i quit it last night. swift-frontend doesn't show power usage. but in the CPU usage i saw 3 instances of swift-frontend each running above 100% CPU. i force quit them and xcode finally disappeared from the USP list.
Replies
0
Boosts
0
Views
75
Activity
2w
Xcode 27 beta: "Missing package product" for a Swift Package in a registry
I have a project that builds fine in macOS 26 with Xcode 26. On macOS 27 b4 and Xcode beta, the same project can't build because of a framework that should be pulled from a Swift Package from a package-registry (named Registry, for example below), hosted on JFrog. I have the registry set up and have the token in keychain. The resolution of the packages works. But when I build, I get error like this: error: Missing package product 'Registry.Package_Package.Package' (in target 'Target' from project 'Project') . The real package should just be 'Registry.Package'. Any help with that? Is it a bug?
Replies
15
Boosts
4
Views
2.3k
Activity
2w
New simulators do not show up in Device Hub
Xcode is completely broken since I installed Xcode 27.1 Beta for the first time. Since then every Xcode I installed is unable to properly install simulators. Even though the SDK appears as installed in settings: Device Hub doesn't show it: To fix it I have to manually add SDK image using "xcrun simctl runtime add" and then play with a couple more commands. I've just installed Xcode 27.2 with iOS 27.2 SDK and again the same problem: There is a problem with signature: Any idea how to fix it, so that I don't have to install it manually every time...?
Replies
1
Boosts
0
Views
581
Activity
2w
Storyboards stuck on "Loading iOS 27.1..." in Xcode 27.1, including new projects
SUMMARY In Xcode 27.1, opening any Main.storyboard never finishes loading. The editor shows "Loading iOS 27.1..." indefinitely. This happens in existing projects and in a brand-new iOS App project created with Interface: Storyboard. Before that, the editor showed "Failed to open Main.storyboard: iOS 27.1 Platform Not Installed." ENVIRONMENT Xcode 27.1 iOS SDK build: 24A94232 (from xcrun --sdk iphonesimulator --show-sdk-build-version) macOS: [YOUR macOS VERSION] Hardware: MacBook Air, Apple M1 Run destination: iPhone 17 Pro Max simulator STEPS TO REPRODUCE Open Xcode 27.1. Create a new project: iOS > App, Interface: Storyboard, Language: Swift. Click Main.storyboard in the Project Navigator. EXPECTED RESULT The storyboard renders in Interface Builder and the Objects library lists UI elements. ACTUAL RESULT The editor stays on "Loading iOS 27.1..." and the Objects library shows "No Matches." Opening the file as Source Code works, and the XML is valid (targetRuntime="iOS.CocoaTouch"), so the file itself is fine. RUNTIME STATE Initially the only iOS 27.1 runtime installed was build 24A94425, shown as Ready in xcrun simctl runtime list. Xcode reported "iOS 27.1 Platform Not Installed," and the runtime did not appear in Settings > Components. The Xcode SDK build is 24A94232, which does not match 24A94425. I ran xcodebuild -downloadPlatform iOS, which installed iOS 27.1 (24A94232). The error then changed to "Loading iOS 27.1..." and stayed there. Settings > Components then showed an "Update" button for iOS 27.1 (8.07 GB). Clicking it installed iOS 27.1 (24A94425) again, so both builds are now present and Ready. The storyboard is still stuck. WHAT I TRIED (none fixed it) Deleting ~/Library/Developer/Xcode/DerivedData sudo killall -9 com.apple.CoreSimulator.CoreSimulatorService Removing and reinstalling the iOS 27.1 runtime Restarting the Mac Waiting several minutes on the first load (~/Library/Developer/Xcode/UserData/IB Support does not exist on this machine)
Replies
1
Boosts
0
Views
115
Activity
2w
Simulator Apple Account sign-in fails with GsService2/postdata 401 (-22411 / -42023) after 2FA, Xcode 27.1
On 25 October 2026, signing in to an Apple Account in the Simulator (Settings > Apple Account > Sign in Manually) fails on iOS 27.0 and iOS 26.5 runtimes (Xcode 27.1, macOS 27.0.1, Apple silicon), for a new account (SMS second factor) and for an established account (trusted-device second factor). The password and second-factor steps complete; then akd logs "Will check in with IDMS" and POST gsas.apple.com/grandslam/GsService2/postdata returns HTTP 401 with ec -22411, sec -42023 ("This action cannot be completed at this time"), followed by "Failed to check in with IDMS! ... AKAuthenticationError Code=-7026". Settings then says the account or password is incorrect. The host Mac checks in with IDMS successfully, and the account works on icloud.com. I need a second account in the Simulator to test CloudKit share acceptance. Is this a known issue, and is there a workaround? Feedback: FB25318712.
Replies
0
Boosts
0
Views
134
Activity
2w
built-in SwiftBuild temporary directory
Installed Xcode ProductBuildVersion 27A9275, SwiftBuild 25000.0.222. Synthetic static Swift framework and three arithmetic XCTest cases only. No real app, account, health data or code-signing identity is needed. A Seatbelt profile allows an exclusively owned child of the normal macOS per-user temporary directory, public SDK/toolchain reads and necessary build services, while denying private-home data and writes elsewhere. Network is denied. The process receives TMPDIR, TMP and TEMP set to that owned child. Fresh DerivedData and result-bundle paths also point inside it. A generic iOS Simulator build-for-testing stops at builtin-infoPlistUtility: mkdtemp tries to create swbuild.tmp.* directly in the per-user temporary parent and returns EPERM. The documented -userdefault=value argument syntax accepts -SWBBuildServiceEnvironmentOverrides='{ TMPDIR = "<owned-child>/"; TMP = "<owned-child>/"; TEMP = "<owned-child>/"; }' but a changed synthetic trial still selects the parent. Acceptance is not proof of the runtime dictionary type or transport adoption. A standalone process under the same profile, using installed Foundation, reports getenv("TMPDIR") as the owned child while both FileManager.default.temporaryDirectory and NSTemporaryDirectory return the parent. The installed SwiftBuild Path.temporaryDirectory implementation calls NSFileManager.defaultManager temporaryDirectory. The out-of-process initializer requires a string-to-string dictionary, then applies it to the child environment. Question for Apple: what supported per-invocation control makes built-in tasks use an explicitly owned temporary child on this version, and what supported no-build diagnostic proves its effective adoption? Is this Foundation behavior expected under Seatbelt? We cannot grant access to the shared parent or private home, change trust/keychain access, inject code, or modify installed libraries. CoreSimulator's separate runtime-availability error is not attributed to this temporary-path issue.
Replies
0
Boosts
0
Views
39
Activity
2w
Xcode 27.1 does not recognize iPhone 15 Pro — pairingState: unsupported
Hello, I am a beginner learning to develop iOS apps with SwiftUI. My setup: MacBook running macOS 27.0.1 Xcode 27.1 iPhone 15 Pro running iOS 27.0.1 Developer Mode enabled on the iPhone My iPhone is connected via USB-C and is recognized by Finder and macOS System Information. However, my iPhone does not appear as a run destination in Xcode. Only simulators are available. The command xcrun devicectl list devices detects the physical iPhone, but its connection information shows: pairingState: unsupported tunnelState: unavailable I have already restarted both devices, tried different USB ports, checked my Apple account in Xcode, and confirmed that Developer Mode is enabled. A simple SwiftUI test app runs correctly in the simulator, but I cannot install it on my physical iPhone. What could cause this pairing problem, and how can I resolve it? Thank you for your help.
Replies
8
Boosts
0
Views
212
Activity
2w
Unable to download iOS 27 simulator images on Xcode 27.1
Hello so i have been trying to download ios 27 simulator images in xcode but whenever i try to download it, it forever gets stuck in the state of preparing to download and never downloads it even after waiting for 2-3 hours, Can somebody please help me figure it out, i have tried uninstalling and reinstalling xcode but the issue isn't resolved please if someone has solution to this problem do share here!!
Replies
2
Boosts
0
Views
312
Activity
2w
XCUITest text entry drops characters on physical iOS 27 devices since Xcode 27 GA (FB24932647)
Since Xcode 27 GA, text entry from a UI test on a physical iOS 27 device delivers only the first 3–4 characters and then stops, while the call still returns success. Taps and scrolls are fine. The same tests pass on Xcode 27 beta 1. Filed as FB24932647. Broken: Xcode 27.0 (27A266a), 27.1 beta (27A9269), 27.2 beta 2 (27B5028f) Works: Xcode 27 beta 1 (27A5194q) Device: iPhone, iOS 27.0 (24A437) Repro. We drive it through WebDriverAgent. The failing step is XCTest's own event synthesis in testmanagerd, which is the same path XCUIElement.typeText goes through. Xcode 27.2 beta 2, run sudo xcodebuild -runFirstLaunch, reboot the device. Type subjectline into a plain UITextField. Read the field's value back. Expected subjectline. Actual sub or subj, in every one of 16 attempts. In a recipient-style field the fragment appears and is then erased, so nothing survives. 0 of 32 attempts completed. Device log, all within one second: testmanagerd Failed to load displays from CADisplay testmanagerd Failed to resolve displays. Defaulting to generic keyboard sender. testmanagerd Recap event action playback initiated UIKitCore hardwareKeyboardAttached = YES UIKitCore Moving from placement OnScreen to OffScreenDown UIKitCore Change to input view set: (empty) testmanagerd Recap event action playback completed testmanagerd can't resolve a display, so it falls back to a generic keyboard sender that registers a virtual HID keyboard. iOS then treats that as a hardware keyboard and dismisses the software keyboard while the text is still being typed. What changed. Comparing testmanagerd in the two DeveloperDiskImages: beta 1 derived the display from the app's identity (Computed display ID … from embeddedApplicationIdentifier … bundleID). GA removed that and added CADisplay enumeration with the generic fallback. That code is unchanged through 27.2 beta 2. This is not 181945323, which is marked fixed in 27.2 beta 2. That one needs Device Hub and clears on its own. Is anyone else seeing this on device? Is there a supported way to type on device under Xcode 27 GA, other than staying on beta 1?
Replies
1
Boosts
3
Views
391
Activity
2w
iOS app installation fails with 0xe8008018 for company team, but succeeds with another Apple Account
iOS app installation fails with 0xe8008018 for company team, but succeeds with another Apple Account Hello Apple Developer Community, We are facing a persistent code-signing issue while installing iOS development builds on a physical iPhone. We have contacted Apple Developer Support multiple times, but we have not yet received a technical explanation for the root cause. Environment Xcode: 26.6 (Build 17F113) macOS: 26.5.2 (Build 25F84) Device: iPhone 12 Pro Max (iPhone12,5) iOS: 26.5 (Build 23F77) Company Team ID: T6MQ4RXG46 Development certificate: Apple Development: Muthoot Money Limited (3MH4U8W7M5) Error message When installing the app through Xcode, installation fails with: 0xe8008018 — The identity used to sign the executable is no longer valid. The full error also contains: MIInstallerErrorDomain Code=13 CoreDeviceError Code=3002 IXUserPresentableErrorDomain Code=14 ApplicationVerificationFailed Troubleshooting performed Verified that the development certificate is within its validity period. Checked the provisioning profile's expiration date and confirmed that the test device UDID is included. Verified the app signature locally using codesign --verify --deep --strict. Confirmed that the app's signing authority and TeamIdentifier match our company team. Tested both our existing application and a newly created minimal iOS project named SigningTest. Important finding The newly created SigningTest app also fails to install when signed using our company team. However, the same test app installs successfully on the same iPhone when signed using another Apple Account's team. This suggests that the issue may be related to the company team's signing configuration or another team-specific factor, although we have not identified the root cause. Questions What could cause iOS to reject a locally valid app signature with error 0xe8008018? How can we identify the specific certificate, provisioning, trust, or device-verification check that is failing during installation? Is there any additional diagnostic command or device log we should collect? Could this indicate a team-specific signing issue that requires investigation by Apple? We would appreciate any technical guidance from developers who have encountered and resolved the same error. Thank you.
Replies
1
Boosts
0
Views
235
Activity
2w
iOS 17 Simulator Unresponsive in Xcode 27.1 — Unable to Type or Interact with the Screen
Hello, I am experiencing an issue when running an iOS application on an iOS 17.x Simulator using Xcode 27.1. The simulator becomes completely unresponsive to user input, whether my application is running or not. I cannot type anything or interact with the screen, including tapping UI elements. However, I can still switch between Light and Dark Mode, and the appearance changes accordingly. This makes it impossible to test my application on iOS 17.x using the simulator. Has anyone experienced a similar issue with Xcode 27.1 and the iOS 17.x Simulator? Is there a known workaround or configuration that could resolve this? Any help or suggestions would be appreciated. Thank you.
Replies
4
Boosts
0
Views
167
Activity
2w
Is it no longer possible in Xcode 27.1 to run/debug Apps on an iPhone X?
I've still an old iPhone X (running iOS 16.7.16) and like to also use this to test/debug my Apps, but it seems that XCode 27.1 does no longer support it. The device simply does not show up in the new Device Hub. I still have some App-specific data on this device, which I would like to use for the tests, but as XCode now ignores this device, I can't even copy the data over to the newer devices. Is it somhoe possible to add the device to the device Hub, or make it available to XCode so I can actually test on this device as well?
Replies
2
Boosts
0
Views
243
Activity
2w
Hosted test bundle links a second static copy of a package module already in a PackageProduct framework
I'm seeing Xcode link two copies of a Swift package module into one test process. The build succeeds without a warning or error, but at run time the app and its hosted unit tests each use their own copy of the module's globals and task-locals. Environment: Xcode 27.0 (27A266a), Swift 6.4, macOS 26.6.2, iPhone 17 Simulator (iOS 27.0, arm64). Sample project: <LINK TO HOSTED SAMPLE> Package graph Logging package Logging library target LoggingTesting → depends on the Logging *target* (same package) Content package Content → depends on the Logging *product* ContentTesting → depends on the Content target Repro (app) links products Logging, Content ReproTests (hosted unit test) links products LoggingTesting, ContentTesting TEST_HOST / BUNDLE_LOADER = Repro.appLoggingTesting depends on the Logging target rather than the product so it can use package-access API: a @TaskLocal package static var label on LoggingSystem. Libraries that ship a testing companion commonly use this layout. Steps to reproduce xcodebuild test -project Repro.xcodeproj -scheme Repro \ -destination 'platform=iOS Simulator,name=iPhone 17,OS=27.0' -derivedDataPath /tmp/repro-dd cd /tmp/repro-dd/Build/Products/Debug-iphonesimulator ls Repro.app/Frameworks nm Repro.app/PlugIns/ReproTests.xctest/ReproTests | xcrun swift-demangle | grep -v ' U ' | grep LoggingSystem otool -L Repro.app/PlugIns/ReproTests.xctest/ReproTestsExpected The test process contains one copy of Logging, so all three tests pass: Logger.shared is the same instance in the test bundle and the app, and a task-local bound through LoggingTesting is visible to app code and to Content. Actual All three tests fail: ✘ Test loggerShared_whenReadFromTestAndApp_isTheSameInstance() recorded an issue at ReproTests.swift:11:9: Expectation failed: ObjectIdentifier(Logger.shared) == appLoggerIdentity() ✘ Test taskLocal_whenBoundByLoggingTesting_isVisibleToApp() recorded an issue at ReproTests.swift:18:13: Expectation failed: appLoggingLabel() == "test" ✘ Test taskLocal_whenBoundByLoggingTesting_isVisibleToContent() recorded an issue at ReproTests.swift:26:13: Expectation failed: contentLoggingLabel() == "test"The built products explain it: Repro.app/Frameworks contains Content.framework and Logging_35C93DA702091ECE_PackageProduct.framework. The app and the test bundle both link Content, so Xcode builds it as a dynamic framework. That framework depends on the Logging product, so Xcode wraps the product in its own framework. ReproTests links the wrapper framework (otool -L lists @rpath/Logging_35C93DA702091ECE_PackageProduct.framework/…) and defines its own copy of the module: T static Logging.LoggingSystem.label.getter : Swift.String T Logging.LoggingSystem.$label.unsafeMutableAddressor : Swift.TaskLocal<Swift.String> S static Logging.LoggingSystem.$label : Swift.TaskLocal<Swift.String> T Logging.Logger.shared.unsafeMutableAddressor : Logging.Logger S static Logging.Logger.shared : Logging.Logger D type metadata for Logging.LoggerThis static copy comes from LoggingTesting's dependency on the Logging target. LoggingTesting binds $label in the test bundle's copy, while the app and Content read the wrapper framework's copy and still see "default". Control Removing ContentTesting from ReproTests (with its import and the third test) makes the problem go away. No second image links Content, so Xcode keeps it static and builds the Logging target as a single shared Logging.framework. The test bundle then only references the symbols (U Logging.LoggingSystem.$label…), and the remaining two tests pass. What I've tried Declaring the package products type: .static. Xcode still builds the target as a dynamic framework, and the duplicate remains. Moving the testing library into its own package that depends on the Logging product. This removes the duplicate, but package access can't cross package boundaries, so the task-local's binding API has to become public on Logging. Removing Content's dependency on Logging. This also removes the duplicate, but Content needs to log. Why it matters Our production app hit this when it adopted a new version of a package whose main library depends on our logging package's product and that ships its own testing companion. After the update, every unit test that asserted on logging through the logging package's testing library silently recorded nothing. Tests that inject mock loggers directly kept passing, so the update looked healthy. We found the cause only by inspecting symbols with nm. Questions Is it expected that Xcode links a second, static copy of a package module into a hosted test bundle that also links a framework Xcode generated for the same module? If not, I'll file a Feedback. If it is expected, why is there no diagnostic? What's the supported way to structure a library and its testing companion when the companion needs package access to the library, and an app and its hosted unit tests consume the library through another package? Is there a package declaration or build setting that makes Xcode use a single copy of Logging in this graph?
Replies
0
Boosts
0
Views
55
Activity
2w