The symptom of failure is that the extension is active in the System Plugin Settings panel, but there is no expected response that the plugin has executed.
For example, add the following sample code to the plugin
- (instancetype)init {
// Set up the directory we are syncing.
self.myFolderURL = [NSURL fileURLWithPath:@"/"];
// ......
return self;
}
- (NSMenu *)menuForMenuKind:(FIMenuKind)whichMenu {
NSMenu *menu = [[NSMenu alloc] initWithTitle:@""];
[menu addItemWithTitle:@"Test" action:@selector(testAction:) keyEquivalent:@""];
return menu;
}
This method expects the finder's file context menu to have an extra option "Test", which is fine on macOS 14, but when I packaged the program for 10.15 no option appeared. I don't know how to know if the plugin is currently activated or running. So I'll try to try to see if it agrees with the normal situation by executing the plugin binary. (And it did run differently than the normal situation)
This problem was able to be reproduced even with the simplest demo I could find, but unfortunately I can't upload the zip file of the project here.
I can briefly describe how to build this simple demo:
In MacOS 14.4
Create a new app project using the following parameters
Add a new Target and select Add Finder Sync Extension, using the following parameters
Use the default code, or change it to the above code.
Modify the minimum supported MacOS version to 10.15.
Compile and run it in macOS 14.4 (remember to activate the extension in the Extensions panel of the System Settings), you can see that the plugin is working properly!
Compile the program in macOS 14.4, send it to macOS 10.15 and run the program. Activate the extension in the Extensions panel of the System Settings, but at this point you will see that the extension is not working, even though you activated the extension.
Post
Replies
Boosts
Views
Activity
I tried adding the initialized logs in FinderSync::init and was able to successfully output to Console.app on macOS 14.4, but not on macOS 10.15
Is there any way to determine why it's not running?
I tried your approach and found these exception logs below.
(“com.cxy-test.finder-test.finder” is the bundle id of the test plugin)
There are tons of error logs like this in there:
Failed to create LSPlugInKitProxy object (after sorting) for com.cxy-test.finder-test.finder (956)
But it doesn't tell exactly why the creation failed
Sorry, I should have sent you the logarchive file directly, but the log content is so big that it's still 25MB+ even after I compressed it, so I looked for a site where I could staging the file, here's the link to access it:
https://zippyshare.day/qE1pO7CJTUKbo9a/file
Below is the info.plist file content of the demo that can be reproduced, I see that there is NSExtensionPrincipalClass in it.
Is it because there is a difference in the info.plist specification between the 10.15 system and the latest one?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>23E214</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>finder</string>
<key>CFBundleExecutable</key>
<string>finder</string>
<key>CFBundleIdentifier</key>
<string>com.cxy-test.finder-test.finder</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>finder</string>
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string></string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key>
<string>14.5</string>
<key>DTSDKBuild</key>
<string>23F73</string>
<key>DTSDKName</key>
<string>macosx14.5</string>
<key>DTXcode</key>
<string>1540</string>
<key>DTXcodeBuild</key>
<string>15F31d</string>
<key>LSMinimumSystemVersion</key>
<string>10.15</string>
<key>LSUIElement</key>
<true/>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict/>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.FinderSync</string>
<key>NSExtensionPrincipalClass</key>
<string>FinderSync</string>
</dict>
</dict>
</plist>
My system version is 14.4 and xcode version is 15.4.
I tried downloading xcode 14.3.1 and xcode 13.4.1 but none of these versions work on my system.
Is it possible to make it compatible with 10.15 systems by manually adjusting the info.plist contents?
I tried installing an older version of xcode on a 10.15 VM and created a simple finder sync extension. The comparison revealed an extra piece of information in the info.plist of the program compiled from the old xcode on 10.15
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
// ....... other .......
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
I tried to add this information to the info.plist file of the previous project and it worked fine with the lower version! Thanks for helping me troubleshoot and fix this!