用于编辑 PROJECT-Info.plist 文件的 CFBundleVersion 字段的 Bash 脚本

2024-03-14

为了建立持续集成系统 Hudson,我编写了一个 bash 脚本来自动构建 Xcode 项目。 此外,在调试配置中,要求我将项目的 svn 修订号插入 PROJECT-Info.plist 文件的 CFBundleRevision 字段中,作为 ${BUNDLE_VERSION}.r${SVN_REVISION} 。

您将在下面找到 PROJECT-Info.plist 文件的源代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
[...]
    <key>CFBundleVersion</key>
    <string>1.0</string>
[...]
</dict>
</plist>

我尝试了下面的 bash 脚本:

sed 'N;s_^.*<key>CFBundleVersion</key>.*<string>[0-9][0-9]*\.[0-9][0-9]*</string>$_<key>CFBundleVersion</key>\
<string>'"$BUNDLE_VERSION"'\.r'"$SVN_REVISION"'</string>_' $PROJECT-Info.plist

此脚本应将“1.0”字符串替换为 ${BUNDLE_VERSION}.r${SVN_REVISION} (当前仅在标准输出中)。 但是,替换可以在没有“N”选项的情况下进行,该选项包括 sed 进程中的下一行,并且一次一行。但有很多行都带有“<string>[...]</string>“ PROJECT-Info.plist 文件中的字符串...

我认为这是我处理两行之间未知字符的方式(“N”选项和“.*”对于任何字符)是错误的。

任何想法 ?

预先感谢,并对我的英语水平不好表示歉意。


使用 PlistBuddy:

# cf. http://davedelong.com/blog/2009/04/15/incrementing-build-numbers-xcode
/usr/libexec/PlistBuddy -h
/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" test.plist
myversion=1.0.5
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion '${myversion}'" test.plist
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于编辑 PROJECT-Info.plist 文件的 CFBundleVersion 字段的 Bash 脚本 的相关文章

随机推荐