美文网首页
Build phase中通过shell修改info.plist中

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

作者: 神秘唤猫人 | 来源:发表于2017-04-05 17:52 被阅读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,呵呵,脑门子都要抠烂了都不知道哪出了问题

    相关文章

      网友评论

          本文标题:Build phase中通过shell修改info.plist中

          本文链接:https://www.haomeiwen.com/subject/pedxattx.html