美文网首页Jenkins
Shell脚本修改ipa包内plist文件

Shell脚本修改ipa包内plist文件

作者: Jackie_pc | 来源:发表于2019-02-12 17:44 被阅读0次

    前言

    我们项目是做IOS移动端sdk开发和客户支持的,现在需要写一个脚本,根据客户提供的ipa包,自动修改包内plist文件的版本号。选择了用Shell脚本写。

    思路

    根据客户的ipa包,首先需要解包,然后需要准确定位到我们sdk的plist文件位置,然后使用PlistBuddy进行修改,最后重新压缩成ipa包。

    完整代码

    #!/bin/sh
    
    #脚本接收第一个一个参数是ipa路径 第二个参数是版本号
    bundleVersion="CFBundleVersion"
    shortVersion="CFBundleShortVersionString"
    
    IPA_NAME="ipaTemp.ipa"
    #ipa路径
    IPA_FILE=${1}
    #解压路径
    IPA_DIR="/Users/chen.peng/Desktop/changeSDKVersionTemp"
    
    warningString="错误:"
    noteString="提示:"
    
    
    #删除临时解包目录
    if [ -d "$IPA_DIR" ]; then
    echo "rm changeSDKVersionTemp"
    rm -rf "${IPA_DIR}"
    else
    echo "mkdir changeSDKVersionTemp"
    mkdir -p "${IPA_DIR}"
    fi
    
    #解包IPA
    if [[ -f "$IPA_FILE" ]]; then
    echo "unzip $IPA_FILE begin ..."
    unzip -q "$IPA_FILE" -d "$IPA_DIR"
    if [[ $? != 0 ]]; then
    echo "unzip $IPA_FILE failed"
    exit 2
    else
    echo "unzip $IPA_FILE successed"
    fi
    fi
    
    # 定位到*.app目录
    appDir="$IPA_DIR/Payload/`ls "$IPA_DIR/"Payload`"
    #先查找lcm.bundle所在路径,以防路径不对
    lcmBundle=`find "${appDir}/" -type d -name lcm.bundle`
    lcmInfoPlist="${lcmBundle}/Info.plist"
    echo $lcmInfoPlist
    
    function change {
        value=`/usr/libexec/PlistBuddy -c "Print :${1}" $lcmInfoPlist`
    echo "$value"
    #修改SDK_VERSION
    if [[ -n $value ]]; then
        `/usr/libexec/PlistBuddy -c "Set :${1} ${2}" $lcmInfoPlist`
        echo "设置完成"
    else
        `/usr/libexec/PlistBuddy -c "Add :${1} ${2}" $lcmInfoPlist`
        echo "新增完成"
    fi
    }
    
    
    change $bundleVersion ${2}
    change $shortVersion ${2}
    
    
    #将修改完的文件打包成ipa
    cd ${IPA_DIR}
    zip -r -q $IPA_NAME Payload
    if [[ $? != 0 ]]; then
    echo "zip Payload failed"
    exit 2
    else
    echo "zip Payload successed"
    if [[ -d "$IPA_DIR/Payload" ]]; then
        rm -rf "$IPA_DIR/Payload"
        echo "删除Payload成功"
    fi
    fi
    

    总结

    代码里的解释已经很详细了,主要就是熟悉一下zip、PlistBuddy、find命令的用法。

    相关文章

      网友评论

        本文标题:Shell脚本修改ipa包内plist文件

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