您可以通过仅对应用程序的 JavaApplicationStub 和 info.plist 进行签名,并从签名中排除“资源”文件夹来解决此问题。然后,必须更改生成过程以使用预签名容器。当然,这不是共同签名的感觉,但它会起作用;-)
为此,请执行以下步骤:
- 像往常一样创建您的.app
- 将其移至 Mac
- 创建一个包含以下内容的文件“ResourceRules.plist”:
ResourceRules.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” codeign -s “Certificate Name” --resource-rules ResourceRules.plist -fv MyApp.app
然后删除资源中的所有内容并验证签名(codeign -v -v MyApp.app)。您将看到它仍然有效
在生成过程中使用完整的已签名存根。您可以更改 参考资料 中的所有内容,但不能更改 info.plist。