本文主要涉及一下几个方面的内容:
1、xcodebuild的介绍
2、使用xcodebuild打包生成Ad-hoc的ipa文件
3、将打包好的文件上传到测试平台
3、将过程脚本化
xcodebuild简介
xcodebuild 是苹果自己发布的自动构建的工具,Xcode的Command Line Tools自带该工具,一般不需要我们手动安装。在Xcode8以前还可以使用xctool来实现,但是xctool在Xcode8以后不再支持build功能,Facebook团队推荐转回官方的xcodebuild,坑爹的我还花了一段时间研究。
我们需要在目标工程目录下执行 xcodebuild 命令,xcodebuild -help可查看相关的说明,里面的说明十分详细。
xcodebuild打包生成
打包ipa我们主要用到以下几条命令:
- xcodebuild clean -project $projectname -scheme $schemeName
清理工程,避免出现一些奇怪的错误- xcodebuild archive -project $projectname -scheme $schemeName -configuration $configuration -archivePath
生成Archive文件- xcodebuild -exportArchive -archivePath $archivePath -exportPath $exportPath -exportOptionsPlist $exportOptionsPlist
从Archive文件导出ipa
-project:项目名称,如果工程目录里面里面有多个工程,必须指定,如果项目使用了cocoapods,此处应该使用-workspace,即
xcodebuild archive -workspace $projectname -scheme $schemeName -configuration $configuration -archivePath
-archivePath:Archive文件导出目的路径
-exportPath:ipa文件导出路径’
-scheme:指定scheme
-configuration:指定版本release或者debug
以上两个可以通过-xcodebuild -list查看可用值
-exportOptionsPlist:打包的相关配置参数,该参数是一个.plist文件路径,里面包含一些我们打包需要用到的配置,例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">;
<plist version="1.0">
<dict>
<key>method</key>
<string>enterprise</string>
<key>compileBitcode</key>
<false/>
</dict>
</plist>
对于大部分情况我们只需要指定这两个参数,更多详细的可参照xcodebuild -help里面的说明。
此外,-list, -showBuildSettings, -showsdks 的参数可以查看项目或者工程的信息。
上传到测试平台
本人使用的是fir,下载安装命令行客户端
fir publish filePath(ipa文件路劲)
如果使用的是其他的发布平台,将上传脚本替换成对应平台的即可
过程脚本化
#!/bin/sh
#项目路径
projectfile=/Users/my/Desktop/PackDemo
#工程文件路径
project=PackDemo.xcworkspace
#scheme名称
scheme=PackDemo
#target名称
target=PackDemo
#编译版本
configuration=Release
#archive文件路径
archivePath=~/desktop/打包/$target/$target.xcarchive
#ipa包导出路径
exportPath=~/desktop/打包/$target
#打包配置文件路径
exportOptionsPlist=$projectfile/exportOptionsPlist.plist
#上传时,ipa包路劲
publishPath=$exportPath/$target.ipa
#进入项目所在文件
cd $projectfile
# 清理工程
xcodebuild clean -workspace $project -scheme $scheme -configuration $configuration
#上传fir
function upload
{
fir publish $publishPath
rm -r $archivePath
}
#导出ipa文件,会在$exportPath路径生成ipa文件
function export
{
xcodebuild -exportArchive -archivePath $archivePath -exportPath $exportPath -exportOptionsPlist $exportOptionsPlist
if [ $? -eq 1 ]
then
echo "ipa导出失败"
read
else
clear
echo "ipa导出成功"
# upload
fi
}
#archive项目,会在$archivePath路径生成PackDemo.xcarchive文件
function archive
{
xcodebuild archive -workspace $project -scheme $scheme -configuration $configuration -archivePath $archivePath
if [ $? -eq 1 ]
then
echo "编译失败"
read
else
clear
echo "编译成功"
export
fi
}
#开始执行
archive
到此完成了自动化打包脚本,本人习惯为每个项目都生成一个对应的脚本,里面写好打包的工程配置,内容都基本相同,只需要修改对应的路径参数即可,每次需要打新的测试包,只需打开对应的脚本文件即可。
另外,Application Loader命令行可以让我们通过脚本上传App Store,详细的教程请参考苹果文档https://itunesconnect.apple.com/docs/UsingApplicationLoader.pdf