Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

Proper Provisiong Profile for Finder Sync Extension

Hi all, I'm developing a simple Finder Sync Extension, using Xcode 16.3. When running in Debug with Xcode, everything works fine. Instead, when compiling in Release and launching the containing app (by double-clicking on it), the Extension is not recognized (neither loaded) by the system.

The only difference between Debug and Release stands in Signing configuration:

Debug:

Release:

As you can see, in Release I'm using a Provisiong Profile, configured with my company's Developer ID. I'm wondering if Capabilities and Entitlements are not what is needed by my app. Anyway, I have no idea what the issue is.

Any suggestion will be appreciated. Thank you in advance

_Alex

Answered by DTS Engineer in 833866022

I recommend against changing your Release code signing settings in this way. Rather, leave both build configurations set to automatic signing. Then, when you want to test Developer ID, use Product > Archive and export a Developer ID signed app from the Xcode organiser.

Once you do this, you can then use that archive to tease apart signing issues from build configuration issues. That is, export an Apple Development signed build of your archive and see if it has the same problem.

I talk more about this concept in Isolating Code Signing Problems from Build Problems.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

I recommend against changing your Release code signing settings in this way. Rather, leave both build configurations set to automatic signing. Then, when you want to test Developer ID, use Product > Archive and export a Developer ID signed app from the Xcode organiser.

Once you do this, you can then use that archive to tease apart signing issues from build configuration issues. That is, export an Apple Development signed build of your archive and see if it has the same problem.

I talk more about this concept in Isolating Code Signing Problems from Build Problems.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Thank you for your support.

These are the results of my experiments:

  1. I configured the Product > Analyze action to build in Release, and the resulting app works as expected: the Extension is recognised and loaded, in a fully functional way.

  2. I followed the steps to Archive & Export the app, using several signing methods. Namely:

a) (From the organizer) Distribute app > Custom > Direct Distribution > Export > Developement Team = HIVE DIGITAL LABS > Automatically manage signing. Then the summary shows:

Team: HIVE DIGITAL LABS SRL
Certificate: Developer ID Application (Expires 01/02/27)
Profile: None

b) Distribute app > Custom > Direct Distribution > Export > Development Team = HIVE DIGITAL LABS > Manually manage signing, then I use my team's Developer ID certificate, proper Eligible profiles, and the summary shows:

Team: HIVE DIGITAL LABS SRL
Certificate: Developer ID Application (Expires 01/02/27)
Profile: Release Cut and Paste (Expires 24/03/43)

c) Distribute app > Custom > Debugging > Development Team = HIVE DIGITAL LABS > Automatically manage signing. Then the summary shows:

Team: HIVE DIGITAL LABS SRL
Certificate: Apple Development (Expires 28/03/26)
Profile: None

d) Distribute app > Custom > Debugging> Development Team = HIVE DIGITAL LABS > Manually manage signing, then I use my Apple Development certificate, proper Eligible profiles, and the summary shows:

Team: HIVE DIGITAL LABS SRL
Certificate: Apple Development (Expires 28/03/26)
Profile: Debug Cut and Paste (Expires 28/03/26)

e) Distribute app > Custom > Copy app > (Output dir).

Every methods exports successfully, but the resulting App is not working (the app starts, but the Extension is not loaded neither recognised).

I've also noticed that pluginkit -m -v shows me the Extension as loaded and active every time I lanched Product > Archive, but the directory from which the Extension is loaded is non-existent:

/Users/alessioscibilia/Library/Developer/Xcode/DerivedData/Hive-CutAndPaste-fpfzypnezgtfzlcugohasvonofbf/Build/Intermediates.noindex/ArchiveIntermediates/Hive-CutAndPaste/InstallationBuildProductsLocation/Applications/Cut & Paste.app/Contents/PlugIns/Cut & Paste Finder Extension.appex

I guess it's a temporary directory used by the Archive process.

When I use the Extension just after Archiving, it works but is not fully functional: icons and localization strings are missing. So I always removed the Extension (with pluginkit -r) before every Exporting from the Archive. As just said, launching every Exported app results in Extension not loaded.

I don't know what to do anymore, I've run out of ideas.

Thank you again for every further suggestion

Accepted Answer

Finally I solved it like this:

  1. I changed the Extension's Bundle ID

  2. I regenerated all the certificates and Provisioning Profiles, checking all options applicable to macOS

The software works almost perfectly now, but it still crashes randomly from time to time.

I suspect there might be some leftover "junk" in the registry used by pluginkit, due to all the testing I did.

Anyway, now I need to figure out how to receive crash reports from users. Is there a guide you’d recommend?

Thanks a lot!

Proper Provisiong Profile for Finder Sync Extension
 
 
Q