2015-07-03 67 views
1

我已經在Xcode中配置了權利,但他們沒有被放入已編譯的應用程序包中。我需要做一些額外的步驟嗎?如何確保應用OS X應用程序權利?

我正在寫一個OS X(用於在AppStore )「開發者ID」 -signed應用,並能夠實現共享與父應用程序,我需要把它們放在同一首的擴展應用程序組。

我在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])自己的子目錄~/Library/Containers,而不是~/Library/Group Containers共享目錄。

+0

正在關鍵'上市這兩個應用com.apple.security.application-groups'? –

+0

@ l'L'l他們不是。文檔說應用程序組的格式是TEAMID.someidentifier,所以這就是我用過的。 – Kornel

+0

這就是我的意思;應用程序組容器是否已創建?由於應用程序組容器的描述只提到:「此容器適用於非面向用戶的內容,如共享緩存或數據庫」,因此每個應用程序可能會將「NSUserDefaults」寫入其自己的容器,這可能很正常。也許可以解釋這種行爲。 –

回答

0

奇妙的是,它開始工作後,我把它換成

  • $(TeamIdentifierPrefix)與實際標識
  • 刪除DerivedData文件夾無處不在,重建一切