问题标签 [plistbuddy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1300 浏览

xcode - PlistBuddy - 添加数组项在终端中有效,但在 bash 脚本中无效

我尝试plistbuddy通过脚本添加自定义字体数组字段来操作我的 Info.plist 文件。命令在终端中成功执行(两者:创建数组条目并添加条目):

正如预期的那样,这会产生很好的 plist 文件:

但是在 bash 脚本 ( test.sh) 中执行相同的命令时会失败:

在这种情况下,仅创建数组,但添加条目失败。我只得到没有那么多描述性错误:

产生这个(只有数组,没有条目):

为什么会发生这种情况,为什么只使用向数组添加条目的命令?我plistbuddy在许多其他地方(在 bash 脚本中)使用,设置、添加和删除简单字段等命令都可以正常工作。

我在脚本方面不是那么好,所以很可能我错过了某种转义或其他 bash 特定的细节。

0 投票
1 回答
876 浏览

ios - Windows 上的 PlistBuddy

我正在将我们的 Xamarin 构建基础架构移动到基于 Windows 的过程中,我遇到了一个问题,即我们的构建脚本当前使用 PlistBuddy 来读取和写入应用程序的 Info.plist 文件。

显然 PlistBuddy 不会在 Windows 上运行。

有没有人见过在 Windows 上与 Plist 文件交互的任何其他解决方案?我见过一些使用 GUI,但我们需要它来拥有 CLI。

0 投票
1 回答
1442 浏览

arrays - 使用 plistBuddy 获取值数组

输出:

如何获取数组中的第一项?

0 投票
1 回答
59 浏览

ios - Ant 脚本 - 如何从 plist 文件中打印一些文本并将其分配给属性

我正在使用 Ant 从 iOS 应用程序中获取捆绑包号。相关脚本如下:

我可以从 exec 中看到正确的结果。但是来自echo的消息总是0。我觉得PlistBuddy->Print没有将结果设置为resultproperty。我对吗?如果是这样怎么做?

提前致谢。

0 投票
1 回答
193 浏览

bash - 以 $HOME 开头的 plist 中存储的路径不会在 bash 脚本命令中扩展

我正在编写一个 bash 脚本来自动化我们的构建过程。我需要将路径存储在设置 plist 文件中,并使用 plistbuddy 在 shell 脚本中检索它。

下面的键指定存档将存储的路径,桌面上的文件夹:

在我的 shell 脚本中,我访问了密钥:

正如我所料,varARCHIVES没有扩展到。/Users/*username*/Desktop/Archives/

我通过创建一个具有相同字符串的 var 进行了测试:

由于此脚本将在未知用户帐户下运行,我如何强制 $HOME 正确展开。

0 投票
1 回答
1512 浏览

ios - 在构建阶段编辑 app.entitlements 文件

我的 Xcode 项目中有几个目标,每个目标都有一个关联的域,但有一个不同的域。

权利文件的屏幕截图

我想为我的所有目标拥有相同的权利文件,并拥有一个带有 PListBuddy 的脚本来更改域的值。

我已经有一个可以在正确编辑文件的构建阶段启动的脚本:

问题是我有一个“可执行文件的签名无效。” 在设备上安装应用程序时出错。

我猜这是因为在被编辑后,权利文件不再对应于配置文件中包含的权利。

你知道是否有办法做我想做的事吗?使用 fastlane、shell 脚本或任何东西......(我有 40 个目标,所以我真的很想为所有这些目标获取一个权利文件)

0 投票
1 回答
983 浏览

bash - 如何使用命令替换来使用 PlistBuddy

我正在尝试以下脚本

上述脚本的输出是Unrecognized Command

OUTPUT 变量的值为

-c “打印:Ant-Conversion” -c “打印:Newitem” -c “打印:区域” -c “打印:联系人”

2>&1添加它是为了打印错误(不存在键)和正确的输出。

keys-updated.txt包含要从 plist 文件中提取的密钥列表(不一定所有都存在于 plist 中)

解决方案(不工作)

尝试了@Nahuel 的解决方案。然而这条线

PLISTBUDDY=$(eval set -- $OUTPUT;/usr/libexec/PlistBuddy "$@" "$FILE")

仅提供plist 中不存在的键列表

这是我在使用@Nahuel 的解决方案后收到的输出

打印:条目,“状态”,不存在

打印:条目,“通知”,不存在

打印:条目,“IsMvnMgrSupported”,不存在

打印:条目,“BuildsetFile”,不存在

打印:条目“RollupClocReportToModule”不存在

打印:条目,“分支”,不存在

打印:条目,“Ant-Conversion”,不存在

打印:条目,“IndexTag”,不存在

打印:条目,“WO”,不存在

打印:条目,“标签”,不存在

打印:条目,“Newitem”,不存在

关于直接在命令行上使用命令

管理员:桌面管理员 $/usr/libexec/PlistBuddy -c “打印:区域” -c “打印:联系人” -c “打印:电子邮件” -c “打印:语言” -c “打印:位置” -c “打印:名称” -c "Print :Notes" -c "Print :Purpose" -c "Print :Track" -c "Print :Type" -c "Print :URL" -c "Print :Status" -c "Print :Notify" -c "打印:IsMvnMgrSupported” -c “打印:BuildsetFile” -c “打印:RollupClocReportToModule” -c “打印:Branches” -c “打印:Ant-Conversion” -c “打印:IndexTag” -c “打印:WO” -c “打印:标签”-c “打印:Newitem”/Users/admin/Desktop/plist-script-output/plist-data/ActiveMQ.plist

输出结果是

监测。呱呱坠地 cddcdcdc 。爪哇。dvfvfvfvfvfvfv。活动MQ。cddcdcdcdc 。来自 Apache Software Foundation 的消息传递 (JMS) 框架。
基础设施 。框架 。jdbcjdbcdjdcnnjn 。打印:条目,“:状态”,不存在。打印:条目,“:通知”,不存在。打印:条目,“:IsMvnMgrSupported”,不存在。打印:条目,“:BuildsetFile”,不存在。打印:条目,“:RollupClocReportToModule”,不存在。打印:条目,“:分支”,不存在。打印:条目,“:Ant-Conversion”,不存在。打印:条目,“:IndexTag”,不存在。打印:条目,“:WO”,不存在。打印:条目,“:标签”,不存在。打印:条目,“:Newitem”,不存在。

0 投票
2 回答
1299 浏览

bash - 如何使用 MAC OSX 中的“默认值”从 plist 文件中一次读取多个值

我有一个 plist 文件,其中包含像

根据默认手册页,可以像这样从 plist 中读取密钥

例如

但是我想使用默认值读取多个键。

以上只产生 的输出Area,而不是City和的输出Country

谁能建议我如何仅使用默认值一次从 plist 中读取多个键?

0 投票
1 回答
503 浏览

macos - 如何将部分 plist 存储到文件中,然后将其合并到另一个 plist?

我需要提取 plist 的一部分,将其存储在文件中,然后将保存的部分加载/合并到另一个 plist 中,用其随附的键和值覆盖现有键。

我知道这PlistBuddy可以极大地帮助该过程,因为您可以通过以下方式读取密钥及其子密钥的一部分: /usr/libexec/PlistBuddy -c "Print :KeyName" /path/to/some.plist

但尚不清楚您是否可以在这里简单地使用文件重定向来保存输出,然后通过Merge带有随附 plist 插入的命令重新加载它。

将非常感谢命令的示例!

0 投票
1 回答
255 浏览

bash - 使用 PlistBuddy 处理 hdiutil 输出

我正在尝试解析在Mac 终端上hdiutil使用的输出PlistBuddy(不使用临时文件),但遇到了一些问题。我尝试了以下方法:

命令 1

hdiutil info -plist | PlistBuddy -c "Print"

输出:

打印 PlistBuddy 的帮助


命令 2

PlistBuddy -c "Print" $(hdiutil info -plist)

输出:

File Doesn't Exist, Will Create: <?xml Invalid Arguments


我不擅长 bash,但我认为 PlistBuddy 不接受 STDIN 但只接受.plist文件作为输入可能是个问题。有什么我遗漏的东西还是我必须创建一个临时文件?