代码签名是为应用程序创建代码签名的过程。此签名可保证应用程序的完整性,防止任何篡改。Apple 设备使用应用程序的代码签名来检测开发人员创建代码签名后进行的更改。如果应用程序没有代码签名,设备会在用户打开它之前发出警告。
注意:您必须为应用程序进行代码签名,才能使用 Xcode 命令行 或 Unity Build Automation面向 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
选项的更多信息以及如何解决相关问题,请参阅 为您的代码签名。