Dive into the vast array of tools and services available to developers.

Posts under General subtopic

Post

Replies

Boosts

Views

Activity

Personal to Organization Migration Pending
How long does this process usually take to conclude. I have being sitting in a pedning sate for some days, no response to support tickets plus I have this notification and cannot take action: "Apple Developer Program License Agreement Updated The Apple Developer Program License Agreement has been updated and needs to be reviewed. In order to update your existing apps and submit new apps, the Account Holder must review and accept the updated agreement by signing in to their". Please help or advise.
0
0
8
28m
Transporter upload fails with ITMS-90237: Invalid signature when publishing .NET MAUI Mac Catalyst package
Hello everyone, I’m running into a code signing validation failure when delivering a .NET MAUI Mac Catalyst app to App Store Connect via Transporter. I’d appreciate any help in figuring out what is misconfigured. Environment: .NET 9 MAUI (net9.0-maccatalyst) Build host: Mac Delivery tool: Transporter (App Store Connect) Issue: The packaging process itself appears to succeed and produces a .pkg file, but Transporter fails during validation with the following error: text The product archive package's signature is invalid. Ensure that it is signed with your "3rd Party Mac Developer Installer" certificate. (90237) Publish command: I’m publishing and signing from the command line, following Microsoft’s documentation for publishing .NET MAUI Mac Catalyst apps to the Mac App Store. bash dotnet publish -f net9.0-maccatalyst -c Release -p:EnableCodeSigning=true -p:EnablePackageSigning=true -p:CodesignKey="Apple Distribution: Ping Zhang (*********D)" -p:CodesignProvision="AideApp_MacCatalyst" -p:CodesignEntitlements="Platforms/MacCatalyst/Entitlements.plist" -p:PackageSigningKey="3rd Party Mac Developer Installer: Ping Zhang (Y2K7Q6HU4D)" -p:CreatePackage=true What I’ve checked so far: The 3rd Party Mac Developer Installer certificate is present in my keychain. The certificate has not expired. The certificate matches the correct team and App ID. The generated .pkg is what I’m uploading through Transporter. Questions: Is there anything wrong with the PackageSigningKey or CodesignKey parameters in the command above? Does .NET MAUI actually apply the 3rd Party Mac Developer Installer signature to the .pkg when EnablePackageSigning=true and CreatePackage=true are used? Should the CodesignKey be an Apple Distribution certificate, or should it also be a 3rd Party Mac Developer Application certificate for Mac App Store distribution? Are there any additional steps required to ensure the .pkg is signed correctly before uploading with Transporter? How can I verify whether the .pkg was signed with the correct installer certificate? For example, would pkgutil --check-signature be sufficient? Any guidance would be greatly appreciated. Thank you!
1
0
349
1d
Feature Request - MapKit JS: Add "above roads or labels" OverlayLevel to TileOverlay
The MapKit Framework for Swift lets a developer control where a raster/tile overlay is drawn relative to other map content using MKOverlayLevel (.aboveRoads | .aboveLabels) passed to MKMapView.addOverlay(). MapKit JS has no equivalent. There is no level parameter to say "draw this above roads" or "draw this above labels." Please add an overlay-level option to MapKit JS 1️⃣ MapKit JS with TileOverlay Opacity=1 An opacity slider is implemented to help the map viewer to orient themselves with the MapKit JS Hybrid style with a sample raster TileOverlay. 2️⃣ MapKit JS with opacity via slider 3️⃣ MapKit for Swift demonstrates the options for above roads or labels
1
0
175
1w
Python 3.9.x CVE multiple vulnerabilities
Python 3.10 and 3.11 Multiple Vulnerabilities (CVE-2022-4303,CVE-2023-0286) Python 3.10.x Buffer Overflow Vulnerability (CVE-2022-37454) Python 3.11.x Exposure of Sensitive Information Vulnerability (CVE-2023-40217) Python 3.12 and 3.11.10 Input Validation Flaw Vulnerability (CVE-2023-27043) Python 3.13.x and 3.14.x Multiple Vulnerabilities (CVE-2026-2297,CVE-2026-3644,CVE-2026-4224) Python 3.11.x Denial of Service (DoS) Vulnerability (CVE-2020-10735) Python Denial of Service (DoS) Vulnerability (CVE-2023-52425) Python 3.10 and 3.11 URL Blocklist Bypass Vulnerability (CVE-2023-24329) Python 3.10.x to 3.14.x Multiple Vulnerabilities (CVE-2024-12718,CVE-2025-4138,CVE-2025-4330,CVE-2025-4517) Python 3.11.x Denial of Service (DoS) Vulnerability (CVE-2020-10735) Python 3.10 and 3.11 Multiple Vulnerabilities (CVE-2022-4303,CVE-2023-0286) Python 3.10.x Buffer Overflow Vulnerability (CVE-2022-37454) Python 3.13.x and 3.14.x Multiple Vulnerabilities (CVE-2026-2297,CVE-2026-3644,CVE-2026-4224) Python Denial of Service (DoS) Vulnerability (CVE-2023-52425) Python 3.10 and 3.11 URL Blocklist Bypass Vulnerability (CVE-2023-24329) Python 3.10.x to 3.14.x Multiple Vulnerabilities (CVE-2024-12718,CVE-2025-4138,CVE-2025-4330,CVE-2025-4517) Python 3.11.x Exposure of Sensitive Information Vulnerability (CVE-2023-40217) Python 3.12 and 3.11.10 Input Validation Flaw Vulnerability (CVE-2023-27043)
2
0
371
1w
macOS Installer.app: how to omit Destination Select and Installation Type from the GUI wizard (not just skip them)
We ship a signed, notarized product archive (.pkg) built with pkgbuild + productbuild and a custom InstallerPlugins pane (ChoosePlugin.bundle). The payload must always install to the system volume (/). There is no supported alternate directory. customize="never" is set because there is a single component package; the user must not pick packages either. What we already do In Distribution.xml: Introduction ChoosePlugin.bundle Target Install PackageSelection is omitted. customize="never" is set. Observed behavior (current macOS) Destination Select (Target) If Target is kept in SectionOrder, the pane still appears in the wizard (often with a read-only / single-volume UI). That step is unused product-wise: the user cannot choose another location. If Target is removed from SectionOrder, Installer.app hangs on the Installation pane at “Preparing for installation…” (pagecontroller / no selected volume). So Target cannot be dropped if we still use the GUI Installer. Installation Type (PackageSelection) The pane does not run (correct). The sidebar still lists “Installation Type” (and often “Summary”) as grayed items. There is no documented way to hide those labels. There is no public InstallerPlugins API to auto-advance the native Destination Select pane (gotoNextPane only applies to our custom section). Question Is there a supported way (Distribution XML, InstallerSections.plist, productbuild, or otherwise) to: Not show Destination Select at all in Installer.app, while still installing to / and not hanging on Installation; and Not list Installation Type (and unused Summary) in the left-hand wizard list, when customize="never" and PackageSelection is omitted? If this is not supported, please confirm that: Destination Select must remain in SectionOrder for GUI installs even with rootVolumeOnly + domains limited to localSystem; and sidebar entries for unused built-in sections cannot be removed. Environment Product archive via productbuild --distribution --plugins macOS 13+ (tested on current macOS / Apple silicon) Custom plugin is universal (arm64 + x86_64) Silent / MDM path (installer -pkg … -target /) is acceptable for automation; this request is GUI Installer.app only.
0
0
129
2w
Apple Watch Missing Developer Mode Option
I have an iPhone 14 running iOS 16.1 and my series 5 watch running watchOS 9.1. I was able to turn on Developer Mode on the phone by going to Settings--> Privacy & Security --> Developer Mode. On the watch however (I'm doing this directly on the watch and not on the watch app on the phone) once I'm in Privacy & Security, there is no option to select Developer Mode. How do I get my watch in Developer Mode in order to get a successful build in xCode?
45
9
32k
2w
Adding more API explainations
This is inspired by a thread I made on a different subject. The point is a response from an Apple person that I've read before. Things that have no documentation header at all require you to go to these forums to get the hidden knowledge. Is it feasible to fill in the blank items? Do you know what else gets stuck if there's no documentation? Agents. And they can't join the forums and ask about out-of-band knowledge.
0
0
272
2w
OSX27 SDK on macOS 26; TAPI file malformed/unknown architecture
Overnight I ran into a problem considering the C/C++ toolchain on macOS 26.6.2 and M1-series Mac which I'll be describing in this post. I have the Command Line Tools installed (through xcode-select --install) and xcode-select -p shows /Library/Developer/CommandLineTools. clang -v reports Apple clang version 21.0.0 (clang-2100.1.1.101). ld -v reports: @(#)PROGRAM:ld PROJECT:ld-1267 BUILD 16:38:58 Jun 8 2026 configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em armv8m.main armv8.1m.main will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em LTO support using: LLVM version 21.0.0 (static support for 30, runtime is 30) TAPI support using: Apple TAPI version 21.0.0 (tapi-2100.0.2.6) By compiling and linking a basic C or C++ executable, there is an error reported by Clang / ld: ld: tapi error: malformed file /Library/Developer/CommandLineTools/SDKs/MacOSX27.0.sdk/usr/lib/libSystem.B.tbd:4:20: error: unknown architecture ... arm64e.x1-macos ... ... rest omitted Notice how SDKs/MacOSX27.0.sdk exists in the installation even though macOS 26 is the host system. I have attempted to remove /Library/Developer/CommandLineTools and performing xcode-select --install again, but the MACOSX27 SDK is still present. The linker likely reports the error due to a mismatch between itself and the SDK/TAPI declaration, or the TAPI declaration and the host system. The Command Line Tools were not updated manually prior to receiving this error. It seems like an OTA update took place, as this problem happened overnight. If so, that does sound like an insecure design. My quick fix was to remove the macOS 27 SDK from the system which allows Clang to find the macOS 26 SDK instead: $ cd /Library/Developer/CommandLineTools/SDKs $ ls MacOSX27* MacOSX27.0.sdk MacOSX27.sdk $ sudo rm -rf MacOSX27* This is of course not a permanent solution before updating the host system to macOS 27, and therefore this post. Tags: ld, xcode-select, tapi, malformed file, unknown architecture
5
0
484
2w
Is it possible to remove the 3 1024x1024 app icon pngs from assets catalog for apps with Icon Composer app icons?
I am trying to slim my app as much as possible, as it really has no assets and I'm trying to be as apple native as possible, and it seems like 2.8MB out of my 4.5MB (on disk) app is because of the assets.car containing pre-rendered app icon images, which seems wasteful to bundle into the app I ran assetutil -I Assets.car > assets.json and the output shows: "RenditionName" : "AppIcon1024x1024_UIAppearanceAny_934C06E8-EFEE-45F8-8FF6-8AA1C5A331E2-5653-00000994CD30DD2A.png", "SizeOnDisk" : 1085726 ... "RenditionName" : "AppIcon1024x1024_UIAppearanceDark_61E3B30A-4E8A-4427-89EE-9BE9233265D9-5653-00000994CD6F1916.png", "SizeOnDisk" : 1230822 ... "RenditionName" : "AppIcon1024x1024_ISAppearanceTintable_395EBE2C-F852-46DB-B18D-07F4FD33A361-5653-00000994CDA26BA3.png", "SizeOnDisk" : 494329 I tried just deleting the entire Assets part of the Xcode project and got the same results This seems like something that Apple's OSs should be able to just generate once the app is installed if needed instead of prepackaging in every .app and wasting space if not used. Am I crazy for wanting this? I got my AppIcon.icon down from 15KB to 5KB but having 2.8MB wasted for something that doesn't seem important at all bothers me
8
0
1.2k
2w
EU Cyber Resilience Act: checking Swift package dependencies for actively exploited vulnerabilities
Since 11 September 2026, the EU Cyber Resilience Act requires anyone selling software in the EU - including paid iOS and Mac apps - to report actively exploited vulnerabilities in their products: an early warning within 24 hours, a notification within 72 hours, through ENISA's reporting platform. It also covers app versions already on sale. The practical first question for most of us is "does anything I ship depend on a package with a known exploited vulnerability?" I couldn't find a tool that treats Swift Package Manager as a first-class ecosystem, so I wrote a small open-source one: reads Package.resolved (v1-v3) and Podfile.lock writes a CycloneDX 1.6 SBOM (useful later for the CRA technical documentation) checks each pinned package against OSV, and marks findings as exploited if CISA's KEV list or ENISA's EUVD lists them runs locally, in Xcode Cloud or as a GitHub Action, and only fails the build on exploited issues by default pipx install cra-scan GitHub repo (Apache-2.0, no dependencies) Two things worth knowing: micro and small companies can't be fined for missing the 24-hour early warning (Art. 64), but the 72-hour notification still applies. The rest of the CRA (technical file, support period, CE marking) applies from 11 December 2027, and for most apps it's self-assessment. How are others approaching this? Feedback on missed matches is very welcome, especially for CocoaPods, which the tool can't match yet.
0
0
310
2w
Using SpeechAnalyzer in my Swift Student Challenge submission
Hi there, I’m currently developing an App Playground for the Swift Student Challenge, and a core feature of my playground uses SpeechAnalyzer with SpeechTranscriber from Apple’s Speech framework to transcribe microphone input to text. I understand that SpeechTranscriber performs transcription on-device and does not use the internet. However, from the dev documentation for AssetInventory, it looks like the required language/model assets may first need to be downloaded from Apple’s servers for devices that may not have it installed by default. Since Swift Student Challenge submissions are evaluated offline, I’m unsure how this should be handled. My main questions are: If the device on which my playground is tested does not already have the required SpeechTranscriber asset installed, will transcription fail when the submission is run offline? Is it safe for my submission to depend on SpeechAnalyzer / SpeechTranscriber as a core feature, or should I redesign it to work even if it is unavailable? Thank you!! :)
1
0
189
2w
Can't install macOS 27 beta
I'm stuck. I'm trying to install the beta of macOS 27 (Golden Gate) for testing. I have: Created a new APFS volume Installed a fresh copy of macOS 26.7 Booted new volume, created an account, and logged in using my developer account Followed the instructions for "Installing and using Apple Beta Software" (https://developer.apple.com/support/install-beta/#macos-beta), specifically Opened System Settings > General > Software Updates Clicked on Beta Updates (i) button But the only options it gives me are "Off" and "macOS 26 Developer Betas". There is no place to select "macOS 27 beta" It shows my developer account in the beta updates window. I've confirmed that my account is up-to-date. There's obviously some step I'm missing, but I don't know what.
0
0
375
3w
Would it be possible in the future for Apple to allow Apple IDs associated with the Apple Developer program to opt out of receiving developer versions on their devices?
Hi everyone. I’m just an ordinary user with no programming knowledge—and certainly not a developer. I simply wanted to try out iOS 27 before the final public release. I logged into "Apple Developer" with my Apple ID, and now, it seems I’m stuck receiving developer versions on my device forever. My question is: Is it possible that Apple might soon allow Apple IDs that merely logged in—but never actually became developers—to stop receiving developer versions on their devices? It would be great if that happened. Thanks a lot.
3
0
636
3w
clang broken after upgrade
Hi, After upgrading to macOS 26.7 I can't get clang to run. I get the following error: [main] (base) $ clang --version Error loading required libraries. If there is an ongoing installation please wait for it to complete. Otherwise reinstall. (dlopen(@rpath/libxcodebuildLoader.dylib, 0x0001): Symbol not found: __ZN38pxrInternal_v0_21__aapl__pxrReserved__11TfSingletonINS_15TfDiagnosticMgrEE15_CreateInstanceEv Referenced from: /Applications/Xcode.app/Contents/SystemFrameworks/USDKit.framework/Versions/A/USDKit Expected as weak-def export from some loaded dylib) I have tried removing the command-line tools and reinstalling by doing this: [main] (base) $ sudo rm -rf /Library/Developer/CommandLineTools Password: [main] (base) $ xcode-select --install I have also tried rebooting the computer. thanks for any suggestions,
1
0
230
Sep ’26
Xcode Command Line Tools update not wanted, but persists
I am running Tahoe 26.4.1 on a MacBook Air, M4, 2025. In System Settings, I have an item heading of Software Update Available. Clicking on that brings up "Command Line Tools for Xcode 26.4". The only available choices are to Update Now or Cancel. In the past, I was developing a game, but have quit working on that, and deleted Xcode and Command Line Tools. Wanting the "Command Line Tools ..." line to disappear from System Settings, I called Apple Support, and at their request have followed the steps in "https://developer.apple.com/documentation/xcode/installing-the-command-line-tools" to delete this entry in System Settings, namely the 2 sudo's in that article under the section "Uninstall the command line tools". This did not cause the "Command Line Tools for Xcode 26.4" line in System Settings to disappear (as I was told by Apple support that it would, because I would be deleting the receipt). In Terminal, I did indeed receive a response of "No receipt for 'com.apple.dt.commandlinetools' found at '/'.". I have called developer support, but the individual I spoke with had no useful guidance on how to finish this issue, except to post to the Forum. I would appreciate any guidance on how to delete the "Command Line Tools ..." entry from System Settings.
16
0
1.6k
Sep ’26
Unable to sign in via Apple ID on sign.expo.dev / third-party tools - "Apple's servers are congested" loops indefinitely
I'm trying to generate a development provisioning profile for testing a React Native (Expo) app on my personal iPhone, using sign.expo.dev (which uses Apple ID authentication to provision a device for free/ad-hoc development). Symptom: When signing in with my Apple ID on sign.expo.dev, the page repeatedly shows "Apple's servers are congested. Automatically retrying" and never completes, even after many retries ("Attempt 20+"). This happens consistently over several days, on both iPhone Safari and desktop Chrome/Edge. What I've already verified: Regular sign-in at appleid.apple.com works normally Sign-in at developer.apple.com/account also works normally, with no pending agreements (I already reviewed and accepted the latest Developer Program License Agreement) Apple System Status and Apple Developer System Status both show all services as operating normally The issue persists across multiple devices/browsers and after clearing Safari data Question: Is this a known issue with the Apple ID authentication flow used by third-party provisioning tools (possibly related to the Olympus session/config API)? Is there a known workaround, or an expected resolution timeframe? Any guidance would be appreciated. Thank you.
1
0
331
Sep ’26
Software Update Required" loops/fails when connecting iPhone 12 (iOS 27 RC) to Mac (Tahoe 26.6.2)
Hi everyone, I am encountering an issue where I cannot connect my iPhone 12 to my Mac. Environment:Mac: macOS Tahoe 26.6.2 iPhone: iPhone 12 running iOS 27 RC Problem:When I connect the iPhone to the Mac via USB, a dialog pops up stating, "A software update is required to connect to your iPhone. "I clicked "Install," but the download progress bar gets stuck at "Downloading 1 item...". After a short wait, it fails with the following error message: "Installation failed. Can’t install the software because it is not currently available from the Software Update server. "As a result, the iPhone 12 does not appear in Finder or Xcode.Notes:Internet and Safari connections work normally on both devices. I can log into my ADP account via Safari without issues. In the past, this "Software Update" prompt succeeded smoothly with older iOS updates. Has anyone else experienced this with iPhone12 & iOS 27RC on macOS Tahoe? Any insights or workarounds would be greatly appreciated. Thanks!
0
0
384
Sep ’26
An Apple Library Primer
Apple’s library technology has a long and glorious history, dating all the way back to the origins of Unix. This does, however, mean that it can be a bit confusing to newcomers. This is my attempt to clarify some terminology. If you have any questions or comments about this, start a new thread and tag it with Linker so that I see it. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = "eskimo" + "1" + "@" + "apple.com" An Apple Library Primer Apple’s tools support two related concepts: Platform — This is the platform itself; macOS, iOS, iOS Simulator, and Mac Catalyst are all platforms. Architecture — This is a specific CPU architecture used by a platform. arm64 and x86_64 are both architectures. A given architecture might be used by multiple platforms. The most obvious example of this arm64, which is used by all of the platforms listed above. Code built for one platform will not work on another platform, even if both platforms use the same architecture. Code is usually packaged in either a Mach-O file or a static library. Mach-O is used for executables (MH_EXECUTE), dynamic libraries (MH_DYLIB), bundles (MH_BUNDLE), and object files (MH_OBJECT). These can have a variety of different extensions; the only constant is that .o is always used for a Mach-O containing an object file. Use otool and nm to examine a Mach-O file. Use vtool to quickly determine the platform for which it was built. Use size to get a summary of its size. Use dyld_info to get more details about a dynamic library. IMPORTANT All the tools mentioned here are documented in man pages. For information on how to access that documentation, see Reading UNIX Manual Pages. There’s also a Mach-O man page, with basic information about the file format. Many of these tools have old and new variants, using the -classic suffix or llvm- prefix, respectively. For example, there’s nm-classic and llvm-nm. If you run the original name for the tool, you’ll get either the old or new variant depending on the version of the currently selected tools. To explicitly request the old or new variants, use xcrun. The term Mach-O image refers to a Mach-O that can be loaded and executed without further processing. That includes executables, dynamic libraries, and bundles, but not object files. A dynamic library has the extension .dylib. You may also see this called a shared library. A framework is a bundle structure with the .framework extension that has both compile-time and run-time roles: At compile time, the framework combines the library’s headers and its stub library (stub libraries are explained below). At run time, the framework combines the library’s code, as a Mach-O dynamic library, and its associated resources. The exact structure of a framework varies by platform. For the details, see Placing Content in a Bundle. macOS supports both frameworks and standalone dynamic libraries. Other Apple platforms support frameworks but not standalone dynamic libraries. Historically these two roles were combined, that is, the framework included the headers, the dynamic library, and its resources. These days Apple ships different frameworks for each role. That is, the macOS SDK includes the compile-time framework and macOS itself includes the run-time one. Most third-party frameworks continue to combine these roles. A static library is an archive of one or more object files. It has the extension .a. Use ar, libtool, and ranlib to inspect and manipulate these archives. The static linker, or just the linker, runs at build time. It combines various inputs into a single output. Typically these inputs are object files, static libraries, dynamic libraries, and various configuration items. The output is most commonly a Mach-O image, although it’s also possible to output an object file. The linker may also output metadata, such as a link map (see Using a Link Map to Track Down a Symbol’s Origin). The linker has seen three major implementations: ld — This dates from the dawn of Mac OS X. ld64 — This was a rewrite started in the 2005 timeframe. Eventually it replaced ld completely. If you type ld, you get ld64. ld_prime — This was introduced with Xcode 15. Again, this isn’t a separate tool. Rather, ld supported the -ld_classic and -ld_new options to select a specific implementation. Note During the Xcode 15 beta cycle these options were named -ld64 and -ld_prime. I continue to use those original names because the definition of new changes over time (some of us still think of ld64 as the new linker ;–). Note Xcode 27 beta removed the ld64 implementation. The ld tool now contains just the ld_prime implementation. The dynamic linker loads Mach-O images at runtime. Its path is /usr/lib/dyld, so it’s often referred to as dyld, dyld, or DYLD. Personally I pronounced that dee-lid, but some folks say di-lid and others say dee-why-el-dee. IMPORTANT Third-party executables must use the standard dynamic linker. Other Unix-y platforms support the notion of a statically linked executable, one that makes system calls directly. This is not supported on Apple platforms. Apple platforms provide binary compatibility via system dynamic libraries and frameworks, not at the system call level. Note Apple platforms have vestigial support for custom dynamic linkers (your executable tells the system which dynamic linker to use via the LC_LOAD_DYLINKER load command). This facility originated on macOS’s ancestor platform and has never been a supported option on any Apple platform. The dynamic linker has seen 4 major revisions. See WWDC 2017 Session 413 (referenced below) for a discussion of versions 1 through 3. Version 4 is basically a merging of versions 2 and 3. Version 3 introduced the concept of a launch closure, which is an important optimisation. The dyld man page is chock-full of useful info, including a discussion of how it finds images at runtime. The dynamic linker supports the standard Unix dynamic linking API: dlopen, dlsym, dladdr, and dlclose. Each of these has a man page. One gotcha here is that dlclose doesn’t necessarily remove the image from memory. The dlclose man page lists some of the reasons fro this, but that list is not comprehensive. Every dynamic library has an install name, which is how the dynamic linker identifies the library. Historically that was the path where you installed the library. That’s still true for most system libraries, but nowadays a third-party library should use an rpath-relative install name. For more about this, see Dynamic Library Identification. Mach-O images are position independent, that is, they can be loaded at any location within the process’s address space. Historically, Mach-O supported the concept of position-dependent images, ones that could only be loaded at a specific address. While it may still be possible to create such an image, it’s no longer a good life choice. Mach-O images have a default load address, also known as the base address. For modern position-independent images this is 0 for library images and 4 GiB for executables (leaving the bottom 32 bits of the process’s address space unmapped). When the dynamic linker loads an image, it chooses an address for the image and then rebases the image to that address. If you take that address and subtract the image’s load address, you get a value known as the slide. Xcode 15 introduced the concept of a mergeable library. This a dynamic library with extra metadata that allows the linker to embed it into the output Mach-O image, much like a static library. Mergeable libraries have many benefits. For all the backstory, see WWDC 2023 Session 10268 Meet mergeable libraries. For instructions on how to set this up, see Configuring your project to use mergeable libraries. If you put a mergeable library into a framework structure you get a mergeable framework. Xcode 15 also introduced the concept of a static framework. This is a framework structure where the framework’s dynamic library is replaced by a static library. Note It’s not clear to me whether this offers any benefit over creating a mergeable framework. Earlier versions of Xcode did not have proper static framework support. That didn’t stop folks trying to use them, which caused all sorts of weird build problems. A universal binary is a file that contains multiple architectures for the same platform. Universal binaries always use the universal binary format. Use the file command to learn what architectures are within a universal binary. Use the lipo command to manipulate universal binaries. A universal binary’s architectures are either all in Mach-O format or all in the static library archive format. The latter is called a universal static library. A universal binary has the same extension as its non-universal equivalent. That means a .a file might be a static library or a universal static library. Most tools work on a single architecture within a universal binary. They default to the architecture of the current machine. To override this, pass the architecture in using a command-line option, typically -arch or --arch. An XCFramework is a single document package that includes libraries for any combination of platforms and architectures. It has the extension .xcframework. An XCFramework holds either a framework, a dynamic library, or a static library. All the elements must be the same type. Use xcodebuild to create an XCFramework. For specific instructions, see Xcode Help > Distribute binary frameworks > Create an XCFramework. Historically there was no need to code sign libraries in SDKs. If you shipped an SDK to another developer, they were responsible for re-signing all the code as part of their distribution process. Xcode 15 changes this. You should sign your SDK so that a developer using it can verify this dependency. For more details, see WWDC 2023 Session 10061 Verify app dependencies with digital signatures and Verifying the origin of your XCFrameworks. A stub library is a compact description of the contents of a dynamic library. It has the extension .tbd, which stands for text-based description (TBD). Apple’s SDKs include stub libraries to minimise their size; for the backstory, read this post. Use the tapi tool to create and manipulate stub libraries. In this context TAPI stands for a text-based API, an alternative name for TBD. Oh, and on the subject of tapi, I’d be remiss if I didn’t mention tapi-analyze! Stub libraries currently use YAML format, a fact that’s relevant when you try to interpret linker errors. If you’re curious about the format, read the tapi-tbdv4 man page. There’s also a JSON variant documented in the tapi-tbdv5 man page. Note Back in the day stub libraries used to be Mach-O files with all the code removed (MH_DYLIB_STUB). This format has long been deprecated in favour of TBD. Historically, the system maintained a dynamic linker shared cache, built at runtime from its working set of dynamic libraries. In macOS 11 and later this cache is included in the OS itself. Libraries in the cache are no longer present in their original locations on disk: % ls -lh /usr/lib/libSystem.B.dylib ls: /usr/lib/libSystem.B.dylib: No such file or directory Apple APIs, most notably dlopen, understand this and do the right thing if you supply the path of a library that moved into the cache. That’s true for some, but not all, command-line tools, for example: % dyld_info -exports /usr/lib/libSystem.B.dylib /usr/lib/libSystem.B.dylib [arm64e]: -exports: offset symbol … 0x5B827FE8 _mach_init_routine % nm /usr/lib/libSystem.B.dylib …/nm: error: /usr/lib/libSystem.B.dylib: No such file or directory When the linker creates a Mach-O image, it adds a bunch of helpful information to that image, including: The target platform The deployment target, that is, the minimum supported version of that platform Information about the tools used to build the image, most notably, the SDK version A build UUID For more information about the build UUID, see TN3178 Checking for and resolving build UUID problems. To dump the other information, run vtool. In some cases the OS uses the SDK version of the main executable to determine whether to enable new behaviour or retain old behaviour for compatibility purposes. You might see this referred to as compiled against SDK X. I typically refer to this as a linked-on-or-later check. Apple silicon Macs require that all code be signed. To make things easier for open source projects, the linker adds an ad hoc code signature to Apple silicon images. For more about this linker signing feature, see the discussion of the -adhoc_codesign and -no_adhoc_codesign options in the ld man page. Apple tools support the concept of autolinking. When your code uses a symbol from a module, the compiler inserts a reference (using the LC_LINKER_OPTION load command) to that module into the resulting object file (.o). When you link with that object file, the linker adds the referenced module to the list of modules that it searches when resolving symbols. Autolinking is obviously helpful but it can also cause problems, especially with cross-platform code. For information on how to enable and disable it, see the Build settings reference. Mach-O uses a two-level namespace. When a Mach-O image imports a symbol, it references the symbol name and the library where it expects to find that symbol. This improves both performance and reliability but it precludes certain techniques that might work on other platforms. For example, you can’t define a function called printf and expect it to ‘see’ calls from other dynamic libraries because those libraries import the version of printf from libSystem. To help folks who rely on techniques like this, macOS supports a flat namespace compatibility mode. This has numerous sharp edges — for an example, see the posts on this thread — and it’s best to avoid it where you can. If you’re enabling the flat namespace as part of a developer tool, search the ’net for dyld interpose to learn about an alternative technique. WARNING Dynamic linker interposing is not documented as API. While it’s a useful technique for developer tools, do not use it in products you ship to end users. Apple platforms use DWARF. When you compile a file, the compiler puts the debug info into the resulting object file. When you link a set of object files into a executable, dynamic library, or bundle for distribution, the linker does not include this debug info. Rather, debug info is stored in a separate debug symbols document package. This has the extension .dSYM and is created using dsymutil. Use symbols to learn about the symbols in a file. Use dwarfdump to get detailed information about DWARF debug info. Use atos to map an address to its corresponding symbol name. Different languages use different name mangling schemes: C, and all later languages, add a leading underscore (_) to distinguish their symbols from assembly language symbols. C++ uses a complex name mangling scheme. Use the c++filt tool to undo this mangling. Likewise, for Swift. Use swift demangle to undo this mangling. For a bunch more info about symbols in Mach-O, see Understanding Mach-O Symbols. This includes a discussion of weak references and weak definition. If your code is referencing a symbol unexpectedly, see Determining Why a Symbol is Referenced. To remove symbols from a Mach-O file, run strip. To hide symbols, run nmedit. It’s common for linkers to divide an object file into sections. You might find data in the data section and code in the text section (text is an old Unix term for code). Mach-O uses segments and sections. For example, there is a text segment (__TEXT) and within that various sections for code (__TEXT > __text), constant C strings (__TEXT > __cstring), and so on. Over the years there have been some really good talks about linking and libraries at WWDC, including: WWDC 2023 Session 10268 Meet mergeable libraries WWDC 2022 Session 110362 Link fast: Improve build and launch times WWDC 2022 Session 110370 Debug Swift debugging with LLDB WWDC 2021 Session 10211 Symbolication: Beyond the basics WWDC 2019 Session 416 Binary Frameworks in Swift — Despite the name, this covers XCFrameworks in depth. WWDC 2018 Session 415 Behind the Scenes of the Xcode Build Process WWDC 2017 Session 413 App Startup Time: Past, Present, and Future WWDC 2016 Session 406 Optimizing App Startup Time Note The older talks are no longer available from Apple, but you may be able to find transcripts out there on the ’net. Historically Apple published a document, Mac OS X ABI Mach-O File Format Reference, or some variant thereof, that acted as the definitive reference to the Mach-O file format. This document is no longer available from Apple. If you’re doing serious work with Mach-O, I recommend that you find an old copy. It’s definitely out of date, but there’s no better place to get a high-level introduction to the concepts. The Mach-O Wikipedia page has a link to an archived version of the document. For the most up-to-date information about Mach-O, see the declarations and doc comments in <mach-o/loader.h>. Revision History 2026-09-10 Added information about linker signing. 2026-09-02 Added information about dlopen and friends. 2026-07-06 Added the term launch closure. 2026-07-02 Added a note about fate of ld64. 2025-08-04 Added a link to Determining Why a Symbol is Referenced. 2025-06-29 Added information about autolinking. 2025-05-21 Added a note about the legacy Mach-O stub library format (MH_DYLIB_STUB). 2025-04-30 Added a specific reference to the man pages for the TBD format. 2025-03-01 Added a link to Understanding Mach-O Symbols. Added a link to TN3178 Checking for and resolving build UUID problems. Added a summary of the information available via vtool. Discussed linked-on-or-later checks. Explained how Mach-O uses segments and sections. Explained the old (-classic) and new (llvm-) tool variants. Referenced the Mach-O man page. Added basic info about the strip and nmedit tools. 2025-02-17 Expanded the discussion of dynamic library identification. 2024-10-07 Added some basic information about the dynamic linker shared cache. 2024-07-26 Clarified the description of the expected load address for Mach-O images. 2024-07-23 Added a discussion of position-independent images and the image slide. 2024-05-08 Added links to the demangling tools. 2024-04-30 Clarified the requirement to use the standard dynamic linker. 2024-03-02 Updated the discussion of static frameworks to account for Xcode 15 changes. Removed the link to WWDC 2018 Session 415 because it no longer works )-: 2024-03-01 Added the WWDC 2023 session to the list of sessions to make it easier to find. Added a reference to Using a Link Map to Track Down a Symbol’s Origin. Made other minor editorial changes. 2023-09-20 Added a link to Dynamic Library Identification. Updated the names for the static linker implementations (-ld_prime is no more!). Removed the beta epithet from Xcode 15. 2023-06-13 Defined the term Mach-O image. Added sections for both the static and dynamic linkers. Described the two big new features in Xcode 15: mergeable libraries and dependency verification. 2023-06-01 Add a reference to tapi-analyze. 2023-05-29 Added a discussion of the two-level namespace. 2023-04-27 Added a mention of the size tool. 2023-01-23 Explained the compile-time and run-time roles of a framework. Made other minor editorial changes. 2022-11-17 Added an explanation of TAPI. 2022-10-12 Added links to Mach-O documentation. 2022-09-29 Added info about .dSYM files. Added a few more links to WWDC sessions. 2022-09-21 First posted.
0
0
18k
Sep ’26
Personal to Organization Migration Pending
How long does this process usually take to conclude. I have being sitting in a pedning sate for some days, no response to support tickets plus I have this notification and cannot take action: "Apple Developer Program License Agreement Updated The Apple Developer Program License Agreement has been updated and needs to be reviewed. In order to update your existing apps and submit new apps, the Account Holder must review and accept the updated agreement by signing in to their". Please help or advise.
Replies
0
Boosts
0
Views
8
Activity
28m
Transporter upload fails with ITMS-90237: Invalid signature when publishing .NET MAUI Mac Catalyst package
Hello everyone, I’m running into a code signing validation failure when delivering a .NET MAUI Mac Catalyst app to App Store Connect via Transporter. I’d appreciate any help in figuring out what is misconfigured. Environment: .NET 9 MAUI (net9.0-maccatalyst) Build host: Mac Delivery tool: Transporter (App Store Connect) Issue: The packaging process itself appears to succeed and produces a .pkg file, but Transporter fails during validation with the following error: text The product archive package's signature is invalid. Ensure that it is signed with your "3rd Party Mac Developer Installer" certificate. (90237) Publish command: I’m publishing and signing from the command line, following Microsoft’s documentation for publishing .NET MAUI Mac Catalyst apps to the Mac App Store. bash dotnet publish -f net9.0-maccatalyst -c Release -p:EnableCodeSigning=true -p:EnablePackageSigning=true -p:CodesignKey="Apple Distribution: Ping Zhang (*********D)" -p:CodesignProvision="AideApp_MacCatalyst" -p:CodesignEntitlements="Platforms/MacCatalyst/Entitlements.plist" -p:PackageSigningKey="3rd Party Mac Developer Installer: Ping Zhang (Y2K7Q6HU4D)" -p:CreatePackage=true What I’ve checked so far: The 3rd Party Mac Developer Installer certificate is present in my keychain. The certificate has not expired. The certificate matches the correct team and App ID. The generated .pkg is what I’m uploading through Transporter. Questions: Is there anything wrong with the PackageSigningKey or CodesignKey parameters in the command above? Does .NET MAUI actually apply the 3rd Party Mac Developer Installer signature to the .pkg when EnablePackageSigning=true and CreatePackage=true are used? Should the CodesignKey be an Apple Distribution certificate, or should it also be a 3rd Party Mac Developer Application certificate for Mac App Store distribution? Are there any additional steps required to ensure the .pkg is signed correctly before uploading with Transporter? How can I verify whether the .pkg was signed with the correct installer certificate? For example, would pkgutil --check-signature be sufficient? Any guidance would be greatly appreciated. Thank you!
Replies
1
Boosts
0
Views
349
Activity
1d
Feature Request - MapKit JS: Add "above roads or labels" OverlayLevel to TileOverlay
The MapKit Framework for Swift lets a developer control where a raster/tile overlay is drawn relative to other map content using MKOverlayLevel (.aboveRoads | .aboveLabels) passed to MKMapView.addOverlay(). MapKit JS has no equivalent. There is no level parameter to say "draw this above roads" or "draw this above labels." Please add an overlay-level option to MapKit JS 1️⃣ MapKit JS with TileOverlay Opacity=1 An opacity slider is implemented to help the map viewer to orient themselves with the MapKit JS Hybrid style with a sample raster TileOverlay. 2️⃣ MapKit JS with opacity via slider 3️⃣ MapKit for Swift demonstrates the options for above roads or labels
Replies
1
Boosts
0
Views
175
Activity
1w
Python 3.9.x CVE multiple vulnerabilities
Python 3.10 and 3.11 Multiple Vulnerabilities (CVE-2022-4303,CVE-2023-0286) Python 3.10.x Buffer Overflow Vulnerability (CVE-2022-37454) Python 3.11.x Exposure of Sensitive Information Vulnerability (CVE-2023-40217) Python 3.12 and 3.11.10 Input Validation Flaw Vulnerability (CVE-2023-27043) Python 3.13.x and 3.14.x Multiple Vulnerabilities (CVE-2026-2297,CVE-2026-3644,CVE-2026-4224) Python 3.11.x Denial of Service (DoS) Vulnerability (CVE-2020-10735) Python Denial of Service (DoS) Vulnerability (CVE-2023-52425) Python 3.10 and 3.11 URL Blocklist Bypass Vulnerability (CVE-2023-24329) Python 3.10.x to 3.14.x Multiple Vulnerabilities (CVE-2024-12718,CVE-2025-4138,CVE-2025-4330,CVE-2025-4517) Python 3.11.x Denial of Service (DoS) Vulnerability (CVE-2020-10735) Python 3.10 and 3.11 Multiple Vulnerabilities (CVE-2022-4303,CVE-2023-0286) Python 3.10.x Buffer Overflow Vulnerability (CVE-2022-37454) Python 3.13.x and 3.14.x Multiple Vulnerabilities (CVE-2026-2297,CVE-2026-3644,CVE-2026-4224) Python Denial of Service (DoS) Vulnerability (CVE-2023-52425) Python 3.10 and 3.11 URL Blocklist Bypass Vulnerability (CVE-2023-24329) Python 3.10.x to 3.14.x Multiple Vulnerabilities (CVE-2024-12718,CVE-2025-4138,CVE-2025-4330,CVE-2025-4517) Python 3.11.x Exposure of Sensitive Information Vulnerability (CVE-2023-40217) Python 3.12 and 3.11.10 Input Validation Flaw Vulnerability (CVE-2023-27043)
Replies
2
Boosts
0
Views
371
Activity
1w
macOS Installer.app: how to omit Destination Select and Installation Type from the GUI wizard (not just skip them)
We ship a signed, notarized product archive (.pkg) built with pkgbuild + productbuild and a custom InstallerPlugins pane (ChoosePlugin.bundle). The payload must always install to the system volume (/). There is no supported alternate directory. customize="never" is set because there is a single component package; the user must not pick packages either. What we already do In Distribution.xml: Introduction ChoosePlugin.bundle Target Install PackageSelection is omitted. customize="never" is set. Observed behavior (current macOS) Destination Select (Target) If Target is kept in SectionOrder, the pane still appears in the wizard (often with a read-only / single-volume UI). That step is unused product-wise: the user cannot choose another location. If Target is removed from SectionOrder, Installer.app hangs on the Installation pane at “Preparing for installation…” (pagecontroller / no selected volume). So Target cannot be dropped if we still use the GUI Installer. Installation Type (PackageSelection) The pane does not run (correct). The sidebar still lists “Installation Type” (and often “Summary”) as grayed items. There is no documented way to hide those labels. There is no public InstallerPlugins API to auto-advance the native Destination Select pane (gotoNextPane only applies to our custom section). Question Is there a supported way (Distribution XML, InstallerSections.plist, productbuild, or otherwise) to: Not show Destination Select at all in Installer.app, while still installing to / and not hanging on Installation; and Not list Installation Type (and unused Summary) in the left-hand wizard list, when customize="never" and PackageSelection is omitted? If this is not supported, please confirm that: Destination Select must remain in SectionOrder for GUI installs even with rootVolumeOnly + domains limited to localSystem; and sidebar entries for unused built-in sections cannot be removed. Environment Product archive via productbuild --distribution --plugins macOS 13+ (tested on current macOS / Apple silicon) Custom plugin is universal (arm64 + x86_64) Silent / MDM path (installer -pkg … -target /) is acceptable for automation; this request is GUI Installer.app only.
Replies
0
Boosts
0
Views
129
Activity
2w
Apple Watch Missing Developer Mode Option
I have an iPhone 14 running iOS 16.1 and my series 5 watch running watchOS 9.1. I was able to turn on Developer Mode on the phone by going to Settings--> Privacy & Security --> Developer Mode. On the watch however (I'm doing this directly on the watch and not on the watch app on the phone) once I'm in Privacy & Security, there is no option to select Developer Mode. How do I get my watch in Developer Mode in order to get a successful build in xCode?
Replies
45
Boosts
9
Views
32k
Activity
2w
Adding more API explainations
This is inspired by a thread I made on a different subject. The point is a response from an Apple person that I've read before. Things that have no documentation header at all require you to go to these forums to get the hidden knowledge. Is it feasible to fill in the blank items? Do you know what else gets stuck if there's no documentation? Agents. And they can't join the forums and ask about out-of-band knowledge.
Replies
0
Boosts
0
Views
272
Activity
2w
OSX27 SDK on macOS 26; TAPI file malformed/unknown architecture
Overnight I ran into a problem considering the C/C++ toolchain on macOS 26.6.2 and M1-series Mac which I'll be describing in this post. I have the Command Line Tools installed (through xcode-select --install) and xcode-select -p shows /Library/Developer/CommandLineTools. clang -v reports Apple clang version 21.0.0 (clang-2100.1.1.101). ld -v reports: @(#)PROGRAM:ld PROJECT:ld-1267 BUILD 16:38:58 Jun 8 2026 configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em armv8m.main armv8.1m.main will use ld-classic for: armv6 armv7 armv7s i386 armv6m armv7k armv7m armv7em LTO support using: LLVM version 21.0.0 (static support for 30, runtime is 30) TAPI support using: Apple TAPI version 21.0.0 (tapi-2100.0.2.6) By compiling and linking a basic C or C++ executable, there is an error reported by Clang / ld: ld: tapi error: malformed file /Library/Developer/CommandLineTools/SDKs/MacOSX27.0.sdk/usr/lib/libSystem.B.tbd:4:20: error: unknown architecture ... arm64e.x1-macos ... ... rest omitted Notice how SDKs/MacOSX27.0.sdk exists in the installation even though macOS 26 is the host system. I have attempted to remove /Library/Developer/CommandLineTools and performing xcode-select --install again, but the MACOSX27 SDK is still present. The linker likely reports the error due to a mismatch between itself and the SDK/TAPI declaration, or the TAPI declaration and the host system. The Command Line Tools were not updated manually prior to receiving this error. It seems like an OTA update took place, as this problem happened overnight. If so, that does sound like an insecure design. My quick fix was to remove the macOS 27 SDK from the system which allows Clang to find the macOS 26 SDK instead: $ cd /Library/Developer/CommandLineTools/SDKs $ ls MacOSX27* MacOSX27.0.sdk MacOSX27.sdk $ sudo rm -rf MacOSX27* This is of course not a permanent solution before updating the host system to macOS 27, and therefore this post. Tags: ld, xcode-select, tapi, malformed file, unknown architecture
Replies
5
Boosts
0
Views
484
Activity
2w
Is it possible to remove the 3 1024x1024 app icon pngs from assets catalog for apps with Icon Composer app icons?
I am trying to slim my app as much as possible, as it really has no assets and I'm trying to be as apple native as possible, and it seems like 2.8MB out of my 4.5MB (on disk) app is because of the assets.car containing pre-rendered app icon images, which seems wasteful to bundle into the app I ran assetutil -I Assets.car > assets.json and the output shows: "RenditionName" : "AppIcon1024x1024_UIAppearanceAny_934C06E8-EFEE-45F8-8FF6-8AA1C5A331E2-5653-00000994CD30DD2A.png", "SizeOnDisk" : 1085726 ... "RenditionName" : "AppIcon1024x1024_UIAppearanceDark_61E3B30A-4E8A-4427-89EE-9BE9233265D9-5653-00000994CD6F1916.png", "SizeOnDisk" : 1230822 ... "RenditionName" : "AppIcon1024x1024_ISAppearanceTintable_395EBE2C-F852-46DB-B18D-07F4FD33A361-5653-00000994CDA26BA3.png", "SizeOnDisk" : 494329 I tried just deleting the entire Assets part of the Xcode project and got the same results This seems like something that Apple's OSs should be able to just generate once the app is installed if needed instead of prepackaging in every .app and wasting space if not used. Am I crazy for wanting this? I got my AppIcon.icon down from 15KB to 5KB but having 2.8MB wasted for something that doesn't seem important at all bothers me
Replies
8
Boosts
0
Views
1.2k
Activity
2w
EU Cyber Resilience Act: checking Swift package dependencies for actively exploited vulnerabilities
Since 11 September 2026, the EU Cyber Resilience Act requires anyone selling software in the EU - including paid iOS and Mac apps - to report actively exploited vulnerabilities in their products: an early warning within 24 hours, a notification within 72 hours, through ENISA's reporting platform. It also covers app versions already on sale. The practical first question for most of us is "does anything I ship depend on a package with a known exploited vulnerability?" I couldn't find a tool that treats Swift Package Manager as a first-class ecosystem, so I wrote a small open-source one: reads Package.resolved (v1-v3) and Podfile.lock writes a CycloneDX 1.6 SBOM (useful later for the CRA technical documentation) checks each pinned package against OSV, and marks findings as exploited if CISA's KEV list or ENISA's EUVD lists them runs locally, in Xcode Cloud or as a GitHub Action, and only fails the build on exploited issues by default pipx install cra-scan GitHub repo (Apache-2.0, no dependencies) Two things worth knowing: micro and small companies can't be fined for missing the 24-hour early warning (Art. 64), but the 72-hour notification still applies. The rest of the CRA (technical file, support period, CE marking) applies from 11 December 2027, and for most apps it's self-assessment. How are others approaching this? Feedback on missed matches is very welcome, especially for CocoaPods, which the tool can't match yet.
Replies
0
Boosts
0
Views
310
Activity
2w
Using SpeechAnalyzer in my Swift Student Challenge submission
Hi there, I’m currently developing an App Playground for the Swift Student Challenge, and a core feature of my playground uses SpeechAnalyzer with SpeechTranscriber from Apple’s Speech framework to transcribe microphone input to text. I understand that SpeechTranscriber performs transcription on-device and does not use the internet. However, from the dev documentation for AssetInventory, it looks like the required language/model assets may first need to be downloaded from Apple’s servers for devices that may not have it installed by default. Since Swift Student Challenge submissions are evaluated offline, I’m unsure how this should be handled. My main questions are: If the device on which my playground is tested does not already have the required SpeechTranscriber asset installed, will transcription fail when the submission is run offline? Is it safe for my submission to depend on SpeechAnalyzer / SpeechTranscriber as a core feature, or should I redesign it to work even if it is unavailable? Thank you!! :)
Replies
1
Boosts
0
Views
189
Activity
2w
Can't install macOS 27 beta
I'm stuck. I'm trying to install the beta of macOS 27 (Golden Gate) for testing. I have: Created a new APFS volume Installed a fresh copy of macOS 26.7 Booted new volume, created an account, and logged in using my developer account Followed the instructions for "Installing and using Apple Beta Software" (https://developer.apple.com/support/install-beta/#macos-beta), specifically Opened System Settings > General > Software Updates Clicked on Beta Updates (i) button But the only options it gives me are "Off" and "macOS 26 Developer Betas". There is no place to select "macOS 27 beta" It shows my developer account in the beta updates window. I've confirmed that my account is up-to-date. There's obviously some step I'm missing, but I don't know what.
Replies
0
Boosts
0
Views
375
Activity
3w
Would it be possible in the future for Apple to allow Apple IDs associated with the Apple Developer program to opt out of receiving developer versions on their devices?
Hi everyone. I’m just an ordinary user with no programming knowledge—and certainly not a developer. I simply wanted to try out iOS 27 before the final public release. I logged into "Apple Developer" with my Apple ID, and now, it seems I’m stuck receiving developer versions on my device forever. My question is: Is it possible that Apple might soon allow Apple IDs that merely logged in—but never actually became developers—to stop receiving developer versions on their devices? It would be great if that happened. Thanks a lot.
Replies
3
Boosts
0
Views
636
Activity
3w
clang broken after upgrade
Hi, After upgrading to macOS 26.7 I can't get clang to run. I get the following error: [main] (base) $ clang --version Error loading required libraries. If there is an ongoing installation please wait for it to complete. Otherwise reinstall. (dlopen(@rpath/libxcodebuildLoader.dylib, 0x0001): Symbol not found: __ZN38pxrInternal_v0_21__aapl__pxrReserved__11TfSingletonINS_15TfDiagnosticMgrEE15_CreateInstanceEv Referenced from: /Applications/Xcode.app/Contents/SystemFrameworks/USDKit.framework/Versions/A/USDKit Expected as weak-def export from some loaded dylib) I have tried removing the command-line tools and reinstalling by doing this: [main] (base) $ sudo rm -rf /Library/Developer/CommandLineTools Password: [main] (base) $ xcode-select --install I have also tried rebooting the computer. thanks for any suggestions,
Replies
1
Boosts
0
Views
230
Activity
Sep ’26
Xcode Command Line Tools update not wanted, but persists
I am running Tahoe 26.4.1 on a MacBook Air, M4, 2025. In System Settings, I have an item heading of Software Update Available. Clicking on that brings up "Command Line Tools for Xcode 26.4". The only available choices are to Update Now or Cancel. In the past, I was developing a game, but have quit working on that, and deleted Xcode and Command Line Tools. Wanting the "Command Line Tools ..." line to disappear from System Settings, I called Apple Support, and at their request have followed the steps in "https://developer.apple.com/documentation/xcode/installing-the-command-line-tools" to delete this entry in System Settings, namely the 2 sudo's in that article under the section "Uninstall the command line tools". This did not cause the "Command Line Tools for Xcode 26.4" line in System Settings to disappear (as I was told by Apple support that it would, because I would be deleting the receipt). In Terminal, I did indeed receive a response of "No receipt for 'com.apple.dt.commandlinetools' found at '/'.". I have called developer support, but the individual I spoke with had no useful guidance on how to finish this issue, except to post to the Forum. I would appreciate any guidance on how to delete the "Command Line Tools ..." entry from System Settings.
Replies
16
Boosts
0
Views
1.6k
Activity
Sep ’26
Unable to sign in via Apple ID on sign.expo.dev / third-party tools - "Apple's servers are congested" loops indefinitely
I'm trying to generate a development provisioning profile for testing a React Native (Expo) app on my personal iPhone, using sign.expo.dev (which uses Apple ID authentication to provision a device for free/ad-hoc development). Symptom: When signing in with my Apple ID on sign.expo.dev, the page repeatedly shows "Apple's servers are congested. Automatically retrying" and never completes, even after many retries ("Attempt 20+"). This happens consistently over several days, on both iPhone Safari and desktop Chrome/Edge. What I've already verified: Regular sign-in at appleid.apple.com works normally Sign-in at developer.apple.com/account also works normally, with no pending agreements (I already reviewed and accepted the latest Developer Program License Agreement) Apple System Status and Apple Developer System Status both show all services as operating normally The issue persists across multiple devices/browsers and after clearing Safari data Question: Is this a known issue with the Apple ID authentication flow used by third-party provisioning tools (possibly related to the Olympus session/config API)? Is there a known workaround, or an expected resolution timeframe? Any guidance would be appreciated. Thank you.
Replies
1
Boosts
0
Views
331
Activity
Sep ’26
Software Update Required" loops/fails when connecting iPhone 12 (iOS 27 RC) to Mac (Tahoe 26.6.2)
Hi everyone, I am encountering an issue where I cannot connect my iPhone 12 to my Mac. Environment:Mac: macOS Tahoe 26.6.2 iPhone: iPhone 12 running iOS 27 RC Problem:When I connect the iPhone to the Mac via USB, a dialog pops up stating, "A software update is required to connect to your iPhone. "I clicked "Install," but the download progress bar gets stuck at "Downloading 1 item...". After a short wait, it fails with the following error message: "Installation failed. Can’t install the software because it is not currently available from the Software Update server. "As a result, the iPhone 12 does not appear in Finder or Xcode.Notes:Internet and Safari connections work normally on both devices. I can log into my ADP account via Safari without issues. In the past, this "Software Update" prompt succeeded smoothly with older iOS updates. Has anyone else experienced this with iPhone12 & iOS 27RC on macOS Tahoe? Any insights or workarounds would be greatly appreciated. Thanks!
Replies
0
Boosts
0
Views
384
Activity
Sep ’26
An Apple Library Primer
Apple’s library technology has a long and glorious history, dating all the way back to the origins of Unix. This does, however, mean that it can be a bit confusing to newcomers. This is my attempt to clarify some terminology. If you have any questions or comments about this, start a new thread and tag it with Linker so that I see it. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = "eskimo" + "1" + "@" + "apple.com" An Apple Library Primer Apple’s tools support two related concepts: Platform — This is the platform itself; macOS, iOS, iOS Simulator, and Mac Catalyst are all platforms. Architecture — This is a specific CPU architecture used by a platform. arm64 and x86_64 are both architectures. A given architecture might be used by multiple platforms. The most obvious example of this arm64, which is used by all of the platforms listed above. Code built for one platform will not work on another platform, even if both platforms use the same architecture. Code is usually packaged in either a Mach-O file or a static library. Mach-O is used for executables (MH_EXECUTE), dynamic libraries (MH_DYLIB), bundles (MH_BUNDLE), and object files (MH_OBJECT). These can have a variety of different extensions; the only constant is that .o is always used for a Mach-O containing an object file. Use otool and nm to examine a Mach-O file. Use vtool to quickly determine the platform for which it was built. Use size to get a summary of its size. Use dyld_info to get more details about a dynamic library. IMPORTANT All the tools mentioned here are documented in man pages. For information on how to access that documentation, see Reading UNIX Manual Pages. There’s also a Mach-O man page, with basic information about the file format. Many of these tools have old and new variants, using the -classic suffix or llvm- prefix, respectively. For example, there’s nm-classic and llvm-nm. If you run the original name for the tool, you’ll get either the old or new variant depending on the version of the currently selected tools. To explicitly request the old or new variants, use xcrun. The term Mach-O image refers to a Mach-O that can be loaded and executed without further processing. That includes executables, dynamic libraries, and bundles, but not object files. A dynamic library has the extension .dylib. You may also see this called a shared library. A framework is a bundle structure with the .framework extension that has both compile-time and run-time roles: At compile time, the framework combines the library’s headers and its stub library (stub libraries are explained below). At run time, the framework combines the library’s code, as a Mach-O dynamic library, and its associated resources. The exact structure of a framework varies by platform. For the details, see Placing Content in a Bundle. macOS supports both frameworks and standalone dynamic libraries. Other Apple platforms support frameworks but not standalone dynamic libraries. Historically these two roles were combined, that is, the framework included the headers, the dynamic library, and its resources. These days Apple ships different frameworks for each role. That is, the macOS SDK includes the compile-time framework and macOS itself includes the run-time one. Most third-party frameworks continue to combine these roles. A static library is an archive of one or more object files. It has the extension .a. Use ar, libtool, and ranlib to inspect and manipulate these archives. The static linker, or just the linker, runs at build time. It combines various inputs into a single output. Typically these inputs are object files, static libraries, dynamic libraries, and various configuration items. The output is most commonly a Mach-O image, although it’s also possible to output an object file. The linker may also output metadata, such as a link map (see Using a Link Map to Track Down a Symbol’s Origin). The linker has seen three major implementations: ld — This dates from the dawn of Mac OS X. ld64 — This was a rewrite started in the 2005 timeframe. Eventually it replaced ld completely. If you type ld, you get ld64. ld_prime — This was introduced with Xcode 15. Again, this isn’t a separate tool. Rather, ld supported the -ld_classic and -ld_new options to select a specific implementation. Note During the Xcode 15 beta cycle these options were named -ld64 and -ld_prime. I continue to use those original names because the definition of new changes over time (some of us still think of ld64 as the new linker ;–). Note Xcode 27 beta removed the ld64 implementation. The ld tool now contains just the ld_prime implementation. The dynamic linker loads Mach-O images at runtime. Its path is /usr/lib/dyld, so it’s often referred to as dyld, dyld, or DYLD. Personally I pronounced that dee-lid, but some folks say di-lid and others say dee-why-el-dee. IMPORTANT Third-party executables must use the standard dynamic linker. Other Unix-y platforms support the notion of a statically linked executable, one that makes system calls directly. This is not supported on Apple platforms. Apple platforms provide binary compatibility via system dynamic libraries and frameworks, not at the system call level. Note Apple platforms have vestigial support for custom dynamic linkers (your executable tells the system which dynamic linker to use via the LC_LOAD_DYLINKER load command). This facility originated on macOS’s ancestor platform and has never been a supported option on any Apple platform. The dynamic linker has seen 4 major revisions. See WWDC 2017 Session 413 (referenced below) for a discussion of versions 1 through 3. Version 4 is basically a merging of versions 2 and 3. Version 3 introduced the concept of a launch closure, which is an important optimisation. The dyld man page is chock-full of useful info, including a discussion of how it finds images at runtime. The dynamic linker supports the standard Unix dynamic linking API: dlopen, dlsym, dladdr, and dlclose. Each of these has a man page. One gotcha here is that dlclose doesn’t necessarily remove the image from memory. The dlclose man page lists some of the reasons fro this, but that list is not comprehensive. Every dynamic library has an install name, which is how the dynamic linker identifies the library. Historically that was the path where you installed the library. That’s still true for most system libraries, but nowadays a third-party library should use an rpath-relative install name. For more about this, see Dynamic Library Identification. Mach-O images are position independent, that is, they can be loaded at any location within the process’s address space. Historically, Mach-O supported the concept of position-dependent images, ones that could only be loaded at a specific address. While it may still be possible to create such an image, it’s no longer a good life choice. Mach-O images have a default load address, also known as the base address. For modern position-independent images this is 0 for library images and 4 GiB for executables (leaving the bottom 32 bits of the process’s address space unmapped). When the dynamic linker loads an image, it chooses an address for the image and then rebases the image to that address. If you take that address and subtract the image’s load address, you get a value known as the slide. Xcode 15 introduced the concept of a mergeable library. This a dynamic library with extra metadata that allows the linker to embed it into the output Mach-O image, much like a static library. Mergeable libraries have many benefits. For all the backstory, see WWDC 2023 Session 10268 Meet mergeable libraries. For instructions on how to set this up, see Configuring your project to use mergeable libraries. If you put a mergeable library into a framework structure you get a mergeable framework. Xcode 15 also introduced the concept of a static framework. This is a framework structure where the framework’s dynamic library is replaced by a static library. Note It’s not clear to me whether this offers any benefit over creating a mergeable framework. Earlier versions of Xcode did not have proper static framework support. That didn’t stop folks trying to use them, which caused all sorts of weird build problems. A universal binary is a file that contains multiple architectures for the same platform. Universal binaries always use the universal binary format. Use the file command to learn what architectures are within a universal binary. Use the lipo command to manipulate universal binaries. A universal binary’s architectures are either all in Mach-O format or all in the static library archive format. The latter is called a universal static library. A universal binary has the same extension as its non-universal equivalent. That means a .a file might be a static library or a universal static library. Most tools work on a single architecture within a universal binary. They default to the architecture of the current machine. To override this, pass the architecture in using a command-line option, typically -arch or --arch. An XCFramework is a single document package that includes libraries for any combination of platforms and architectures. It has the extension .xcframework. An XCFramework holds either a framework, a dynamic library, or a static library. All the elements must be the same type. Use xcodebuild to create an XCFramework. For specific instructions, see Xcode Help > Distribute binary frameworks > Create an XCFramework. Historically there was no need to code sign libraries in SDKs. If you shipped an SDK to another developer, they were responsible for re-signing all the code as part of their distribution process. Xcode 15 changes this. You should sign your SDK so that a developer using it can verify this dependency. For more details, see WWDC 2023 Session 10061 Verify app dependencies with digital signatures and Verifying the origin of your XCFrameworks. A stub library is a compact description of the contents of a dynamic library. It has the extension .tbd, which stands for text-based description (TBD). Apple’s SDKs include stub libraries to minimise their size; for the backstory, read this post. Use the tapi tool to create and manipulate stub libraries. In this context TAPI stands for a text-based API, an alternative name for TBD. Oh, and on the subject of tapi, I’d be remiss if I didn’t mention tapi-analyze! Stub libraries currently use YAML format, a fact that’s relevant when you try to interpret linker errors. If you’re curious about the format, read the tapi-tbdv4 man page. There’s also a JSON variant documented in the tapi-tbdv5 man page. Note Back in the day stub libraries used to be Mach-O files with all the code removed (MH_DYLIB_STUB). This format has long been deprecated in favour of TBD. Historically, the system maintained a dynamic linker shared cache, built at runtime from its working set of dynamic libraries. In macOS 11 and later this cache is included in the OS itself. Libraries in the cache are no longer present in their original locations on disk: % ls -lh /usr/lib/libSystem.B.dylib ls: /usr/lib/libSystem.B.dylib: No such file or directory Apple APIs, most notably dlopen, understand this and do the right thing if you supply the path of a library that moved into the cache. That’s true for some, but not all, command-line tools, for example: % dyld_info -exports /usr/lib/libSystem.B.dylib /usr/lib/libSystem.B.dylib [arm64e]: -exports: offset symbol … 0x5B827FE8 _mach_init_routine % nm /usr/lib/libSystem.B.dylib …/nm: error: /usr/lib/libSystem.B.dylib: No such file or directory When the linker creates a Mach-O image, it adds a bunch of helpful information to that image, including: The target platform The deployment target, that is, the minimum supported version of that platform Information about the tools used to build the image, most notably, the SDK version A build UUID For more information about the build UUID, see TN3178 Checking for and resolving build UUID problems. To dump the other information, run vtool. In some cases the OS uses the SDK version of the main executable to determine whether to enable new behaviour or retain old behaviour for compatibility purposes. You might see this referred to as compiled against SDK X. I typically refer to this as a linked-on-or-later check. Apple silicon Macs require that all code be signed. To make things easier for open source projects, the linker adds an ad hoc code signature to Apple silicon images. For more about this linker signing feature, see the discussion of the -adhoc_codesign and -no_adhoc_codesign options in the ld man page. Apple tools support the concept of autolinking. When your code uses a symbol from a module, the compiler inserts a reference (using the LC_LINKER_OPTION load command) to that module into the resulting object file (.o). When you link with that object file, the linker adds the referenced module to the list of modules that it searches when resolving symbols. Autolinking is obviously helpful but it can also cause problems, especially with cross-platform code. For information on how to enable and disable it, see the Build settings reference. Mach-O uses a two-level namespace. When a Mach-O image imports a symbol, it references the symbol name and the library where it expects to find that symbol. This improves both performance and reliability but it precludes certain techniques that might work on other platforms. For example, you can’t define a function called printf and expect it to ‘see’ calls from other dynamic libraries because those libraries import the version of printf from libSystem. To help folks who rely on techniques like this, macOS supports a flat namespace compatibility mode. This has numerous sharp edges — for an example, see the posts on this thread — and it’s best to avoid it where you can. If you’re enabling the flat namespace as part of a developer tool, search the ’net for dyld interpose to learn about an alternative technique. WARNING Dynamic linker interposing is not documented as API. While it’s a useful technique for developer tools, do not use it in products you ship to end users. Apple platforms use DWARF. When you compile a file, the compiler puts the debug info into the resulting object file. When you link a set of object files into a executable, dynamic library, or bundle for distribution, the linker does not include this debug info. Rather, debug info is stored in a separate debug symbols document package. This has the extension .dSYM and is created using dsymutil. Use symbols to learn about the symbols in a file. Use dwarfdump to get detailed information about DWARF debug info. Use atos to map an address to its corresponding symbol name. Different languages use different name mangling schemes: C, and all later languages, add a leading underscore (_) to distinguish their symbols from assembly language symbols. C++ uses a complex name mangling scheme. Use the c++filt tool to undo this mangling. Likewise, for Swift. Use swift demangle to undo this mangling. For a bunch more info about symbols in Mach-O, see Understanding Mach-O Symbols. This includes a discussion of weak references and weak definition. If your code is referencing a symbol unexpectedly, see Determining Why a Symbol is Referenced. To remove symbols from a Mach-O file, run strip. To hide symbols, run nmedit. It’s common for linkers to divide an object file into sections. You might find data in the data section and code in the text section (text is an old Unix term for code). Mach-O uses segments and sections. For example, there is a text segment (__TEXT) and within that various sections for code (__TEXT > __text), constant C strings (__TEXT > __cstring), and so on. Over the years there have been some really good talks about linking and libraries at WWDC, including: WWDC 2023 Session 10268 Meet mergeable libraries WWDC 2022 Session 110362 Link fast: Improve build and launch times WWDC 2022 Session 110370 Debug Swift debugging with LLDB WWDC 2021 Session 10211 Symbolication: Beyond the basics WWDC 2019 Session 416 Binary Frameworks in Swift — Despite the name, this covers XCFrameworks in depth. WWDC 2018 Session 415 Behind the Scenes of the Xcode Build Process WWDC 2017 Session 413 App Startup Time: Past, Present, and Future WWDC 2016 Session 406 Optimizing App Startup Time Note The older talks are no longer available from Apple, but you may be able to find transcripts out there on the ’net. Historically Apple published a document, Mac OS X ABI Mach-O File Format Reference, or some variant thereof, that acted as the definitive reference to the Mach-O file format. This document is no longer available from Apple. If you’re doing serious work with Mach-O, I recommend that you find an old copy. It’s definitely out of date, but there’s no better place to get a high-level introduction to the concepts. The Mach-O Wikipedia page has a link to an archived version of the document. For the most up-to-date information about Mach-O, see the declarations and doc comments in <mach-o/loader.h>. Revision History 2026-09-10 Added information about linker signing. 2026-09-02 Added information about dlopen and friends. 2026-07-06 Added the term launch closure. 2026-07-02 Added a note about fate of ld64. 2025-08-04 Added a link to Determining Why a Symbol is Referenced. 2025-06-29 Added information about autolinking. 2025-05-21 Added a note about the legacy Mach-O stub library format (MH_DYLIB_STUB). 2025-04-30 Added a specific reference to the man pages for the TBD format. 2025-03-01 Added a link to Understanding Mach-O Symbols. Added a link to TN3178 Checking for and resolving build UUID problems. Added a summary of the information available via vtool. Discussed linked-on-or-later checks. Explained how Mach-O uses segments and sections. Explained the old (-classic) and new (llvm-) tool variants. Referenced the Mach-O man page. Added basic info about the strip and nmedit tools. 2025-02-17 Expanded the discussion of dynamic library identification. 2024-10-07 Added some basic information about the dynamic linker shared cache. 2024-07-26 Clarified the description of the expected load address for Mach-O images. 2024-07-23 Added a discussion of position-independent images and the image slide. 2024-05-08 Added links to the demangling tools. 2024-04-30 Clarified the requirement to use the standard dynamic linker. 2024-03-02 Updated the discussion of static frameworks to account for Xcode 15 changes. Removed the link to WWDC 2018 Session 415 because it no longer works )-: 2024-03-01 Added the WWDC 2023 session to the list of sessions to make it easier to find. Added a reference to Using a Link Map to Track Down a Symbol’s Origin. Made other minor editorial changes. 2023-09-20 Added a link to Dynamic Library Identification. Updated the names for the static linker implementations (-ld_prime is no more!). Removed the beta epithet from Xcode 15. 2023-06-13 Defined the term Mach-O image. Added sections for both the static and dynamic linkers. Described the two big new features in Xcode 15: mergeable libraries and dependency verification. 2023-06-01 Add a reference to tapi-analyze. 2023-05-29 Added a discussion of the two-level namespace. 2023-04-27 Added a mention of the size tool. 2023-01-23 Explained the compile-time and run-time roles of a framework. Made other minor editorial changes. 2022-11-17 Added an explanation of TAPI. 2022-10-12 Added links to Mach-O documentation. 2022-09-29 Added info about .dSYM files. Added a few more links to WWDC sessions. 2022-09-21 First posted.
Replies
0
Boosts
0
Views
18k
Activity
Sep ’26