如何确保应用 OS X app Entitlements?

How to ensure OS X app Entitlements are applied?

我已经在 Xcode 中配置了权利,但它们没有被放入已编译的应用程序包中。我需要执行一些额外的步骤吗?

我正在编写一个 OS X "Developer ID" 签名的应用程序( 不是 用于 AppStore),并且能够实现一个扩展与父应用程序共享首选项我需要将它们放在同一个应用程序组中。

我在 Xcode 中配置了应用组,我在 $Extension.entitlements$ParentApp.entitlements plist 中看到了它们。

但是,在内置产品中 $Extension.app/Contents/_CodeSignature/CodeEntitlements 类似于没有我配置的组的默认权利文件,并且在父应用程序中根本不存在此文件。

我什至尝试使用显式授权文件再次签署应用程序:

codesign --force --entitlements $ParentApp.entitlements -s "Developer ID" \
   Build/Products/Debug/$ParentApp.app

但同样,它不会添加到 $ParentApp.app/Contents/_CodeSignature/CodeEntitlements

在 运行 时,父应用和扩展似乎不在同一个应用组中:它们将自己的首选项 ([NSUserDefaults…initWithSuiteName:teamIdEtc]) 写入 [=17= 中它们自己的子目录] 而不是 ~/Library/Group Containers.

中的共享目录

神奇的是,它在以下时间开始工作:

  • 我已将 $(TeamIdentifierPrefix) 替换为实际标识符
  • 删除了所有 DerivedData 个文件夹并重建了所有内容