背景:想通过命令行完成打包,且可以让测试人员使用该包。
主要步骤分4部
1、git check out 代码及 pull 更新
2、xcodebuild 生成 xxx.app
3、xcrun 生成 xxx.ipa
4、上传到fir.im,生成短链可进行下载。(https://fir.im 该网站进行注册账号,未实名每天可下载10次,实名后,每天可下载100次,还有收费版)
如下是代码
#!/bin/bash
#声明scheme
SCHEMENAME=xxx
#git 的分支名字
BRANCHNAME=develop
#获取当前时间,为后面生成文件夹用
DATE=$(date +%Y%m%d_%H%M)
#当前绝对路径
SOURCEPATH=$(cd "$( dirname $0 )" && pwd)
#声明 最终存放ipa包的路径
IPAPATH=$SOURCEPATH/AutoBuildIPA/$BRANCHNAME/$DATE
#ipa包名字
IPANAME=debug_$DATE.ipa
# git update - checkout不做赘述
git checkout $BRANCHNAME
if [ $? -ne 0 ]; then
exit 1
fi
# git pull 拉取最新代码
git pull
if [ $? -ne 0 ]; then
exit 1
fi
# delete trash files 删除文件
if [ -e $IPAPATH/* ]; then
mv $IPAPATH/* ~/.Trash
if [ $? - ne 0 ]; then
echo "error: delete trsh files failed!"
exit 1
fi
fi
#开始 bulid, 注意, 我用的项目没有pods,所以 是-project ,若您的项目有pod,那么用 -workspace /路径/xxx.xcworkspace
xcodebuild \
-project xxx.xcodeproj \
-scheme $SCHEMENAME \
-configuration Debug \
clean \
build \
-derivedDataPath $IPAPATH
if [ -e $IPAPATH ]; then
echo "Successful"
else
echo "error: Bulid failed!!"
exit 1
fi
#xcrun 生成 xxx.ipa
xcrun -sdk iphoneos PackageApplication \
-v $IPAPATH/Build/Products/Debug-iphoneos/$SCHEMENAME.app \
-o $IPAPATH/$IPANAME
if [ -e $IPAPATH/$IPANAME ]; then
echo "\n----------------------\n\n"
echo "ipa build successful!"
echo "\n----------------------\n\n"
echo "Current branch log:"
git log -2
open $IPAPATH
else
echo "ipa build failed!!"
fi
#fir 上传 fir.im token
fir login fea56171d442bc8cb*******
fir publish $IPAPATH/$IPANAME
注意 :
1、其中 xxx 换成你项目名字
2、fir 需要下载,命令 gem install fir-cli
3、fir 用户的token如何获取。 如图1
若出现以下错误,解决办法
1、ld: library not found for -lPods 类似这个错,应该是项目有pods
将 -project xxx.xcodeproj \
换成 -workspace /路径/xxx.xcworkspace 即可。
注:可以通过 xcodebuild -list 查看。
2、xcrun: error: unable to find utility "PackageApplication"
在旧版本里找到该文件,拷贝到新版xcode 就行
路径是 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
3、fir 命令出错
Failed to open TCP connection to api.fir.im:80 (getaddrinfo: nodename nor servname provided, or not known)
应该是网络问题,您断开网络重新试试。
4、fir publish 时可能会报 File does not exist
是fir 上传时,文件路径有问题。请检查路径
希望以上部分对你有帮助,如有什么问题,留言联系。