如何跳过 Xcode 中开发构建的代码签名?

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

每当我构建我的 Xcode 项目时,在编译我的所有代码后,它需要 forever 才能完成 "signing product."(我相信这是因为该项目包括大约 200 MB 的资源需要签名。)我想在开发过程中跳过代码签名,这样构建可以更快地完成。我该怎么做?

您可以尝试将您的资源移动到一个单独的包目标,然后将该目标的 .bundle 产品添加到您应用的“复制包资源”构建阶段——理想情况下,应用构建应该能够使用包的签名(仅当包的内容更改时才需要重新生成)而不必单独重新签署资源。

要关闭代码签名,请转到您的项目并定位 "Build Settings",搜索 "Code Signing Identity",将它们的值更改为 "Don't Code Sign"。

要使其生效,您需要分别更改项目和所有目标中的此值。

自 Xcode10 起,以下是关闭 macOS 应用代码签名的方法:

  1. Select 您在项目导航器中的项目。
  2. Select 您的应用在目标列表中。
  3. 点击“构建设置”。
  4. 点击“全部”。
  5. 点击“级别”。
  6. 在搜索字段中输入“身份”。

  1. 单击应用程序目标列下方的代码签名标识行(在我的示例中标记为“测试”)。 table 的那个单元格可能显示为空。

  1. 在出现的弹出菜单中,选择“其他...”。

  1. 在出现的弹出文本框中,删除所有文本,使文本框为空。

  1. 按 return 关闭弹出窗口。

使用此设置,Xcode 不会签署您的应用程序目标。

如果有人使用 CMake(对于多平台项目)禁用特定目标的代码签名,我使用了这个:

    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"
    )

FWIW for iOS 构建您构建到您的模拟器中,您不需要代码签名。因此无需跳过它。

您只需要 code-signing/Provisioning 物理设备上的配置文件。我不知道如何跳过它们。

这个我没试过的 other answer 建议如果你越狱了,你可以在没有代码签名的情况下构建,但我不确定它的答案现在是否有效