Xcode Server bot 无法使用默认命令读取属性列表
Posted
技术标签:
【中文标题】Xcode Server bot 无法使用默认命令读取属性列表【英文标题】:Xcode Server bot unable to read property lists using defaults command 【发布时间】:2014-04-09 18:31:46 【问题描述】:我的目标之一是使用默认命令读取属性列表的外部构建工具。
当机器人运行该工具时,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】:尝试改用 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 时,首选项缓存系统也可能是造成问题的原因。
【讨论】:
以上是关于Xcode Server bot 无法使用默认命令读取属性列表的主要内容,如果未能解决你的问题,请参考以下文章
Xcode Server Bot 集成无法使用断言导出存档失败:exportArchive: ipatool failed with an exception
无法使用 OSX Server 3.2.1 在 XCode 6.0.1 中创建 CI Bot
Xcode Server Bot 集成无法导出存档:错误 Domain=IDEDistributionErrorDomain Code=1“无法完成操作。”