Yes, if I change the swift-argument-parser in the Sparkle project to match that in my project, the problem is solved.
But my project does indeed need swift-argument-parser version 2.x. I suppose I could test Sparkle with swift-argument-parser 2.x and submit a pull request to Sparkle if it passes. But I kind of think I should file a bug against Xcode or Swift Package Manager: Should these tools not be able to handle different projects in a workspace requiring different versions of the same remote package? Or is there a better way to fix this of which I am not aware?
Post
Replies
Boosts
Views
Activity
Eureka, probably. My workspace includes the Sparkle updater (sparkle-project.org), which is in a different project folder, and depends on swift-argument-parser 0.4.3. Maybe updating Sparkle will fix the problem.
Clean Build Folder does not change the error. Nor does trashing the project's DerivedData folder in Finder.
This bug (no user interface to delete Document Types) is still present in Xcode 14 GM :(
If anyone from Apple reads this, please consider just removing the "Info" tab in the Target editor. It seems to be a poorly synced and incomplete user interface for the Info.plist file which often causes more confusion than just editing the Info.plist file manually. (To make that easier, try the app Plist Edit Pro from Fat Cat Software.)
For me, the fix was to stop searching, stop reading, stop thinking, take a deep breath and remember the universal Xcode fix: Product > Clean Build Folder, stupid!!
(By the way, this happened immediately after I updated from Xcode 14 Beta to Xcode 14 GM. So it looks like a perennial problem with Xcode updates.)
At the Silicon Valley, CA NSCoderNight meeting last night, Brian Webster of Fat Cat Software dug into Xcode and found the answer for me. Short version: In general, Xcode 13 can still link to Apple private frameworks. The issue is the SDK.
Brian compared the text-based dynamic library description file…
Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/PrivateFrameworks/Safari.framework/Versions/A/Safari.tbd
between Xcode 12 and Xcode 13. In the section objc-classes, in the Xcode 12 SDK there is a class named WebBookmarkList as expected, but in the Xcode 13 SDK that has been replaced with SafariWebBookmarkList.
When today I changed the symbol name in my project to the new name, now it builds in Xcode 13.
But then, how can my code with the old class name still run in macOS 12? Apparently, for some reason, at least for now, macOS 12 is shipping with both the new and old Safari private frameworks.
So now, in the words of songwriters Joe Henry and Rhiannon Giddens,
I don't know where I'm going • But I'm on my way • Lord if you love me • Keep me I pray :))
I'm surprised no one else is mee-too-ing this. Just to confirm, I have tried it several more times since yesterday. Build in Xcode 12.5 – no problem. Quit Xcode 12.5, launch Xcode 13, same project, same target, same scheme, have not changed anything. Build – fails as described above.
I forgot to mention that I filed a second Feedback Bug with Apple. To summarize:
FB9103124, May 11: macOS Big Sur 11.4 Beta 3 killed Full Disk Access for all non-Apple apps
FB9120467, May 27: macOS 11.4 broke more than just switching off Full Disk Access (and the trouble continues with macOS 11.5)
At first, I thought that this issue was fixed in macOS 11.5 Beta, because my background agent was getting Full Disk Access without being listed in System Preferences' Full Disk Access list. But, then, and I don't know what I did other than build another new version of my app the other day with Xcode, my helper lost Full Disk Access. Actually, it is even worse than before, because now throwing the kitchen sink at the Apple does not fix it on my Mac.
Also, I have had two users report that throwing the kitchen sink at the Apple does not fix it for them, although, for dozens of users, either just re-enabling Full Disk Access for the parent app, throwing the kitchen sink at the Apple does seem to fix the problem. Mercifully, so far, my computer is the only one which has reportedly had the issue recur after it was "fixed". But I can imagine all hell breaking loose worse this time if Apple releases macOS 11.5 without fixing this, or at least telling developers what they need to change in their apps to make them work again.
Well, on the support page which I created for users experiencing this issue, after explaining how to re-enable Full Disk Access, I said that if it still does not work for you, try throwing the kitchen sink at the Apple, as follows:
• Watch for our Agent in Activity Monitor by filtering on its process name.
• Command our parent app to switch off our Agent.
• If one or more of our Agent processes still appears in Activity Monitor, Quit or Force Quit.
• If our Agent process keeps reappearing, restart.
• Delete any other copies of our app.
• Verify that you've got zero of our Agent processes running.
• Quit our app if it is running.
• In System Preferences … Full Disk Access, switch the checkbox for our app OFF and then back ON.
• Launch our app, command it to start our Agent, and see if it has Full Disk Access now.
So far, one user who reported that simply re-enabling Full Disk Access did not fix this issue has said that subsequently throwing the kitchen sink at the Apple fixed it.
Until Full Disk Access was introduced, my app had packaged in it a daemon process, launched intermittently by launchd, with the user's privileges. When Full Disk Access was introduced, after many hours of experimenting blindly (no documentation), I concluded that there was no way for this process to have Full Disk Access. To solve the problem, I discarded it and rewrite its functions into a constantly-running Service Management Login Item.
Not really a solution, but here is what happened. Before I begin, I'd like to say that, after my original post, I submitted FB9103124 to Apple on May 11, but there has been no response. Sadly, here we are. Support requests have begun to come in from my users also.
There are actually two issues.
Full Disk Access is summarily disabled for all non-Apple apps which previously had it enabled.
Helper Tool no longer inherits Full Disk Access from parent app.
Issue (1) is of course, just very annoying to users who must visit our web pages or email us to find what the @%*#! happened, and we need to apologize on behalf of Apple.
Issue (2) kind of went away by itself for me. It may have been that I had two useable versions of my app on my computer. After deleting one of them, and restarting a couple times, the remaining the FooAgent had Full Disk Access again, and eventually its inexplicable checkbox in System Preferences Security & Privacy Full Disk Access disappeared. I may have a few users with the more serious issue (2), so I'm just telling them to look for other versions, restart, etc.
Yes, it is a sad day here for the Mac.
I found the problem. I forgot that I had Audio Hijack (software by Rogue Amoeba) installed, and I had not used it in a month or so. So I launched Audio Hijack, after about 10 minutes of beachballing, a dialog advised me that I had version 3.8.0 and needed an "Urgent" update to 3.8.3. After doing so, and further following the prompts to install Rogue Amoeba's new Audio Capture Engine (ACE) system extension (or whatever it is) that comes along with Audio Hijack, the problem is solved. Apparently the old ACE was the cause. Thanks for the quick fix, Rogue Amoeba!
Update: Well, after a day or so I realized that other apps on my computer were behaving incorrectly also, so I peeked into that /Users/me/Library/Containers/com.myCompany.MyOtherApp/Data and, sure enough, found that a dozen or so other apps had been putting their data in there too. Presumably any app which had used NSHomeDirectory().
Restarting the computer solved this problem with my new app, and all of the problems with all of the other apps.
I think that macOS is getting too complicated for Apple to handle it :(
There is more @Etresoft. You also stated that this might be due to some mysterious hidden crap on my Mac. I was at first incredulous that Mac developers normally test their apps on a virtual machine to avoid trouble, since I have never done so in all my years of developing nonsandboxed apps. So it was not until today that I dragged the troublesome product to a different Mac and tested. To my amazement, it worked!
There is more. I use the Finder alternative, Path Finder, a third party app. I just noticed that when I execute a menu command in Path Finder which should open a window to my Home folder, Path Finder instead opens a window to the same MyOtherApp container whose path NSHomeFolder() returns to my new app. In other words, Path Finder has the problem as my new app. Interestingly, though, Finder's menu command Go > Home works correctly.
One more test: I tried running the troublesome app in my "test" user account on this Mac, and it works fine in the "test" user account.
Well, all of this raises more questions than answers. But now I where the problem lies. Next stop: A restart?!?!?!