Xcode Server bot无法使用defaults命令读取属性列表

时间:2014-04-09 18:31:46

标签: xcode macos command-line nsuserdefaults xcode-server

我的一个目标是外部构建工具,它使用defaults命令读取属性列表。

当bot运行该工具时,defaults命令无法找到指定的默认值:

defaults read /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version CFBundleShortVersionString

> The domain/default pair of (/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version, CFBundleShortVersionString) does not exist

从普通用户的帐户运行相同的命令可以正常工作:

defaults read /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version CFBundleShortVersionString

> 7.1

但由于某种原因,它对_teamsserver用户不起作用:

sudo -u _teamsserver defaults read /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version CFBundleShortVersionString

> The domain/default pair of (/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version, CFBundleShortVersionString) does not exist

......这就是机器人无法构建的原因。

知道为什么这不起作用?

感谢。

1 个答案:

答案 0 :(得分:0)

尝试使用PlistBuddy:

/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version.plist

请注意,从10.9开始,您不应该使用PlistBuddy来修改首选项文件。 Apple添加了一个缓存系统来提高用户首选项的性能,并且不会看到直接对首选项文件进行的更改。在这种情况下,请使用“defaults”命令,该命令使用适当的API进行首选项更改。我的猜测是,在尝试使用带有sudo的“defaults”命令来访问通用plist时,首选项缓存系统也可能会造成麻烦。