签名OS X应用程序的开发人员ID在代码签名无效时崩溃

时间:2014-12-16 16:53:56

标签: xcode macos code-signing

我正在尝试构建我的应用,以便我可以与测试人员分享。我的应用程序指定权利(iCloud)所以我必须签名。为了分发签名的构建,我想我需要使用'开发者ID'来签名,我已经完成了。应用包似乎已正确签名 - 正在运行:

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

报告:

<my app>: accepted
source=Developer ID

但是当我运行应用程序时它会崩溃 - “代码签名无效”异常。

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

2 个答案:

答案 0 :(得分:5)

我发现我误解了很多事情。

首先 - 我很确定它会崩溃,因为虽然代码签名有效,但我还是尝试使用仅适用于从应用商店下载的应用的功能(iCloud);该应用程序需要由Apple签署才能运行。

其次 - 开发者ID签名的应用不使用配置文件;这些是适合生产的应用程序,可以在应用程序商店之外进行实际分发(只要它们不使用仅限应用商店的功能)。

那么如何共享构建以便测试人员可以运行它并使用其iCloud功能?答案是我像往常一样构建开发构建,作为开发人员签名,但创建匹配的配置文件,包括我的测试人员机器的UUID。然后,我使用&#39;导出为Mac应用程序&#39;导出已存档的应用程序。应用程序和配置文件都需要传递给测试人员 - 他们只需双击它就可以安装配置文件以启动配置文件管理器。

这花了我几个小时才弄明白 - 我不认为从文件中可以清楚地知道所有这些事情是如何相关的,所以我希望这对某人有用! ;)

答案 1 :(得分:1)

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

这很干净并构建了项目:

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