Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 开发者ID签名的OS X应用程序在启动时崩溃,代码签名无效_Xcode_Macos_Code Signing - Fatal编程技术网

Xcode 开发者ID签名的OS X应用程序在启动时崩溃,代码签名无效

Xcode 开发者ID签名的OS X应用程序在启动时崩溃,代码签名无效,xcode,macos,code-signing,Xcode,Macos,Code Signing,我正在尝试构建我的应用程序,以便与测试人员共享。我的应用程序指定了权限(iCloud),因此我必须签名。要分发已签名的构建,我想我需要使用“开发人员ID”对其进行签名,我已经这样做了。应用程序包似乎已正确签名-正在运行: spctl --verbose=4 --assess --type execute <my app> spctl--verbose=4--assessment--type execute 报告: <my app>: accepted source=D

我正在尝试构建我的应用程序,以便与测试人员共享。我的应用程序指定了权限(iCloud),因此我必须签名。要分发已签名的构建,我想我需要使用“开发人员ID”对其进行签名,我已经这样做了。应用程序包似乎已正确签名-正在运行:

spctl --verbose=4 --assess --type execute <my app>
spctl--verbose=4--assessment--type execute
报告:

<my app>: accepted
source=Developer ID
:已接受
source=开发人员ID
但当我运行应用程序时,它崩溃了——一个“代码签名无效”的异常


那么它为什么会崩溃呢?我想我需要包括我创建的配置文件,其中包括测试人员机器的UUID,但是当我尝试从Xcode导出“开发者ID签名的应用程序”时,它总是将配置文件列为“无”,并且无法更改它。我做错了什么?

我发现我误解了很多事情

首先,我很确定它会崩溃,因为虽然代码签名是有效的,但我正在尝试使用只对从应用商店下载的应用可用的功能(iCloud);该应用程序需要由苹果公司签署才能运行

第二,开发者ID签名的应用程序不使用配置文件;这些是可在应用商店之外实际分发的生产应用程序(只要它们不使用仅应用商店的功能)

那么,我如何共享一个构建,以便测试人员能够运行它并使用它的iCloud功能呢?答案是我像往常一样构建了一个开发构建,作为开发人员进行了签名,但创建了一个匹配的配置文件,包括我的测试人员机器的UUID。然后,我使用“导出为Mac应用程序”导出存档的应用程序。应用程序和配置文件都需要传递给测试人员——他们可以通过双击配置文件来打开配置文件管理器来安装配置文件


我花了几个小时才弄明白——我认为从医生那里不清楚所有这些事情是如何联系在一起的,所以我希望这对某些人有用!;)

我建议创建DMG文件并将应用程序放入应用程序文件夹:

这是清洁和构建项目:

xcodebuild   -configuration Release -scheme {SCHEME_NAME} clean build
并创建dmg文件:

hdiutil create -volname {PROJECT_NAME} -srcfolder {...}/Xcode/DerivedData/Build/Products/Debug/{APP_NAME}}.app -ov -format UDZO {SRC_PATH_FORDMG_FILE}/{PRODUCT_NAME}.dmg