我想编写一个脚本,可以从应用程序的 Info.plist 中读取 Bundle Identifier 或版本号等信息。Xcode 似乎没有在其环境变量中提供该信息。有没有其他方法可以让它们进入 sh/bash?
问问题
40365 次
5 回答
68
该defaults
命令可以读/写任何 plist 文件,只需给它一个路径减去.plist
扩展名:
$ defaults read /Applications/Preview.app/Contents/Info CFBundleIdentifier
com.apple.Preview
这会CFBundleIdentifier
直接从应用程序包的Info.plist
文件中提取值。
默认值也适用于二进制 plist,无需任何额外步骤。
于 2013-07-15T02:46:54.510 回答
50
使用 Apple 的应用程序 PlistBuddy,可以将字符串分配给 var,如下所示:
#!/bin/sh
BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${BUILD_ROOT}/${INFOPLIST_PATH}")
如果您在“运行脚本”构建阶段运行此脚本,则 BUILD_ROOT 和 INFOPLIST_PATH 是 Xcode 设置的变量。
于 2010-12-02T01:39:43.947 回答
5
这个命令对我有用:
/usr/libexec/PlistBuddy -c 'print ":CFBundleIdentifier"' Info.plist
于 2019-05-21T12:53:36.683 回答
4
您可以直接从构建的产品中读取文件。但是,如果您在编辑器中查看 info.plist 文件本身,您将看到 shell 变量本身。例如,Bundle ID 具有以下 shell 命令:
com.yourcompany.${PRODUCT_NAME:rfc1034identifier}
你可以调用${PRODUCT_NAME:rfc1034identifier}
任何 Xcode 运行的 shell 脚本,它应该被填充。
于 2010-12-01T20:58:39.457 回答
3
Mac 上安装了一个名为 PlistBuddy 的命令行程序,它可以读取/写入 plist 中的值。在终端中输入“man PlistBuddy”以获取更多信息。
于 2010-12-01T21:52:32.207 回答