如何跳过 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 应用代码签名的方法:
- Select 您在项目导航器中的项目。
- Select 您的应用在目标列表中。
- 点击“构建设置”。
- 点击“全部”。
- 点击“级别”。
- 在搜索字段中输入“身份”。
- 单击应用程序目标列下方的代码签名标识行(在我的示例中标记为“测试”)。 table 的那个单元格可能显示为空。
- 在出现的弹出菜单中,选择“其他...”。
- 在出现的弹出文本框中,删除所有文本,使文本框为空。
- 按 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 建议如果你越狱了,你可以在没有代码签名的情况下构建,但我不确定它的答案现在是否有效
每当我构建我的 Xcode 项目时,在编译我的所有代码后,它需要 forever 才能完成 "signing product."(我相信这是因为该项目包括大约 200 MB 的资源需要签名。)我想在开发过程中跳过代码签名,这样构建可以更快地完成。我该怎么做?
您可以尝试将您的资源移动到一个单独的包目标,然后将该目标的 .bundle 产品添加到您应用的“复制包资源”构建阶段——理想情况下,应用构建应该能够使用包的签名(仅当包的内容更改时才需要重新生成)而不必单独重新签署资源。
要关闭代码签名,请转到您的项目并定位 "Build Settings",搜索 "Code Signing Identity",将它们的值更改为 "Don't Code Sign"。
要使其生效,您需要分别更改项目和所有目标中的此值。
自 Xcode10 起,以下是关闭 macOS 应用代码签名的方法:
- Select 您在项目导航器中的项目。
- Select 您的应用在目标列表中。
- 点击“构建设置”。
- 点击“全部”。
- 点击“级别”。
- 在搜索字段中输入“身份”。
- 单击应用程序目标列下方的代码签名标识行(在我的示例中标记为“测试”)。 table 的那个单元格可能显示为空。
- 在出现的弹出菜单中,选择“其他...”。
- 在出现的弹出文本框中,删除所有文本,使文本框为空。
- 按 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 建议如果你越狱了,你可以在没有代码签名的情况下构建,但我不确定它的答案现在是否有效