Hello, I've developed an application using Electron with JAVACRIPT. I have managed to deploy to both Windows and the web but having trouble deploying the application to my Mac users.
It's my first time deploying an application for Mac but feel like I'm stuck at the last hurdle and out of ideas so I'm reaching out for help.
My application is successfully signing but during the build and when my Notarize.js is running it seems to get stuck indefinitely.
I can check and see the status of the Notarize attempts but they seem to be stuck "In Progress". Here are the logs.
Successfully received submission history.
history
--------------------------------------------------
createdDate: 2025-01-06T00:59:45.245Z
id: 1dc39b5f-fdca-4bf2-a6f6-fa793de2786e
name: Popcorn-1.0.0.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-01-04T08:01:36.168Z
id: c575b015-edd6-4e09-8da5-7ae09f4f67db
name: Popcorn-1.0.0.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-01-03T08:30:31.528Z
id: 570ae540-8cce-4418-ab09-7f6be33dc245
name: Popcorn-1.0.0.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-01-03T07:57:56.701Z
id: 42748de8-026a-4663-9fd2-88c7608588d3
name: Popcorn-1.0.0.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-01-03T06:30:19.569Z
id: 5140caa0-df14-491a-b148-82015f9856da
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-03T05:56:28.916Z
id: 535c6be1-4999-4b3e-9766-42512a8deb67
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-03T02:51:04.893Z
id: ead2268c-62b2-4b4b-8850-c1cdb5313d6a
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-03T01:50:51.954Z
id: d0c44281-a788-4704-a057-4620d284516d
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-03T00:48:54.445Z
id: 3d13727c-06a3-49d7-902b-4001522107c3
name: Popcorn-1.0.0.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T13:35:26.715Z
id: 1823a550-a9ff-467a-8a60-dd3e42305258
name: Popcorn-1.0.0.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T13:23:41.894Z
id: cbc341a2-9a51-43d6-83ae-713443c84fec
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T12:21:44.561Z
id: 1af34419-655f-49b8-bea0-05b4232c46a7
name: Popcorn-1.0.0.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T11:34:03.732Z
id: 8c4ab3b5-2ea9-4220-9667-94011bcf76fb
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T11:19:16.052Z
id: 093dfb8a-9058-417d-acd3-8ea5d0bb654a
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T11:13:14.676Z
id: 556b7c1c-d114-4717-b0f7-4f1614ada845
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T10:52:36.834Z
id: ce3d3c8a-d218-4978-8757-2ca9d12aad76
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T09:27:13.535Z
id: b65ec764-baab-444d-809b-e4242d70548b
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T09:27:01.176Z
id: be228acc-e6a2-48f2-937b-5b2962275052
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T09:19:19.182Z
id: d99fc10b-c424-4d0c-a2aa-37a9e9165d91
name: Popcorn-1.0.0.dmg
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T08:55:43.064Z
id: 2e7f8df7-9c0b-4dd0-8df7-8f3428c0bfa0
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T08:19:48.676Z
id: 678355da-e413-4b1a-92a8-776a6ff6a055
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T07:58:48.278Z
id: 8591f8d7-1d57-4e80-af90-d77190160a20
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T07:54:41.193Z
id: f029dfeb-3f14-4f65-83e2-d9356ef6ac00
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T07:27:50.613Z
id: 574f2563-d533-4885-947a-2f57170196af
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T07:09:54.203Z
id: 589f7f3a-d231-4911-8ad6-9d2c15a61ac0
name: popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T05:39:02.574Z
id: 9edd43de-6d14-4743-87fc-ab570bee7399
name: Popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T04:36:12.342Z
id: ba02116d-1aad-4521-8667-ad086b14c1cb
name: Popcorn.zip
status: In Progress
--------------------------------------------------
createdDate: 2025-01-02T03:22:49.185Z
id: b8585c81-b7f5-4c35-9bd6-62157c6ce4bc
name: Popcorn.zip
status: In Progress
Demystify code signing and its importance in app development. Get help troubleshooting code signing issues and ensure your app is properly signed for distribution.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hello,
I already have got approval from Apple for com.apple.developer.family-controls entitlement
When I am building my app, there is one part where I need to check the list of applications which I have blocked with my app.
To get the list I have to have com.apple.developer.managed-settings entitlement ...
Now how and where show I get hold of it ?
I already got permission for Family Control, how do I get hold of this now ?
我没有勾选entitlements 中的” com.apple.security.network.server“和” com.apple.security.device.usb“,但是确实在打包时又自动出现在包里,我现在无法解决这个问题,我需要帮助,谢谢
我的.entitlements 文件如下:
排查命令:
codesign -d --entitlements :- ./Device\ Guard.app
Executable=/Users/zhanghai/Library/Developer/Xcode/DerivedData/MacGuardApp-fvfnspyxcojxojdfclyohrnupgsh/Build/Products/Debug/Device Guard.app/Contents/MacOS/Device Guard
warning: Specifying ':' in the path is deprecated and will not work in a future release
I’ve been working on a Catalyst version of my iOS apps.
Finally everything is working apart from the custom intents the user user to configure the widgets.
The config UI loads:
And changing settings at this level works.
But it can’t load the options for the other settings:
“No options were provided for this parameter”
I see this crash in the intent:
Termination Reason: Namespace DYLD, Code 1 Library missing
Library not loaded: @rpath/CocoaLumberjack.framework/Versions/A/CocoaLumberjack
Referenced from: <E1BF4CC5-4181-3272-828C-86B1CD1A66BF> /Applications/my.app/Contents/PlugIns/Intents.appex/Contents/MacOS/Intents
Reason: , (security policy does not allow @ path expansion)
(terminated at launch; ignore backtrace)
I have added the Hardened Runtime Capability to the Main App Target, the Widget Target and the Intents Target. I also allowed “Disable Library Validation” just in case.
What am I missing?
We are using SHC to compile on macOS to convert the .sh script to a binary file. This binary file is then digitally signed by the Apple developer account and then notarised. After that, it will work on the same system where we follow this process. But if we share this file to another system, then it gets quarantined (com.apple.quarantine) while downloading.
Is there any way to prevent it by getting quarantine on another system or something I'm missing, any clues?
Hello everyone,
I’m trying to notarize my macOS app (DockIt.zip) using the new notarytool CLI, but every submission remains in In Progress status forever, it never moves to Accepted or Rejected. I’ve tried multiple rebuilds, credential resets, and even the Xcode GUI method, but the result is the same.
Environment
• macOS 14.x
• Xcode 15.x / Command-Line Tools 15.x
• Apple ID: afonsocruz.dev@icloud.com (Team ID: 264Z9XKCT6)
• Keychain profile: DockItCreds
Steps taken
1. zip -r DockIt.zip DockIt.app
2. xcrun notarytool store-credentials DockItCreds --apple-id ... --team-id 264Z9XKCT6
3. xcrun notarytool submit DockIt.zip --keychain-profile DockItCreds --wait
4. xcrun notarytool history --keychain-profile DockItCreds
History snapshot
167a9600-5c7c-4bc4-b984-dd967d30e161 (2025-05-19T11:37:59Z) – In Progress
7167f7c8-d448-4b35-9817-055009f2730a (2025-05-19T04:59:34Z) – In Progress
6ef0610a-595f-4c57-b0f2-f5fe783e8679 (2025-05-18T22:04:10Z) – In Progress
bddde388-a34a-42c4-afb8-f06f2b0fe8fa (2025-05-17T10:24:07Z) – In Progress
Questions
Is it normal to stay “In Progress” for so long?
Any recent service changes or outages?
How can I get more detailed logs?
Also, I'm still learning about macOS development and these steps! If there's something obvious and I was not able to see, please, take into consideration!
Thanks!
Topic:
Code Signing
SubTopic:
Notarization
How can I disable Hardened Runtime in Xcode only when signing ad hoc?
If I make a new project, Xcode will say
Disabling hardened runtime with ad-hoc codesigning.
at the beginning of the build logs.
However, somehow my project isn't doing this -- it's still hardening the runtime when ad-hoc signing.
What should I do to debug this?
Topic:
Code Signing
SubTopic:
Entitlements
I have two Macs, desktop and laptop. Since they both belong to me, they both sign in with the same Apple account. I find that if I sign and notarize an app on one, the other must be powered off. Otherwise, notarization will fail.
Is this intentional? If so, what is the rationale? Is there a way to fix or avoid it?
Both systems run macOS Tahoe with the latest updates. Both are set up the same way for signing using the same certificates. The build process is identical on each.
Topic:
Code Signing
SubTopic:
Notarization
Hello,
I am new to the apple developer program. I, and my team, are working on porting some medical software that we have written from Windows to MacOS. We obviously want to notarize our app to make it easy for professionals and colleagues to use. The software is entirely written in python and includes ffmpeg for one of the features to export the medical data to video and compiled to a single file with pyinstaller, like so:
pyinstaller app_name.py --noconfirm --onefile --add-data "ffmpeg:ffmpeg"
chmod +x dist/app_name*
We are currently adding the signing and notarization of the app to our github workflow. The workflow build a successful app with the correct structure and is able to be run if we allow it past the MacOS firewall. We are signing the app like so:
run: |
BINARY_PATH="dist/app_name"
IDENTITY=$(security find-identity -p codesigning -v | grep -E 'Developer ID Application|Mac Developer' | head -n1 | awk -F\" '{print $2}')
echo "Using identity: $IDENTITY"
security unlock-keychain -p "" build.keychain
codesign --verbose=4 --force --options runtime --timestamp --entitlements .github/mac_build_tools/entitlements.plist --sign "$IDENTITY" "$BINARY_PATH"
codesign --verify --verbose=4 "$BINARY_PATH"
We then also move the binary around into an app structure and sign that as well like so
echo "Moving contents to SedPlot.app"
mkdir -p dist/app_name.app/Contents/MacOS
mv "$BINARY_PATH" dist/app_name.app/Contents/MacOS
cp .github/mac_build_tools/Info.plist dist/app_name.app/Contents
echo -n "APPL????" > dist/app_name.app/Contents/PkgInfo
echo "Signing App"
codesign --verbose=4 --force --options runtime --timestamp --entitlements .github/mac_build_tools/entitlements.plist --sign "$IDENTITY" dist/app_name.app
codesign --verify --verbose=4 dist/app_name.app
codesign --display --entitlements :- dist/app_name.app
If I upload the artifact and check its properties, everything looks good. It has the correct ID associated with it and shows as valid when I use codesign --verify on it. I start having issues when I move onto notarization, like so:
cd dist
echo "Zipping and checking the zip"
ditto -c -k --keepParent app_name.app app_name.zip
zipinfo -1 app_name.zip | head
echo "$AC_API_KEY" > AuthKey.p8
SUBMISSION_ID=$(xcrun notarytool submit app_name.zip \
--key AuthKey.p8 \
--key-id "$AC_KEY_ID" \
--issuer "$AC_ISSUER_ID" \
--team-id "TEAM_ID" \
--output-format json | jq -r '.id')
echo "Submitted notarization with ID: $SUBMISSION_ID"
All of the print statements for errors look good at this point, and the submission ID shows up in my history when I query it. However, all 7 attempts that I have made to notarize this app hang for indefinite amounts of time. We are hoping to submit our tool for publication soon, and it would be helpful to know if there is an issue causing the hang on our end or if this is an issue with new developers.
I have been reading around the forums and see some notes about this taking about a week until the system start to "learn" about our development team and our attempts to notarize. I also know that there is limited amounts that can be said about the backend of the notarizations step. What would be helpful is a few things:
I would like feedback about if there is a fundamental flaw in our approach for signing and notarizing our application, so that we can identify it.
I would appreciate some guidelines about how long to expect this notarization step to take until we can get notarization to finish within 10s of minutes, as we have a hard-coded 30 min wait time for the completion of the notarization in our workflow right now.
It would be helpful to know how to check our logs, as requesting the logs for any of our attempts results in being told that the logs are not available yet.
In case someone from apple is interested in this and wants to check, the most-recent submission ID (the one that I believe should be most-likely correct and valid) is 9ef24966-42a5-47db-a7e0-c6baf0310ac4
Thank you in advance!
Hi, I have a .NET MAUI app which I've added subscriptions to using the Plugin.InAppBilling nuget package. When I tested on TestFlight I got an almost immediate crash. After doing some research I followed advice to add an Entitlements.plist file to Platforms > iOS with the following entry:
com.apple.developer.in-app-purchase
The distribution provisioning profile I'm using to sign my app has the App ID set to an Identifier which has "In-App Purchase" ticked, but greyed out in it's "Capabilities" section on https://developer.apple.com/. I'm not sure why it's ticked and greyed out, but I assume that means that "In-App Purchase" is enabled.
The app runs file locally but when I create an IPA file and add it to Transporter for upload to App Store Connect I get the following error:
"Validation failed (409)
Invalid Code Signing Entitlements. Your application bundle's signature contains code signing entitlements that are not supported on iOS. Specifically, key 'com.apple.developer.in-app-purchase' in 'Payload/[Removed].app/[Removed]' is not supported. (ID: [Removed])".
Here is the structure of my csproj code for creating a IPA file for iOS:
The command I use:
dotnet publish [Removed]/app.csproj -f:net9.0-ios -c:Release ^
/p:PlatformTarget=Arm64 ^
/p:RuntimeIdentifier=ios-arm64 ^
/p:ServerAddress=[Removed] ^
/p:ServerUser=[Removed] ^
/p:ServerPassword=[Removed] ^
/p:ArchiveOnBuild=true ^
/p:BuildIpa=true
I'm stuck trying to figure this out. If you could please point out any issues with what I'm doing or if you have any suggestions to resolve the problem I would very much appreciate it.
Thanks,
Ben
I keep getting this error when trying to install Audio app extension.
Everything is reviewed from certificates to profiles, for some reason
CreatingCustomAudioEffects sample is deployed correctly but when Creating new Project (Audio Extension App) from new project Option, it doesn't work at all.
If I remove Extension from Frameworks and deploy app, then no problem but then App crashes as extension is missing. Something wrong with Xcode? I am pretty sure it used to build new projects but not anymore.
Failed to verify code signature of /var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.0k1RXy/extracted/AudioUnitsAppExtensionTest.app : 0xe8008015 (A valid provisioning profile for this executable was not found.)
Please ensure sure that your app is signed by a valid provisioning profile.
If this issue persists, please attach the following when sending a report to Apple:
A sysdiagnose from this Mac
A sysdiagnose from the device failing installation
An IPA of the app failing installation
I've tried to sign/notarize/staple my Electron app via electron-builder, using electron-notarize. I tried it as well in cmd line - both times, same result.
Code signing runs without a problem.
Notarize (I did wait two days first time, now it's couple of minutes)
Stapling - failure
`Downloaded ticket has been stored at file:///var/folders/....
Could not validate ticket for....
The staple and validate action failed! Error 65.
`
I've checked, and the tickets are downloaded to said folder.
My process:
`codesign --deep --force --options runtime \
--entitlements build/entitlements.mac.plist \
--sign "Developer ID Application: Pete..." \
dist/mac-arm64/Modelist.app`
ditto -c -k --sequesterRsrc --keepParent dist/mac-arm64/Modelist.app dist/mac-arm64/Modelist.zip
xcrun notarytool submit dist/mac-arm64/Modelist.zip \
--apple-id "email" \
--password "app_specific_pass" \
--team-id "team_id" \
--wait
Conducting pre-submission checks for Modelist.zip and initiating connection to the Apple notary service...
Submission ID received
id: 8fa0b3d3-291...
Upload progress: 100,00% (98,1 MB of 98,1 MB)
Successfully uploaded file
id: 8fa0b3d3-291...
path: /Users/pete/projects/modelist2/dist/mac-arm64/Modelist.zip
Waiting for processing to complete.
Current status: Accepted.............
Processing complete
id: 8fa0b3d3-291...
status: Accepted
xcrun stapler staple dist/mac-arm64/Modelist.app
Processing: /Users/pete/projects/modelist2/dist/mac-arm64/Modelist.app
Could not validate ticket for /Users/pete/projects/modelist2/dist/mac-arm64/Modelist.app
The staple and validate action failed! Error 65.
The certs were installed via XCode.
Variables are all exported in env.
I followed the instructions for electron-builder from here: https://kilianvalkhof.com/2019/electron/notarizing-your-electron-application/
I'm sure I made a stupid little mistake, but after hours of arguing with ChatGPT we are going in circles and after clicking on almost every link in Google, I'm kindda lost.
Topic:
Code Signing
SubTopic:
Notarization
In Swift I'm using unzip by launching a Process to unzip a file.
I added a launchRequirement to the process in order to make sure the executable is code signed by Apple and the identifier is com.apple.unzip. After testing out my code on another machines (both physical and virtual), I found out that in some the identifier is actually com.apple.zipinfo, which broke the SigningIdentifier requirement.
It's safe to assume that /usr/bin/unzip can be trusted since it's in a System Integrity Protection (SIP) location, but I'm wondering why this executable has different identifiers?
I've been distributing my Math Education app (Java-based) as a downloadable .dmg. My sw manufacturing process was working well on my Intel-iMac a year ago (signing, notarization, stapling).
I need to support Apple Silicon, so I replicated the SW manuf. stack on my M2 MacBook, including putting my Developer and Installer Certificates in the Keychain Access. I get through building the M2,M2,M4 .dmg installer file just fine.
But the Codesign is failing. It should be prompting me for my MacOS password (it does this in the Intel-Mac process), but fails this command:
codesign --sign "Pierre Bierre (SL7L4YU8GT)" --force --options runtime --verbose --timestamp ~/DFG2D_MacOS_Manufacturing/MacOSInstallers/DFG2D_Mac_J17010_295
The response was:
error: The specified item could not be found in the keychain.
The signer reference is correct, and works fine on the Intel-Mac codesign process.
What could explain why the same script fails in the M2 environment? Does codesign normally prompt for the MacOS user password ? Why would that fail?
Topic:
Code Signing
SubTopic:
Certificates, Identifiers & Profiles
I am facing this error on every flutter project build.
Although it runs ok.
The error happens on the codesign command
What do I need to fix ?
I have validated that every *.plist file is ok using plutil -lint
ERROR MESSAGE
/usr/bin/codesign --force --sign MY_SHA_CODE --verbose
/Users/macbookair/workspace/flutter_application_1/build/ios/Release-iphoneos/Runner.app/Frameworks/libswiftCore.dylib)` exited with status 0. The command's
output was:
/Users/macbookair/workspace/flutter_application_1/build/ios/Release-iphoneos/Runner.app/Frameworks/libswiftCore.dylib: a required plist file or resource is
malformed
Info.plist
<?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>CFBundleDevelopmentRegion</key> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key> <string>Flutter Application 1</string>
<key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key> <string>6.0</string>
<key>CFBundleName</key> <string>flutter_application_1</string>
<key>CFBundlePackageType</key> <string>APPL</string>
<key>CFBundleShortVersionString</key> <string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key> <string>????</string>
<key>CFBundleVersion</key> <string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key> <true/>
<key>UILaunchStoryboardName</key> <string>LaunchScreen</string>
<key>UIMainStoryboardFile</key> <string>Main</string>
<key>UISupportedInterfaceOrientations</key> <array>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string> </array>
<key>UISupportedInterfaceOrientations~ipad</key> <array>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string>
</array> <key>CADisableMinimumFrameDurationOnPhone</key>
<true/> <key>UIApplicationSupportsIndirectInputEvents</key>
<true/></dict>
</plist>
Please help.
Hello community,
I'm new here, so please excuse my blunt question. I'm trying to understand how everything works and the logic behind it.
I have an idea for an app which requires the FamilyControl entitlement. Now I am not sure if the idea even works, so I wanted to test it on my own device.
Am I correct, that I cannot even test an App with such entitlements without paying for the ADP? Not even on my own device?
I completely understand I need to be a member in the ADP if I want to distribute my app, but I'm not there, yet, and I just want to do a proof-of-concept.
I thought I can't be the first one with that question, but couldn't find a past topic on this, so I'm posting it.
Regards,
Niklas
Hi everyone!
I've send my .dmg file for notarization, it has been accepted on March 5. Since then there weren't any updates, it hasn't changed its status. What might be the problem?
Info about submission:
createdDate: 2025-03-05T12:13:18.802Z
id: 202d877d-d0c4-4211-bba4-6ebdb169a843
status: Accepted
For years, I've been shipping my apps with a Perl script that now invokes notarytool to get the notarization, using this command
/usr/bin/xcrun notarytool submit --apple-id jerry@sheepsystems.com --keychain-profile SSYShipProduct --team-id 4MAMECY9VS --output-format json /Users/jk/blah/blah/MyApp.zip --wait
I used this script with this command several times during September 2024 to ship my apps, and it worked. But now, the above command fails with:
Error: No Keychain password item found for profile: SSYShipProduct Run 'notarytool store-credentials' to create another credential profile.
Of course, I am now running later versions of macOS beta and Xcode than I was in September. Does anyone know the problem? Screenshots from Terminal and Keychain Access are attached. Thank you.
Topic:
Code Signing
SubTopic:
Notarization
Hi,
I'm having a really hard time figuring out why I cannot perform cloud signing via Developer ID with xcodebuild.
I have a macOS application, which I can perfectly cloud sign the following way:
Sign into Xcode with my Admin + Account Holder Apple ID.
Delete my Developer ID Application certificate from Keychain Access.
In Xcode, click Archive.
When archived, click "Distribute App" in Xcode Organizer.
The app is cloud signed. I prove this by extracting the certificate codesign --extract-certificates -- /path/to/app.app then locate the 1.2.840.113635.100.6.1.32 bit mentioned by Quinn in this post. I however do it by simply opening the certifiacte with Keychain Access, where I can investigate the content of the certificate, rather than use that tool he does.
Then, I do the following to attempt to cloud sign via xcodebuild:
Create an API Key for the whole team in Users and Access > Integrations > App Store Connect with the "Admin" role selected.
Download the private key .p8 file to ~/Downloads.
Sign out of my Apple ID in Xcode by removing the account in Settings > Accounts.
Create an archive:
xcodebuild archive -scheme "<redacted scheme name>" -archivePath ~/Downloads/archive.xcarchive -authenticationKeyIssuerID <redacted issuer id> -authenticationKeyID <redacted key id> -authenticationKeyPath ~/Downloads/AuthKey_<redacted key id>.p8 -allowProvisioningUpdates
The archive is successfully created, with a new "Apple Development: Created via API (TEAM ID)" naming.
Export the archive:
xcodebuild -exportArchive -archivePath ~/Downloads/archive.xcarchive -authenticationKeyIssuerID <redacted issuer id> -authenticationKeyID <redacted key id> -authenticationKeyPath ~/Downloads/AuthKey_<redacted key id>.p8 -allowProvisioningUpdates -exportOptionsPlist ~/Downloads/exportOptions.plist -exportPath ~/Downloads
which then fails:
2025-03-07 10:27:58.706 xcodebuild[2152:40704] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path "/var/folders/tn/yy7ynz3d0yb4p3sd_5q_wl0h0000gn/T/<redacted app name> macOS_2025-03-07_10-27-58.706.xcdistributionlogs".
error: exportArchive Cloud signing permission error
error: exportArchive No signing certificate "Developer ID Application" found
** EXPORT FAILED **
Opening the distribution logs, I find this in the Provisioning Log:
2025-03-07 09:09:58 +0000 2025-03-07 09:09:58 +0000 IDEProvisioningRepair(<redacted app name>.app): 2025-03-07 09:09:58 +0000 IDEProvisioningRepair(<redacted app name>.app): Sending request 84E57539-BC1D-407A-8402-7BCE9F2FD100 to <https://appstoreconnect.apple.com/xcbuild/v1/certificates> for session DVTServicesTeamBasedSession <issuer: <redacted issuer id>; key identifier: <redacted key id>>.
Method: POST
Headers:
{
Accept = "application/vnd.api+json";
"Accept-Encoding" = "gzip, deflate";
Authorization = "Bearer <redacted bearer token>";
"Content-Length" = 116;
"Content-Type" = "application/vnd.api+json";
"User-Agent" = Xcode;
"X-HTTP-Method-Override" = GET;
"X-Xcode-Version" = "16.2 (16C5032a)";
}
Payload:
{"urlEncodedQueryParams":"teamId=<redacted team id>&filter%5BcertificateType%5D=DEVELOPER_ID_APPLICATION_MANAGED&limit=200"}
2025-03-07 09:09:59 +0000 2025-03-07 09:09:59 +0000 IDEProvisioningRepair(<redacted app name>.app): 2025-03-07 09:09:59 +0000 IDEProvisioningRepair(<redacted app name>.app): Received response for 84E57539-BC1D-407A-8402-7BCE9F2FD100 @ <https://appstoreconnect.apple.com/xcbuild/v1/certificates>. Code = 0
2025-03-07 09:09:59 +0000 2025-03-07 09:09:59 +0000 IDEProvisioningRepair(<redacted app name>.app): 2025-03-07 09:09:59 +0000 IDEProvisioningRepair(<redacted app name>.app): Response payload: {
"errors" : [ {
"id" : "3d09690a-e26f-497f-b576-25104064387e",
"status" : "403",
"code" : "FORBIDDEN_ERROR",
"title" : "This request is forbidden for security reasons",
"resultCode" : 7495,
"detail" : "You haven't been given access to cloud-managed distribution certificates. Please contact your team's Account Holder or an Admin to give you access. If you need further assistance, contact Apple Developer Program Support at https://developer.apple.com/contact/."
} ]
}
Which is really weird, since I am using an API key with Admin rights. If I create a new key, and use it only for this command, App Store Connect does show the "Last Used" date as today after running the command.
I thought some time might need to pass, but the issue has been persisting since yesterday.
What could be wrong here? I do have a managed Developer ID Application certificate showing in my account but I still can't retrieve it with an Admin right imbued API key.
Topic:
Code Signing
SubTopic:
Certificates, Identifiers & Profiles
Tags:
Signing Certificates
Xcode Cloud
Developer ID
Can someone please explain why Mac app packaging is so farcically convoluted?
Windows app packaging can be picked up in an hour or so.
But I've spent longer trying to fathom how to package the Mac version than I did building the app.
And it's not done with me yet.
Every single line of code requires a deep dive into a new, unrelated skillset.
So, it’s sidebar after sidebar.
Kafka’s ‘The Trial’ comes to mind.
Why does it have to be like this?
Topic:
Code Signing
SubTopic:
Notarization