Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the point of Code signing "Debug" or "Release" in XCode?

CodeSigning

Referring to the picture, I'm not understanding what is the point having an option to sign the "Debug" or "release" if it is useless as I have try to research. The only thing we are suppose to sign is the "Any iOS SDK". I've also did a binary diff to check that signing Debug and Release creates no difference in the _CodeSignature/CodeResources file.

Anyone?

like image 892
mskw Avatar asked Mar 21 '13 15:03

mskw


1 Answers

To run any app on the device, it needs to be signed by an authorized developer and contain a valid provisioning profile (signed by Apple) granting permission to run on a device.

In order to attach a debugger to your app (or use Instruments) the provisioning profile needs to contain entitlements that allow this.

The "Development" provisioning profiles and certificates which you generate in the portal allow you to do this debugging, whereas the release profiles (for the app store) disable it. This is why you have both "Release" and "Debug" configurations for a project, each with different provisioning profile / identity pairs selected.

The "Any iOS SDK" part is just a way to further change a build setting based on the compilation environment. For example, you may wish to change a compiler setting when running on the Simulator (to disable/enable certain test features).

Technically this "Any iOS SDK" part isn't required for the signing identity, and none of the other build settings have this extra field by default when you create an iOS project. You may even be able to delete it, but I'm not sure if Xcode will behave.

like image 110
Mike Weller Avatar answered Sep 22 '22 23:09

Mike Weller