美文网首页
shell打包

shell打包

作者: 韩微 | 来源:发表于2019-11-13 15:45 被阅读0次
    
    ##!/bin/bash -ilex
    #set -u
    set +v
    set +xe
    #set +x
    
    
    #注意:脚本目录和xxxx.xcodeproj要在同一个目录,如果放到其他目录,请自行修改脚本。
    #要build的target名
    TARGET_NAME=CCPiPhoneSDK
    
    
    #################################
    
    PROJECT_NAME=$TARGET_NAME
    ### 打包模式 Debug/Release 默认是Release
    DEVELOPMENT_MODE=Release
    SCRIPT_DIR=$(pwd)
    PROJECT_DIR=$SCRIPT_DIR
    BUILD_DIR=$SCRIPT_DIR/Build
    #真机build生成的头文件的文件夹路径
    DEVICE_DIR_INCLUDE=./${PROJECT_NAME}/Device
    #真机build生成的.a文件路径
    DEVICE_DIR_A=${BUILD_DIR}/${DEVELOPMENT_MODE}-iphoneos/lib${PROJECT_NAME}.a
    #模拟器build生成的.a文件路径
    SIMULATOR_DIR_A=${BUILD_DIR}/${DEVELOPMENT_MODE}-iphonesimulator/lib${PROJECT_NAME}.a
    #目标文件夹路径(也就SDK的文件:.a文件 和 头文件)
    INSTALL_DIR=${BUILD_DIR}/Products/${PROJECT_NAME}
    #目标头文件的文件夹路径
    INSTALL_DIR_Headers=${BUILD_DIR}/Products/${PROJECT_NAME}/Headers
    #目标.a路径
    INSTALL_DIR_A=${BUILD_DIR}/Products/${PROJECT_NAME}/lib${PROJECT_NAME}.a
    
    printlog () {
    TIME=$(date +%F_%T)
    if [ $1 == "info" ];then
    echo -e "\n[$TIME][INFO]  $2 \n"
    elif [ $1 == "error" ];then
    echo -e "\n[$TIME][ERROR] ****** $2 ******\n"
    elif [ $1 == "warn" ];then
    echo -e "\n[$TIME][WARN] $2 \n"
    else
    echo -e "\nprintlog parameter error.\n"
    fi
    }
    
    check_result() {
    if [ $? -eq 0 ];then
    printlog info "$* 成功"
    else
    printlog error "$* 失败"
    exit 250
    fi
    }
    
    ###################################################################
    info () {
    printlog info "Current TarGet_Name: $TARGET_NAME"
    printlog info "打包模式: $DEVELOPMENT_MODE"
    printlog info "工程名称: $PROJECT_NAME"
    printlog info "脚本路径:  $SCRIPT_DIR"
    printlog info "工程路径: $PROJECT_DIR"
    printlog info "Build路径: $BUILD_DIR"
    printlog info "真机build生成的头文件的文件夹路径: $DEVICE_DIR_INCLUDE"
    printlog info "真机.a路径: ${DEVICE_DIR_A}"
    printlog info "模拟器build生成的.a文件路径: $SIMULATOR_DIR_A"
    printlog info "SDK的文件夹路径: ${INSTALL_DIR}"
    printlog info "头文件的文件夹路径: ${INSTALL_DIR_Headers}"
    printlog info "目标.a路径: ${INSTALL_DIR_A}"
    }
    
    ###################################################################
    ready() {
    printlog info "编译前准备..."
    sleep 3
    printlog info "判断${BUILD_DIR}是否存在,存在即删除."
    if [ -d "${BUILD_DIR}" ]
    then
    rm -rf "${BUILD_DIR}"
    fi
    printlog info "判断${INSTALL_DIR} 是否存在,存在即删除.并重新创建目录${INSTALL_DIR}"
    if [ -d "${INSTALL_DIR}" ]
    then
    rm -rf "${INSTALL_DIR}"
    fi
    mkdir -p "${INSTALL_DIR}"
    printlog info "准备完成."
    }
    
    compile () {
    ###################################################################
    
    printlog info "编译开始..."
    #echo "======盒子已经准备好了,开始生产.a 并合成装到盒子里吧======"
    #build之前clean一下
    xcodebuild -target ${target_Name} -configuration ${development_mode} -sdk iphonesimulator clean
    xcodebuild -target ${target_Name} -configuration ${development_mode} -sdk iphoneos clean
    printlog info "模拟器build"
    xcodebuild -target ${TARGET_NAME} -configuration ${DEVELOPMENT_MODE} -sdk iphonesimulator #1>/dev/null
    check_result "模拟器build"
    printlog info "真机build"
    xcodebuild -target ${TARGET_NAME} -configuration ${DEVELOPMENT_MODE} -sdk iphoneos #1>/dev/null
    check_result "真机build"
    printlog info "编译完成."
    sleep 3
    
    ###################################################################
    
    printlog info "编译后操作"
    printlog info "复制头文件到目标文件夹"
    cp -R "${DEVICE_DIR_INCLUDE}" "${INSTALL_DIR_Headers}"
    printlog info "合成模拟器和真机.a包"
    if [ -f "${SIMULATOR_DIR_A}" ];then
    lipo -create "${DEVICE_DIR_A}" "${SIMULATOR_DIR_A}" -output "${INSTALL_DIR_A}" 1>/dev/null
    check_result "合成"
    else
    printlog info "将真机包导入目标文件"
    cp -R "${DEVICE_DIR_A}" "${INSTALL_DIR}"
    fi
    # -f 判断文件是否存在
    if [ -f "${INSTALL_DIR_A}" ];then
    printlog info "验证合成包是否成功"
    lipo -info "${INSTALL_DIR_A}"
    check_result "验证"
    fi
    
    printlog info "本次任务完成"
    printlog info "打印最终文件路径: ${INSTALL_DIR}"
    printlog info "列出目录下所有文件"
    ls "${INSTALL_DIR}"
    }
    info
    ready
    compile
    
    

    相关文章

      网友评论

          本文标题:shell打包

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