设置包中的更新版本无法通过iphone

时间:2013-01-08 13:30:47

标签: iphone objective-c ios xcode settings.bundle

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

  

version = /usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $SRCROOT/AppName/AppName-Info.plist / usr / libexec / PlistBuddy   “$ SRCROOT / AppName / Settings.bundle / Root.plist”-c“设置   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>

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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