Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does CODE_SIGN_IDENTITY[sdk=iphoneos*] mean

I am puzzled that there are two entries to enter for the code sign identity. Am not sure whether this was the same in Xcode 3 but in Xcode 4 I see (in the Build Settings) something like this:

Config

In the project.pbxproj for "Distribution" it looks like this

            CODE_SIGN_IDENTITY = "iPhone Distribution";
            "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";

I cannot find anywhere any documentation what the difference is, but maybe I am overlooking it (in the documentation). I am confused about which one to set and now I set both. But I do not like the "I don't know what I am doing but I it works" feeling. It seems to me like the first one (CODE_SIGN_IDENTITY) is not needed for iPhone development. Because for "Debug" and "Release" I have not changed the value since I migrated from Xcode 3 to Xcode 4 and in project.pbxproj I can see only "CODE_SIGN_IDENTITY[sdk=iphoneos*]" is present.

So back to my question does anyone know what "CODE_SIGN_IDENTITY[sdk=iphoneos*]" means and what is the differences to CODE_SIGN_IDENTITY and whether CODE_SIGN_IDENTITY is needed and whether Apple has something documented about this anywhere?

like image 437
hol Avatar asked Oct 12 '22 11:10

hol


1 Answers

It's a new Xcode4 UI, which is quite complicated at first sight. You should read Xcode 4 User Guide and Xcode 4 Transition Guide. I'll try to explain it ...

Let's focus on Distribution row only. It does contain iPhone Distribution. The row below (Any iOS SDK) does contain more specific settings, which do overwrite Distribution row settings. In other words, you can set default signing identity for Distribution builds, but you can overwrite it for specific SDKs.

You can do this for Debug, Release, etc. It just depends on your settings / project complexity.

These things can be also set in different levels - iOS default, project default, target default. To see these levels, just go to Build Settings and switch Combined to Levels view (just under the Build Settings tab). Here you can find values for all levels. Resolved column does contain value, which will be really used.

It's like a matrix where you can overwrite default/project/target settings in a row and build configuration settings for specific SDK's in a column.

like image 144
zrzka Avatar answered Oct 14 '22 04:10

zrzka