| 
 | 1 | +# 项目自动、打包  | 
 | 2 | + | 
 | 3 | +#赋予权限  | 
 | 4 | +#chmod 777 auto_ipa.sh   | 
 | 5 | + | 
 | 6 | +#如果只需要导出ipa则只需要设置 PROJECT_TYPE 的值, 其它值不需要填写  | 
 | 7 | +#如果你不需要提交到蒲公英 就将 UPLOADPGYER=flase 和 pgyerApiKey=""  | 
 | 8 | +#如果蒲公英需要更新说明则在 脚本后面 添加 栗子: ./auth_ipa.sh 我是版本更新内容  | 
 | 9 | + | 
 | 10 | +#选择项目 xcodeproj or xcworkspace 这里是二选一   | 
 | 11 | +PROJECT_TYPE="xcworkspace"  | 
 | 12 | +#是否需要上传到蒲公英  | 
 | 13 | +UPLOADPGYER=true  | 
 | 14 | +gyerApiKey="12345678910"  | 
 | 15 | + | 
 | 16 | + | 
 | 17 | +#--------------我是分割线-------------------  | 
 | 18 | +#--------------我是分割线-------------------  | 
 | 19 | + | 
 | 20 | +#项目的根目录路径  | 
 | 21 | +PROJECT_PATH="$( cd "$( dirname "$0" )" && pwd )";  | 
 | 22 | + | 
 | 23 | +# 项目target名字  | 
 | 24 | +TARGET_NAME=""  | 
 | 25 | + | 
 | 26 | + | 
 | 27 | +function getFileName(){  | 
 | 28 | + | 
 | 29 | + for file in $(ls $PROJECT_PATH)  | 
 | 30 | + do  | 
 | 31 | + local lastFileName=${file##*.}  | 
 | 32 | + if [[ $lastFileName =~ $PROJECT_TYPE ]]  | 
 | 33 | + then  | 
 | 34 | + TARGET_NAME=$(basename ${file} .$PROJECT_TYPE)  | 
 | 35 | + fi  | 
 | 36 | + done  | 
 | 37 | +}  | 
 | 38 | +getFileName  | 
 | 39 | + | 
 | 40 | +#判断是否获取到当前目录含有 xcode的项目文件  | 
 | 41 | +if [[ "${#TARGET_NAME}" -eq 0 ]]; then  | 
 | 42 | +echo "没有获取到项目名称"  | 
 | 43 | +exit;  | 
 | 44 | +fi  | 
 | 45 | + | 
 | 46 | + | 
 | 47 | + | 
 | 48 | +# 打包环境 Release / Debug  | 
 | 49 | +CONFIGURATION=Release  | 
 | 50 | + | 
 | 51 | +#工程文件路径  | 
 | 52 | + | 
 | 53 | +APP_PATH="${PROJECT_PATH}/${TARGET_NAME}.$PROJECT_TYPE"  | 
 | 54 | + | 
 | 55 | +# Xcode clean  | 
 | 56 | +xcodebuild clean -workspace "${APP_PATH}" -configuration "${CONFIGURATION}" -scheme "${TARGET_NAME}"  | 
 | 57 | + | 
 | 58 | +# 打包目录  | 
 | 59 | +HOME_PATH=$(echo ${HOME})  | 
 | 60 | +DESKTOP_PATH="#{HOME_PATH}/Desktop"  | 
 | 61 | + | 
 | 62 | +# 时间戳  | 
 | 63 | +CURRENT_TIME=$(date "+%Y-%m-%d %H-%M-%S")  | 
 | 64 | + | 
 | 65 | +# 归档路径  | 
 | 66 | +ARCHIVE_PATH="${DESKTOP_PATH}/${TARGET_NAME} ${CURRENT_TIME}/${TARGET_NAME}.xcarchive"  | 
 | 67 | + | 
 | 68 | + | 
 | 69 | +# 导出路径  | 
 | 70 | +EXPORT_PATH="${DESKTOP_PATH}/${TARGET_NAME} ${CURRENT_TIME}"  | 
 | 71 | + | 
 | 72 | + | 
 | 73 | +# plist路径  | 
 | 74 | +PLIST_PATH="${PROJECT_PATH}/ExportOptions.plist"  | 
 | 75 | + | 
 | 76 | +# archive 这边使用的工作区间 也可以使用project  | 
 | 77 | +xcodebuild archive -workspace "${APP_PATH}" -scheme "${TARGET_NAME}" -configuration "${CONFIGURATION}" -archivePath "${ARCHIVE_PATH}"   | 
 | 78 | + | 
 | 79 | +# 导出ipa  | 
 | 80 | +xcodebuild -exportArchive -archivePath "${ARCHIVE_PATH}" -exportPath "${EXPORT_PATH}" -exportOptionsPlist "${PLIST_PATH}"  | 
 | 81 | + | 
 | 82 | + | 
 | 83 | + | 
 | 84 | + | 
 | 85 | + | 
 | 86 | +#上传到蒲公英  | 
 | 87 | +if [ $UPLOADPGYER = true ]; then  | 
 | 88 | + #获取第一个参数  | 
 | 89 | + varBuildUpdateDescription=$1  | 
 | 90 | +   | 
 | 91 | + # 上传蒲公英  | 
 | 92 | + IPAPATH="${EXPORT_PATH}/${TARGET_NAME}.ipa"  | 
 | 93 | +   | 
 | 94 | + echo "~~~~~~~~~~~~~~~~上传ipa到蒲公英~~~~~~~~~~~~~~~~~~~"\  | 
 | 95 | + RESULT=$(curl -F "file=@${IPAPATH}" -F "_api_key=${PgyerApiKey}" -F "buildUpdateDescription=${varBuildUpdateDescription}" https://www.pgyer.com/apiv2/app/upload)  | 
 | 96 | + echo $RESULT  | 
 | 97 | + | 
 | 98 | +   | 
 | 99 | + if [ $? = 0 ]  | 
 | 100 | + then  | 
 | 101 | + echo "\n"  | 
 | 102 | + echo "~~~~~~~~~~~~~~~~上传蒲公英成功~~~~~~~~~~~~~~~~~~~"  | 
 | 103 | + else  | 
 | 104 | + echo "\n"  | 
 | 105 | + echo "~~~~~~~~~~~~~~~~上传蒲公英失败~~~~~~~~~~~~~~~~~~~"  | 
 | 106 | + fi  | 
 | 107 | + | 
 | 108 | +fi  | 
 | 109 | + | 
 | 110 | + | 
0 commit comments