1. shell
文件夹buildScript
我这里在工程(demo)根目录下新建了一个buildScript文件夹用来存放
- 1.脚本文件 ABuild.sh
- 2.配置文件 AppStoreExportOptions.plist
文件夹autoBuild
这个文件会在执行脚本后自动生成,用来存放
- xcarchive
- ipa 等
1.1 xcodebuild:
查看功能参数介绍命令: man xcodebuild
查看targets,scheme命令: xcodebuild -list
基本配置:(由于我把脚本放在了项目根目录下,这里只需要改一下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"
appleid=xxx@.163.com
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
-
新建“服务”
- 修改
“服务”收到
和服务程序
-
加入流程一
- Automator应用界面左侧,点击“
变量
“,在搜索框中输入“path
“,拖拽到中间区域. - 在下方“
路径
“中选择项目(demo),完成
.
- Automator应用界面左侧,点击“
-
加入流程二
- Automator应用界面左侧,点击“
操作
“,在搜索框中输入“apple
“,选择“运行appleScript
”拖拽到中间区域. - 将
(* Your script goes here *)
替换成:
tell application "Terminal" activate do script "cd " & input & " && . buildScript/ABuild.sh" end tell
- Automator应用界面左侧,点击“
-
command + s
保存Workflow -
最后打开Xcode查看是否有这个 service
总结:
在学习shell的过程中,准备写点东西练习,于是接触到打包工具xcodebuild,altool上传,fir等,继而接触到Mac的Automator 和 iOS中的Workflow。
所以很多不熟练的知识点都应该亲自去实现一遍,这样会有很多触类旁通的机会。