iOS 一键打包上传Automator+shell

1. shell

文件夹buildScript

我这里在工程(demo)根目录下新建了一个buildScript文件夹用来存放

  • 1.脚本文件 ABuild.sh
  • 2.配置文件 AppStoreExportOptions.plist
文件夹autoBuild

这个文件会在执行脚本后自动生成,用来存放

  • xcarchive
  • ipa 等

1.1 xcodebuild:

查看功能参数介绍命令: man xcodebuild
查看targets,scheme命令: xcodebuild -list

workspace结构

基本配置:(由于我把脚本放在了项目根目录下,这里只需要改一下scheme)

BuildConfiguration=Release # 打包Release or Debug
SCHEMENAME=demo      # 项目scheme名 这里为demo
SOURCEPATH=$PWD    # 项目路径

DATE=`date +%Y%m%d_%H%m`
# 打包目标路径
IPAPATH=$SOURCEPATH/autoBuild/$DATE
IPANAME=$SCHEMENAME_$DATE.ipa
clean:
#  clean
xcodebuild clean \
-workspace $SOURCEPATH/$SCHEMENAME.xcworkspace \
-scheme ${SCHEMENAME} \
-configuration ${BuildConfiguration}
if [[ $? != 0 ]]; then
    exit
fi
archive:

这里是xcode9.3,不再使用xcrun了.

# archive
xcodebuild archive \
-workspace $SOURCEPATH/$SCHEMENAME.xcworkspace \
-scheme ${SCHEMENAME} \
-configuration $BuildConfiguration \
-archivePath $IPAPATH/${SCHEMENAME}.xcarchive

if [ -e $IPAPATH ]; then
    echo "build OK"
else
    echo "build fail"
    exit 1
fi
-exportArchive:
# 导出 ipa包
xcodebuild -exportArchive \
-archivePath $IPAPATH/${SCHEMENAME}.xcarchive \
-exportPath ${IPAPATH}/${SCHEMENAME} \
-exportOptionsPlist ${SOURCEPATH}/buildScript/AppStoreExportOptions.plist

if [ -e ${IPAPATH}/${SCHEMENAME} ]; then
    osascript -e 'display notification "打包成功!" with title "${IPAPATH}/${SCHEMENAME}"'
    echo "Archive OK"
    open ${IPAPATH}/${SCHEMENAME}
else
    echo "Archive fail"
fi

打包成功后,执行osascript推送通知到mac桌面上,然后用finder打开ipa路径

1.2 validate + upload :

使用altool发布到itunes connect中
altoolPath="/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"
[email protected]
applepassword=xxx

#validate
"$altoolPath" --validate-app \
-f "${IPAPATH}/${SCHEMENAME}/${IPANAME}"\
-u "$appleid"\
-p "$applepassword"\
-t ios \
osascript -e 'display notification "Release To AppStore" with title "Validate Complete!"'

#upload
"$altoolPath" --upload-app \
-f "${IPAPATH}/${SCHEMENAME}/${IPANAME}" \
-u "$appleid" -p "$applepassword" \
-t ios \
--output-format xml
osascript -e 'display notification "Release To AppStore" with title "Upload Complete!"'

如需上传ipa到其他平台,如fir,蒲公英,在这里添加上传脚本就行

2. Automator

iOS 上有Workflow,Mac有Automator。
这里Automator + shell甚至都不用,用终端敲命令,直接一键完成


csdn参考链接

  • 打开Automator
  • 新建“服务”
  • 修改“服务”收到服务程序
  • 加入流程一
    1. Automator应用界面左侧,点击“变量“,在搜索框中输入“path“,拖拽到中间区域.
    2. 在下方“路径“中选择项目(demo),完成.
  • 加入流程二
    1. Automator应用界面左侧,点击“操作“,在搜索框中输入“apple“,选择“运行appleScript”拖拽到中间区域.
    2. (* Your script goes here *) 替换成:
    tell application "Terminal"
      activate
      do script "cd " & input & " && . buildScript/ABuild.sh"
    end tell
    
  1. command + s保存Workflow
  2. 最后打开Xcode查看是否有这个 service



总结:

在学习shell的过程中,准备写点东西练习,于是接触到打包工具xcodebuild,altool上传,fir等,继而接触到Mac的Automator 和 iOS中的Workflow。
所以很多不熟练的知识点都应该亲自去实现一遍,这样会有很多触类旁通的机会。

本文Workflow,shell的github链接

Automator官方链接
altool官方链接

你可能感兴趣的:(iOS 一键打包上传Automator+shell)