包含此页的版本:
不含此页的版本:
代码签名是为应用程序创建代码签名的过程。此签名保证了应用程序的完整性并防止任何篡改。Apple 设备使用应用程序的代码签名来检测开发人员创建代码签名后所做的更改。如果应用程序没有代码签名,设备会在用户打开它之前警告用户。
注意:您必须对应用程序进行代码签名,以使用 Xcode 命令行或Unity 构建自动化Unity 项目的持续集成服务,可自动执行在 Unity 服务器上创建构建的过程。更多信息
请参阅术语表.
Unity 在其生成的每个 macOS 版本中添加一个代码签名,称为签名身份。若要对应用程序进行公证,Apple 要求代码签名包含用于识别开发者的加密签名,例如开发者 ID 证书。
要创建新的开发者 ID 证书,请使用以下步骤:
.cer.要对您的应用程序进行公证,Apple 需要使用应用程序标识符来识别它。有两种方法可以获取应用程序标识符:在 Unity 中,或在应用程序的信息属性列表文件中。
获得应用程序标识符后,您可以将其注册给 Apple。为此,请使用以下步骤:
权利是代码签名包含的权限或限制,用于控制应用程序可以执行的作。
要为应用程序设置权利,请使用以下步骤:
.entitlements文件扩展名。例如,如果将应用程序命名为 MyProject,请创建一个名为MyProject.entitlements.<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
</dict>
</plist>
这些权利是 macOS 应用程序拥有强化运行时所需的最低权利。如果您的应用程序需要更多权利,请将其添加到此列表中。
要对应用程序进行代码签名,您需要使用命令行。在您的计算机上,打开终端并导航到应用程序所在的目录。
若要确保您具有处理代码签名所需的读取权限,请运行以下命令,其中"application_name.app"是您的应用程序的名称:
chmod -R a+xr "application_name.app"
若要对应用程序进行代码签名,请在其中运行以下命令:
"application_name.app"是您构建的应用程序。"application_name.entitlements"是权利文件的名称。"Developer ID Application : XXX (YYY)"是您的签名标识。codesign
--deep
--force
--verify
--verbose
--timestamp
--options runtime
--entitlements "application_name.entitlements"
--sign "Developer ID Application : XXX (YYY)" "application_name.app"
此命令通过应用程序捆绑文件夹工作,对所有文件进行签名,添加安全时间戳,并将您设置的权利嵌入到签名中。
使用--deep选项可能会导致代码签名出现问题。这是因为:
它将相同的代码签名选项和权利应用于它签名的所有代码。
它只对它找到的代码文件进行签名。如果系统希望查找数据的位置有代码文件,请使用--deep不对这些代码文件进行签名。
有关--deep选项以及如何解决问题,请参阅 签署您的代码。