Build phase中通过shell修改info.plist中
只使用pod的同学搜一下"ERROR ITMS-90060: "This bundle is invalid. The value for key CFBundleShortVersionString 'adaff276015b8322fa5d2060e265940acf01c8e7' in the Info.plist file must be a period-separated list of at most three non-negative integers.""中的adaff276015b8322fa5d2060e265940acf01c8e7,改成Int.Int.Int的格式就行.
使用carthage的同学,恭喜你, 成功节省了时间
某些第三方库的作者会在Build Phases里加个配置, 修改info.plist中内容, 比如下图
我感觉除了给小白挖坑之外这个build phase完全没意义如果你想给你的同事挖坑的话就这么干, info.plist中的版本号必须为以小数点分隔的整数, 如果是上图中的git版本号, 你的同事打包的时候完全不知道info.plist出了什么问题, 整个电脑都搜不到这个版本号...
附上shell代码
git=$(sh /etc/profile; which git)
git_release_version=$("$git" describe --tags --always --abbrev=0)
number_of_commits=$("$git" rev-list master --count)
target_plist="$TARGET_BUILD_DIR/$INFOPLIST_PATH"
dsym_plist="$DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME/Contents/Info.plist"
for plist in "$target_plist" "$dsym_plist"; do
if [ -f "$plist" ]; then
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $number_of_commits" "$plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString ${git_release_version#*v}" "$plist"
fi
done
上面粗体部分就是第三方库作者挖的坑, git_release_version加后面的运算符得到的肯定不是整数, 比如我得到的是adaff276015b8322fa5d2060e265940acf01c8e7,呵呵,脑门子都要抠烂了都不知道哪出了问题