1

我正在尝试编写一个运行脚本来更新 Root.plist 中的版本。这是脚本

版本= /usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $SRCROOT/AppName/AppName-Info.plist/usr/libexec/PlistBuddy "$SRCROOT/AppName/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

设置包中的 Root.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>PreferenceSpecifiers</key>
<array>
    <dict>
        <key>Title</key>
        <string>About</string>
        <key>Type</key>
        <string>PSGroupSpecifier</string>
    </dict>
    <dict>
        <key>DefaultValue</key>
        <string>1.0.24</string>
        <key>Key</key>
        <string>version_preference</string>
        <key>Title</key>
        <string>Version</string>
        <key>Type</key>
        <string>PSTitleValueSpecifier</string>
    </dict>
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>

我已按照答案的说明进行操作。创建 .ipa 时版本号更新成功,我可以在 iTunes 中看到新版本。但是当我尝试升级应用程序时,设备显示'1 项无法同步。有关更多信息,请参阅 iTunes。但是,如果手机上的旧应用程序被删除并重新安装,则应用程序安装成功并且正确的版本出现在手机设置中。我正在使用 xcode 4.5.2 谁能帮忙

4

2 回答 2

1

以下脚本用于将当前的 subversion 修订号插入到我们的 plist 中:

G_VERSIONRP="`/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString"  ${TARGET_BUILD_DIR}/${INFOPLIST_PATH}`"
G_BUILDRP="`svnversion -n`"
G_TITLERP="MyApp v"
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:0:Title ${G_TITLERP}${G_VERSIONRP} (${G_BUILDRP})" ${TARGET_BUILD_DIR}/${PRODUCT_NAME}.app/Settings.bundle/Root.plist
于 2013-01-08T15:23:04.973 回答
0

几天后我再次尝试,使用脚本并进行了干净的构建。替换了 iTunes 中的现有副本,同步,它有效!与之前尝试不同的唯一步骤是,早些时候我删除了 iTunes 库中的现有副本并拖入了新副本。不太确定这是否导致 '1 项目无法同步。有关更多信息,请参阅 iTunes 消息,但现在手机设置中确实出现了正确的版本。

于 2013-01-29T09:41:09.490 回答