I was just stating that it showed entitlements listed when running
both commands you asked me to run.
Shot.
we had to have the QA person install the embeded.provisioningprofile
that is within the .apps contents folder.
And chaser!
Before we start, some background on entitlements:
Entitlements are only effective when applied to a main executable. When the system starts a process running that executable it gives that process those entitlements. In this context the entitlements applied to any libraries are ignored.
Certain entitlements are restricted, that is, they must be explicitly allowed by a provisioning profile. Your Apple Arcade entitlement is a prime example of this.
The previous point is true even if the entitlement is applied to something that’s not the main executable.
So, here’s what’s happening:
When you launch the app the system checks its entitlements.
The entitlement check for your main executable passes because of the embedded profile.
The entitlement checks for your various libraries fail because the system can’t find their profile (you could in theory give each library its own embeded.provisioningprofile but that’d be quite silly).
When you install the profile in System Preferences > Profiles the system can find the profile and these checks now succeed.
The solution here is to only apply entitlements to your main executable. After all, that’s the only place where they do any good, and applying them elsewhere can actively cause harm.
Most folks who hit this problem do so because they’re using
--deep. I recommend against that, as explained in
--deep Considered Harmful. Rather, you should sign each component separately. For an example of this, see
Manual Code Signing Example. And for general advice on how to sign, see
Signing a Mac Product For Distribution.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@apple.com"