I boot from an external drive. Content assist in Xcode seems to not work any more. Is that because it is blocked by the unavailability of predictive code completion?
I understand that predictive code completion does not work when booting from externals, and have asked (begged?) for details so that I can migrate to booting from an internal drive:
https://developer.apple.com/forums/thread/764688
But would someone (anyone?) please confirm that other forms of content assist still work in Xcode 16 when booting from an external drive? (Then I'll continue looking for why it's not working in my case.)
(Separately, I'd love answers to my other posting so I can migrate to booting from the internal drive.)
Post
Replies
Boosts
Views
Activity
What minimal changes can I make to use Xcode 16+ predictive code completion (PCC) when I've been booting from external drives (on the same apple-silicon machine)?
PCC says it requires booting from an internal drive.
I boot from external for a host of reasons that aren't going to change, but need to investigate whether/how I should accommodate PCC.
I haven't found technical communications on PCC requirements, and I hate to guess (wrong) because OS/workflow reconfiguration is hard and disruptive. So this post is to ask whether my approach would work, or if there's a better one.
I hope to continue using the external for the user home directory, the installed Xcode application, and Xcode temporary files (and of course the projects and artifacts).
(a) Does the "internal drive" requirement extend only to booting, or also to installing Xcode or situating the user HOME dir?
(b) Can one use the same external HOME directory for a user booting alternately from an internal and external drives? I would doubt it since the OS's would conflict e.g., in the HOME/Library state.
So I assume that means we use separate HOME dir's, but link key user HOME directories to external/real HOME (git, etc. - also .ssh?). Then OS's have distinct views, but user has mostly common view. (Assuming user always codes/builds for least-common-denominator.)
Aside: is it possible to redirect the system var/temp to an external?
(c) Xcode signing for the same machine/CPU seems locked to a specific OS. I.e., to switch between OS drives but do code signing in Xcode, I've had to re-issue a certificate.
(c-1) Is that avoidable?
(c-2) Can I somehow maintain a per-machine certificate, and toggle between them?
(c-3) Is that process made possible or impossible if Xcode is always pointing at the same Derived-Data/Archives directories? Is there any way to make it semi-automatic, once configured?
Thank you!
(I didn't see any forum tag for PCC.)
Getting alert "The version of macOS on this startup disk is out of date" for a Sequoia 15 beta
8/8/24 installed and used macOS Sequoia on an external drive (on Apple Silicon)
Since then, updated main OS (also on external) to 14.6.1
No changes to external drive mounts or availability
Now unable to switch startup disk to macOS Sequoia
I see no other comments on the forums about this. Anyone else? Any tips? Would it be better on the internal drive?
It's a fair bit of time to install and configure; I'd hate to think any update bricks all that.
(Surprised/confused not to find forum tags for the beta systems, macOS, etc?)
How to debug continuity/universal control issues?
Are there any tech-notes or resources on point?
Is there any API surface where I can build a solution?
I'm using Universal control to share a USB keyboard and mouse between two adjacent desktops macs (2018 mini, M1 studio), but after any time spent in one, I lose connection to the other, and sometimes cannot recover any connection. It seems like the connection times out.
Both run Sonoma 14.5, live on the same wifi (and see each other on the network), have bluetooth that always works with other devices and with AirDrop (where both can be seen by everybody) and are logged in to the same apple ID.
The only UI I can find is System Settings/Display, where sometimes there's a drop-down for "link keyboard and mouse to", which should have the other computer but often doesn't. Leaving bluetooth settings open to make each side discoverable does not fix anything.
I can find nothing helpful in technical docs. For debugging, I find nothing when searching settings by name when running defaults. In login KeyChain I see 5 handoff decryption keys and my own encryption key, but nothing else for handoff or continuity.
In the console, when the Display keyboard-sharing drop-down is available I do see a messages for a handoff:
sharingd: identified device (with other mac name, apple ID)
rapportd Received requestID 'com.apple.handoff.payload-request'
sharingd (request handling)
sharingd SendResponseID 'com.apple.handoff.payload-request'
rapportd PairVerify completed client ... RPI RPIdentity
However, in the failure state, though the OS is configured for push-through display to initiate control sharing, no mouse activity (on any edge of any display) will initiate the process. Only reverting to a physical USB mouse connection works. Are there (different?) console log identifiers associated with failed attempts?
I'm happy to debug this, and write an app or a system extension or whatever is necessary to avoid the constant interruption of the failing connection. I just don't see how.
Ideally, there would be a way to configure it to just ALWAYS maintain universal control between two specific macs. Bluetooth is not even relevant once the network identity is established, and there's no power or security reason to time out the connection.
I see many such complaints on the forum, but no acknowledgement or effective response. I found no forum tag for continuity or universal control (only for continuity camera). I seem to be unable to search for a phase using double quotes, as results highlight independent words. Using single quotes results in a search for 39, the ASCII character code.
In writing swift packages, I'd like to put demos, tests, docs into a separate package from my library package (to simplify how the library is consumed).
But in Xcode (15.4 or 16 beta 4) after opening the package, I don't see any test code coverage information for the external package - only for package targets.
When using the scheme editor I didn't see anything on point in panels for Run/Diagnostics, or Profile. Same result when targeting local packages (using path: ../{package}).
When configuring a workspace with both packages, I could not run or configure tests.
Is it possible to get coverage for an external library module used by the test (assuming they are sources locally built)? Is there a (online) recipe?
Many thanks!
Universal Control works to share keyboard and mouse from one mac to another, but actually switching seems to require physically moving the mouse to the other display.
Ideally, I'd like Apple to support some command available via command-key equivalents to cycle to other devices in the way that we can cycle through applications or windows.
Seeking to program that directly, I was unable to find any Universal Control API's on point. Are there any? I can imagine restricted this to the OS only for security.
In case there are display-driven API's, I see that system settings/displays shows all the displays from all devices, but I was unable to find a UI or API's to change focus to another display (other than moving the mouse to select the display). When I list displays programmatically, I only see the device-local displays.
In case there are device-driven APIs: I can initialize a bluetooth session and secure credentials, but interaction seems to be unavailable.
When I call either of
VZVirtualMachineConfiguration.validateSaveRestoreSupport(..)
VZVirtualMachine.saveMachineStateTo(URL)
I get the error:
NSLocalizedFailure=Invalid virtual machine configuration.
NSLocalizedFailureReason=Unsupported graphics device in configuration
For Linux there seems to be only vanilla size configuration (at least 1 scanout is required):
let graphicsDevice = VZVirtioGraphicsDeviceConfiguration()
graphicsDevice.scanouts = [
VZVirtioGraphicsScanoutConfiguration(widthInPixels: 1920, heightInPixels: 1080)
]
I've tried valid sizes and aspect ratios.
I've otherwise removed console and audio devices provoking similar errors, but I can't find an acceptable graphics configuration.
I believe it should work because my code is substantially similar to the open-source tart application that supports suspend.
I'm running Sonoma 14.2.1 on an M1 Studio with an HP24mh external monitor via a third-party HDMI/USB-C adapter.
I see nothing in the Console (except some ...wakeups_resource.diag common to other applications).
So I'm looking for help with
How to get more information for this failure
How to configure suspendable/resumable devices: graphics for sure, but also console, audio, keyboard, etc.
Thanks!
GUI Linux guest: https://developer.apple.com/documentation/virtualization/running_gui_linux_in_a_virtual_machine_on_a_mac
macos guest: https://developer.apple.com/documentation/virtualization/running_macos_in_a_virtual_machine_on_apple_silicon
wwdc-2022: https://developer.apple.com/videos/play/wwdc2022/10002/
wwdc-2023: https://developer.apple.com/videos/play/wwdc2023/10007/
Is the keychain per-machine or per machine-OS-Xcode combination, for purposes of Xcode developer certificates?
I'm dual-booting my M1Max studio with Ventura and Sonoma on external drives, each at times running both Xcode-released and Xcode-beta (on Ventura+beta just for swift 5.9). After switching, with automatic code signing Xcode complains there's no certificate and wants to revoke it and create another. I do, but I'd like to avoid that. I seem to now have 4 developer signing certificates.
Is there any way to avoid this, e.g., somehow selecting the certificate Xcode uses?
I'm suspecting not, and that the keychain access is per-application-certificate but XCode is using a key common to any Xcode, so I'm essentially hashing all 4 scenarios into one slot, with each collision requiring revoke+recreate.
Documentation pointers welcome. (Search function not working on forums?)
XCode enforcing only one certificate per machine?
revokes one from last boot
So unable to switch from Ventura to Sonoma
I have variants of MacOS installed on external SSD's (using APFS) that I no longer need, mixed with large data sets that I do need.
I'd like to wipe the OS on a volume without erasing the whole volume, to avoid the hours-long data copy/archive before wiping the volume to wipe the OS. Is that possible?
Moving forward, I can try to segregate data to other volumes, but the production deployment is OS and data on the same volume (again, to avoid copies), so it's not ideal.
(I realize it's not a high-traffic use case and unlikely to be supported.)
Thanks...
The Sonoma beta download seems to be Apple-Silicon only, though 2018 mini is among the supported machines.
Can I run Sonoma on x86 (2018 mini 32GB)?
Via Apple's Virtualization API's rather than a boot partition? I didn't see a link to a restore image.
(Also, would someone please add a forum tags for Sonoma?)
Would someone please verify my understanding of the security capabilities/limitations for an app targeting iOS and macCatalyst (and perhaps macOS)?
Our app must have documents encrypted on disk (for a given user+device), and decrypted only in the context of the app. We also must have a way to recover documents after device failure, and to securely send documents from one user to another user.
The document-recovery requirement seems to rule out storing keys in the secure enclave, and to rule in the use of iCloud keychain (or some trusted key repository that I'd hate to have to build).
For the requirement to decrypt in the app only, we're relying on the keychain API only providing the key to our app. However, the Keychain user application seems to permit any (admin?) user to read passwords. If we needed to deter or prevent a malicious user from hacking the documents outside the app, what's the recommendation: conceal the salt? use a composite key? (We'd encrypt the key with a secure-enclave key, except that fails the recovery requirement.)
For sending documents from one user to another, we're planning to use public-key exchange to encrypt during transmission. That means we need to arrange a separate out-of-band communication for both public keys. For that we're assuming that we can send securely through iMessage (with user confirmation to send, and an iMessage extension on receive to drive the app), using iMessage guarantees that the message cannot be intercepted. So:
Sender offers to send doc (with PK).
Receiver stores sender PK, replies with PK.
Sender sends doc
Receiver receives, decrypts using Sender PK
Presumably we could save PK's on both ends to skip steps 1-2 for subsequent shares.
Our documents are small now (<10K), so in theory we could use iMessage for step 3-4, but I'd prefer some non-interactive file-based transmission mechanism for user-to-user (outside bluetooth range (not multipeer), no exchange server available.) Is there a better option? Ideally, I'd be able to share with other app users where I had PK's using the share interface instead of iMessage interface, but I would prefer to prohibit any other consumers. (An interaction-time tailscale-style local network connection was our first choice.)
Pointers to docs or sample code most welcome!
Thanks
I'm unable to find dyld_info (formerly dyldinfo) in the expected Xcode/Command-line tools.
I understand from an 8/12/22 commit message in the swift source tree (which uses it) that dyldinfo was to be renamed to dyld_info per rdar://98570807.
I have current XCode 14.0.1 (14A400) and updated command-line tools, but I can't find dyldinfo or dyld_info anywhere. I do find all the other tools mentioned in the docs, so I don't have other reasons to think my install is bad. (I'm on x86_64.)
Where is dyld_info normally installed?
Can anyone verify it came with the latest XCode?
Is there a workaround for me to obtain it?
Thanks!
Hi -
I'm blocked by a spurious error in XCode I can't shake, in an iOS/Catalyst app project in swift with swift packages.
The target has an iOS deployment version of 14.1, but XCode UI behaves like the target is set to 13.0:
The package product 'LIB' requires minimum platform version 14.0 for the iOS platform, but this target supports 13.0
The command line builds fine:
xcodebuild -configuration Release -scheme 'Study (iOS)' # (also Debug config)
I'm sure I must be missing some configuration, but I have set the iOS/catalyst deployment version > 14 in project and target.
To confirm:
I'm using the same target scheme in XCode UI as the command-line build
I fail in the UI using any relevant target devices (i.e., over iOS 14, mac catalyst or ipad)
The project selector clearly shows target 14.1 (project/Deployment target/iOS deployment target)
The project/target UI clearly shows deployment target 14.1 (project view, 'Study (iOS)' target, iOS Deployment Target)
Same result when using version 15.0 instead of 14.1
Same result when disabling catalyst support and targeting iPad
Same result with or without a derived mac catalyst product bundle identifier
Same result for macOS targets 11..12.4
14.0 = macOS 11.0
15.0 = 12.0
Same result after creating a new run scheme.
Scanning all files in the project confirms these settings and does not show a relevant 13
e.g., in "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" and IPHONEOS_DEPLOYMENT_TARGET
I'm running macOS 12.4, XCode 13.4 (13F17a), default 5.6 toolchain, with packages declaring 5.6 toolchain
No external xcconfig files
In the XCode UI, I've done clean builds and reset the package cache
I've deleted XCode's Derived Data and restarted mac
I'm also developing packages (and have cleaned .build and .swiftpm directories) but app package dependencies are pulling from remote repository (i.e., not using local packages)
So:
Any clue as to why XCode believes the target is 13 and not 14.1?
How I can debug this?
Is there some way XCode can indicate the target triplet and SDK and how it is derived?
Is the next step to recreate the project?
Thanks!
How to integrate native Java backend with macOS catalyst app UI?
My UI is SwiftUI/macCatalyst, using entitlements for voice recognition and microphone.
My back-end is from a large legacy Java code base rendered to native x86_64 binary.
For now they interface via stdio streams established by the native java command launching the UI app.
This works fine when the Java code runs on a JDK.
When native backend launches the UI app, the UI app fails to secure permissions (but otherwise works fine)
Same result when the backend is bundled with the app as if a command-line tool
Solution constraints:
Unlike the sample app/docs that integrate a command-line tool into an app, this binary cannot be built using XCode's Clang
I'd like to continue using macCatalyst, knowing this can't be deployed to iOS proper, only to macOS.
I can make the UI launch the backend, but don't want to do this without some assurance it would fix things :)
I'd rather not work through the calling conventions/wrappers to staticly link these binaries now.
Assuming the parent process needs the app entitlements, I tried:
To embed the java binary into the SwiftUI app?:
Following instructions for embedding a command-line app did not configure the backend binary with the entitlements?
Deploy the java binary standalone as an app with the proper entitlements?
Similar to above: unable to figure out how
Pointers to docs welcome. I've seen
Embedding Nonstandard Code Structures in a Bundle
Embedding a command-line tool in a sandboxed app
Ideally I'd like to know how to deliver an app whose binary is entirely build using Java native (including proper entitle/sign/credential/notorize/sandbox...)
Thanks!