Build phase中通过shell修改info.plist中

2017-04-05  本文已影响651人  神秘唤猫人

只使用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,呵呵,脑门子都要抠烂了都不知道哪出了问题

上一篇下一篇

猜你喜欢

热点阅读