开发者ID签名的OS X应用程序在启动时崩溃并显示代码签名无效。

4

我正在尝试构建我的应用程序,以便可以与测试人员共享。我的应用程序指定了授权(iCloud),因此我必须对其进行签名。为了分发已签名的构建版本,我认为需要使用“开发者ID”进行签名,这一步我已经完成。应用程序包似乎已正确签名——运行:

spctl --verbose=4 --assess --type execute <my app>

报告:

<my app>: accepted
source=Developer ID

但是当我运行这个应用程序时,它崩溃了——出现了“代码签名无效”的异常。

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

2个回答

5

我发现我曾经误解了很多问题。

首先 - 我相信它崩溃是因为虽然代码签名有效,但我正在尝试使用只有从应用商店下载的应用程序才能使用的功能(iCloud); 应用程序需要由苹果签名才能运行。

其次 - 开发者ID签名的应用程序不使用配置文件; 这些是实际在应用商店以外分发的生产就绪应用程序(只要它们不使用应用商店专用功能)。

那么如何共享构建以便测试人员可以运行它并使用其iCloud功能?答案是我按照平常一样构建开发版本,作为开发者进行签名,但创建一个匹配的配置文件,其中包括我的测试人员机器的UUID。然后我使用“导出为Mac应用程序”来导出归档的应用程序。必须将应用程序和配置文件都传递给测试人员-他们可以通过双击该文件来打开配置文件管理器来安装配置文件。

这花了我几个小时才搞清楚-我认为从文档中并不清楚所有这些事情是如何相关的,所以我希望这对某些人有用! ;)


1
我建议创建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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接