博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS一键打包自动改build并输入更新日志上传发布应用到Fir,Pgyer
阅读量:5756 次
发布时间:2019-06-18

本文共 7501 字,大约阅读时间需要 25 分钟。

复制expert.sh到项目根目录

如果打包失败,先用Xcode打一次就正常了

使用方法

$ sh expert.sh输入序号,选择打包方式,按回车继续 1. development 2. ad-hoc      3. app-store   4. enterprise  复制代码

## 计时SECONDS=0## 默认值project=`find . -name *.xcodeproj | awk -F "[/.]" '{print $(NF-1)}'`##========================根据实际情况修改(一般不用修改)========================## true or false 默认trueis_workspace="true"## 打包方式对应的TARGETS 默认项目名称target_development=${project}target_adhoc="${project}Beta"target_appstore=${project}target_enterprise="${project}Beta"## TARGETS对应的plist 不需要加后缀 默认Info.plistinfo_development="Info"info_adhoc="Info"info_appstore="Info"info_enterprise="Info"## Release or Debug 默认Releaseconfiguration="Release"## Bitcode开关 默认打开compileBitcode=true## 签名方式 默认自动签名,如果打包失败,先用Xcode打一次就正常了signingStyle="automatic"## 工作目录 build目录在.gitignore添加忽略path_build="build"## 自动修改build方式  不修改:none 跟随时间变化:date 自动加1:numberauto_build="date"## pgyer APIKey  https://www.pgyer.com/account/apipgyer_api_key=""## fir APIKey  https://fir.im/appsfir_api_token=""##=========================================================================##================================选择打包方式================================if [ -n "$1" ]then    method="$1"else    echo "\033[41;1m输入序号,选择打包方式,按回车继续 \033[0m"    echo "\033[31;1m1. development \033[0m"    echo "\033[32;1m2. ad-hoc      \033[0m"    echo "\033[33;1m3. app-store   \033[0m"    echo "\033[34;1m4. enterprise  \033[0m"    read parameter    method=${parameter}fitarget=""info=""methodStyle=""if [ -n ${method} ]then    if [ ${method} = "1" ]    then        methodStyle="development"        target=${target_development}        info=${info_development}    elif [ ${method} = "2" ]    then        methodStyle="ad-hoc"        target=${target_adhoc}        info=${info_adhoc}    elif [ ${method} = "3" ]    then        methodStyle="app-store"        target=${target_appstore}        info=${info_appstore}    elif [ ${method} = "4" ]    then        methodStyle="enterprise"        target=${target_enterprise}        info=${info_enterprise}    else        echo "参数错误"        exit 1    fifipath_info_plist="${project}/${info}.plist"if [ "${auto_build}" = "date" ]then    #跟随时间变化    buildDate=$(date +%Y%m%d%H%M%S)    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildDate" "$path_info_plist"elif [ "${auto_build}" = "number" ]then    #自动加1    buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$path_info_plist")    buildNumber=$(($buildNumber + 1))    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$path_info_plist"fibundle_build=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" ${path_info_plist}`bundle_version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" ${path_info_plist}`path_package="${path_build}/${target}_${bundle_build}"path_archive="${path_package}/${target}.xcarchive"path_export_options="${path_package}/ExportOptions.plist"if [ -d "${path_package}" ]then    echo "目录${path_package}已存在"else    echo "创建目录${path_package}"    mkdir -pv "${path_package}"fifuncExpertOptionFile() {    if [ -f "$path_export_options" ]    then        rm -rf "$path_export_options"    fi        /usr/libexec/PlistBuddy -c "Add :compileBitcode bool $compileBitcode" "$path_export_options"    /usr/libexec/PlistBuddy -c "Add :signingStyle string $signingStyle" "$path_export_options"    /usr/libexec/PlistBuddy -c "Add :method string $methodStyle" "$path_export_options"}funcExpertOptionFile##==========================================================================##================================填写更新日志================================path_update_log="${path_package}/UpdateLog.txt"funcUpdateLog() {    echo "输入更新日志"    say "输入更新日志"    if [ -n "${pgyer_api_key}" -o  -n "${fir_api_token}" ]    then        rm -rf "$path_update_log"        touch "$path_update_log"        vim "$path_update_log"        count=1        history=""        for line in $(cat "$path_update_log")        do            history+="[${count}] ${line}.  "            count=$[${count}+1]        done                update_log=${history}        echo "更新日志:"        echo ${update_log}    fi}if [ -d "${path_build}" ]then    funcUpdateLogelse    mkdir -pv "${path_build}"    funcUpdateLogfi##==========================================================================##===================================归档====================================if $is_workspacethen    xcodebuild clean -workspace ${project}.xcworkspace \    -scheme ${target} \    -configuration ${configuration}    xcodebuild archive -workspace ${project}.xcworkspace \    -scheme ${target} \    -configuration ${configuration} \    -archivePath ${path_archive}else    xcodebuild clean -project ${project}.xcodeproj \    -scheme ${target} \    -configuration ${configuration}    xcodebuild archive -project ${project}.xcodeproj \    -scheme ${target} \    -configuration ${configuration} \    -archivePath ${path_archive}fi##==========================================================================if [ -d "${path_archive}" ]then    echo "** Finished archive. Elapsed time: ${SECONDS}s **"    echoelse    exit 1fi##==================================导出ipa==================================xcodebuild  -exportArchive \-archivePath ${path_archive} \-exportPath ${path_package} \-exportOptionsPlist ${path_export_options}##==========================================================================file_ipa="${path_package}/${target}.ipa"if [ -f "${file_ipa}" ]then    echo "** Finished export. Elapsed time: ${SECONDS}s **"    say "打包成功"else    exit 1fiechoif [ -n "${pgyer_api_key}" ]then    #上传到pgyer    echo "正在上传到pgyer..."    echo    curl -F "file=@${file_ipa}" -F "_api_key=${pgyer_api_key}" -F "buildUpdateDescription=${update_log}      *https://github.com/OctMon/EasyExpertApp build(${bundle_build})*" https://www.pgyer.com/apiv2/app/upload    echo    say "上传pgyer成功"    echofiif [ -n "${fir_api_token}" ]then    #上传到fir    echo "正在上传到fir..."    echo    fir publish "${file_ipa}" -T "${fir_api_token}" -c "${update_log}      *https://github.com/OctMon/EasyExpertApp build(${bundle_build})*"    echo    say "上传fir成功"    echofiif [ -n "${pgyer_api_key}" -o  -n "${fir_api_token}" ]then    echo "** Finished upload. Elapsed time: ${SECONDS}s **"    echo    while [ "$confirmed" != "y" -a "$confirmed" != "Y" -a "$confirmed" != "n" -a "$confirmed" != "N" ]    do        read -p "删除${path_package}? (y/n):" confirmed    done    if [ "$confirmed" == "y" -o "$confirmed" == "Y" ]; then        rm -rf ${path_package}    fi    unset confirmedfiechoecho "--------------------------------------------------------------------------------"echoecho "[${bundle_build}] ${target} version ${bundle_version}"while [ "$confirmed" != "y" -a "$confirmed" != "Y" -a "$confirmed" != "n" -a "$confirmed" != "N" ]do    read -p "提交版本变更到远程仓库? (y/n):" confirmeddoneif [ "$confirmed" == "y" -o "$confirmed" == "Y" ]then    echo    git add "${path_info_plist}"    git commit -m "[${bundle_build}] ${target} version ${bundle_version}"    git pushfiunset confirmedechoecho "--------------------------------------------------------------------------------"echoecho "--------------------------------------------------------------------------------"echo "?  Congrats"echo "?  ${target} (${bundle_build}) successfully published"echo "?  Finished. Elapsed time: ${SECONDS}s"echo "?  https://github.com/OctMon/EasyExpertApp"echo "?  Tell your friends!"echo "--------------------------------------------------------------------------------"echoif [ -f "${file_ipa}" ]then    open ${path_package}fi复制代码

转载地址:http://gunkx.baihongyu.com/

你可能感兴趣的文章
【React】为什么我不再使用setState?
查看>>
Git原理与高级使用(3)
查看>>
从JDK源码看Writer
查看>>
Express 结合 Webpack 实现HMRwi
查看>>
基于protobuf的RPC实现
查看>>
坚信每个人都能成为品牌
查看>>
JAVA的对象复制
查看>>
打开Office报错
查看>>
我的友情链接
查看>>
AsyncTask简易使用
查看>>
关于PHP sessions的超时设置
查看>>
HAProxy负载均衡原理及企业级实例部署haproxy集群
查看>>
开源中国动弹客户端实践(三)
查看>>
Win 8创造颠覆性体验:预览版关键更新
查看>>
vim在多文件中复制粘贴内容
查看>>
Android ContentObserver
查看>>
文章“关于架构优化和设计,架构师必须知道的事情”
查看>>
疯狂java学习笔记1002---非静态内部类
查看>>
ISA2006实战系列之一:实战ISA三种客户端部署方案(上)
查看>>
TCP服务器
查看>>