How can I skip code signing for development builds in Xcode?

XcodeMacosCode SigningCodesignBuild Settings

Xcode Problem Overview


Whenever I build my Xcode project, after compiling all my code, it takes forever to finish "signing product." (I believe it's because the project includes about 200 MB of resources that need signing.) I would like to skip the code signing during development, so the build can finish faster. How can I do this?

Xcode Solutions


Solution 1 - Xcode

As of Xcode 10, here is how to turn off code signing for a macOS app:

  1. Select your project in the project navigator.
  2. Select your app in the list of targets.
  3. Click “Build Settings”.
  4. Click “All”.
  5. Click “Levels”.
  6. Type “identity” into the search field.

first six steps

  1. Click on the Code Signing Identity row, under the column for your app target (labeled “test” in my example). That cell of the table might appear empty.

where to click for step 7

  1. In the pop-up menu that appears, choose “Other…”.

pop-up menu

  1. In the popover text box that appears, delete all text so the box is empty.

empty popover

  1. Press return to dismiss the popover.

With this setting, Xcode will not sign your app target.

Solution 2 - Xcode

To turn the code signing off, go to your project and target "Build Settings", search for "Code Signing Identity" change its value to "Don't Code Sign" in both of them.

To make this effective you need to change this value in the Project and all of the Targets separately.

Solution 3 - Xcode

If someone uses CMake (for multi-platform projects) to disable code signing for specific target I used this:

    set_target_properties(MyAppTarget PROPERTIES
        XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ""
        OUTPUT_NAME "My nice application name"
        MACOSX_BUNDLE TRUE
        MACOSX_BUNDLE_BUNDLE_NAME "My nice application name"
        MACOSX_BUNDLE_INFO_PLIST path/to/Info.plist
        MACOSX_BUNDLE_BUNDLE_VERSION ${MY_APP_VERSION}
        MACOSX_BUNDLE_LONG_VERSION_STRING "My nice application name v${MY_APP_VERSION}"
        MACOSX_BUNDLE_SHORT_VERSION_STRING "${MY_APP_VERSION}"
        MACOSX_BUNDLE_GUI_IDENTIFIER "com.my.app"
        MACOSX_BUNDLE_COPYRIGHT "(C) 2019 My Company"
        MACOSX_RPATH TRUE
        MACOSX_FRAMEWORK_IDENTIFIER com.myapp.bundle.id
        XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@loader_path/Libraries"
        RESOURCE "${RESOURCE_FILES}"
        XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME TRUE
        XCODE_ATTRIBUTE_EXECUTABLE_NAME "exec_name"
    )

Solution 4 - Xcode

You might try moving your resources to a separate bundle target, then adding the .bundle product of that target to your app’s “copy bundle resources” build phase — ideally the app build should then be able to use the bundle’s signature (which will only need to be regenerated when the bundle’s contents change) instead of having to re-sign the resources individually.

Solution 5 - Xcode

FWIW for iOS builds that you build into your simulator, you don't need code-signing. Hence no need to skip it.

You only need code-signing/Provisioning Profile on physical devices. I'm not aware of how you can skip them.

This other answer that I have not tried suggest that you can build without code-signing if you jailbreak but I'm not sure if it's answer is valid now

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiontbodtView Question on Stackoverflow
Solution 1 - Xcoderob mayoffView Answer on Stackoverflow
Solution 2 - XcodeAbcd EfgView Answer on Stackoverflow
Solution 3 - XcodeMarek RView Answer on Stackoverflow
Solution 4 - XcodeNoah WitherspoonView Answer on Stackoverflow
Solution 5 - XcodemfaaniView Answer on Stackoverflow