您可以通过仅对应用程序的 JavaApplicationStub 和 info.plist 进行签名并从签名中排除“Resources”文件夹来解决此问题。然后,您必须更改构建过程以使用预签名容器。当然,这不是代码设计的意义,但它会起作用;-)
为此,请执行以下步骤:
- 像往常一样创建你的 .app
- 将其移至您的 Mac
- 创建一个包含以下内容的文件“ResourceRules.plist”:
资源规则.plist:
<?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>rules</key>
<dict>
<key>^Resources/</key>
<false/>
<key>^version.plist$</key>
<true/>
</dict>
</dict>
</plist>
现在使用以下命令签名: CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate" codesign -s "Certificate Name" --resource-rules ResourceRules.plist -fv MyApp.app
然后删除 Resource 中的所有内容并验证签名(代码设计 -v -v MyApp.app)。你会看到它仍然有效
在构建过程中使用完整的签名存根。您可以更改资源中的所有内容,但不能更改 info.plist。