我正在尝试编写一个运行脚本来更新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 有人可以帮忙吗
答案 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消息,但现在手机设置中会显示正确的版本。