ios打包的关于xcodebuild和xctool的使用教程
xctoo简介:facebook那帮人,耐不住每天打包的烦恼,搞了一些自动化工具。基于xcodebuild封装了一层形成了xctool。
xctool有哪些好处呢?
1、它可以从命令行构建和运行单元测试,这和xcode.app从图形化界面上达到一样的效果。如果你为ios设置了持续集成,那么这就非常重要了。你想要能够自动化运行测试,那些测试与你的开发人员在本地计算机上运行的完全相同,而xcodebuild不会用和xcode.app相同的方式来构建和运行测试。在xcode 4中,苹果把单元测试集成到了xcode中——与“构建”和“运行”一起,有一个新的“测试”动作;使用xcode scheme,你可以选择启用或者禁用哪些单元测试;如果你依赖于ios模拟器(也就是应用程序测试)来编写测试,那么xcode会自动载入模拟器并运行测试。这些都是很大的改进,但看起来苹果并没有把这些改进融入到xcodebuild中,那使得自动化构建和测试非常困难。
2、 另一个重大的问题是构建和测试失败的报告。使用xcodebuild,你会得到大量文本输出,其中包含编译命令、编译错误和警告以及ocunit的测试输出。如果你想要自动确定哪个组件编译失败,或者哪个单元测试失败,那么你就需要编写自己的正则表达式解析器,那也是我们和其他ios社区中的人一直在做的工作。那会有效果,但实在很麻烦。有了xctool,我们会让xcodebuild和ocunit测试运行器把构建输出和测试结果作为json对象的结构化流输出。 这让我们可以很容易地以需要的形式来显示构建和测试结果。例如,我们创建了一个报表,以吸引人的、带有颜色的输出形式来显示结果(https://fpotter_public.s3.amazonaws.com/xctool-uicatalog.gif)。 还有人使用这来把测试结果输出为junit xml,那在流行的jenkins构建系统中会显示得很好。>>>>
xctool的使用:常用命令在他们工程的readme里有详细描述和例子:https://github.com/facebook/xctool/blob/master/readme.md
xctool不支持指定target如-target; 必须用scheme例如
path/to/xctool.sh \ -project yourproject.xcodeproj \ -scheme yourscheme \ build
xctool指定打印报告
path/to/xctool.sh \ -workspace yourworkspace.xcworkspace \ -scheme yourscheme \ -reporter plain:/path/to/plain-output.txt \ build
可以指定的格式如下
pretty: a text-based reporter that uses ansi colors and unicode symbols for pretty output (the default).
plain: likepretty, but with no colors or unicode.
phabricator: outputs a json array of build/test results which can be fed into thephabricatorcode-review tool.
junit: produces a junit/xunit compatible xml file with test results.
json-stream: a stream of build/test events as json dictionaries, one per line(example output).
json-compilation-database: outputs ajson compilation databaf build events which can be used byclang toolingbased tools, e.g.oclint.
user-notifications: sends notification to notification center when action is completed(example notifications).
teamcity: sends service messages toteamcitycontinuous integration server
bibibi一堆,不知道大家愿意不愿意看 我们来整点实际上手的。 下面用xcodebuild和xctool实际动手打几个包来练练手。
一:fuckfuckfuckfuck 测试了半天xcode8以后不支持xctool了 汗!!!!!!
二:我们回到xcodebuild上
project_path=$(pwd)
echo "project_path:${project_path}"
schemename="funnyproject"
outputpath="${project_path}/outputdir"
echo "outputpath:${outputpath}"
#xcodebuild clean -workspace ${schemename}.workspace -scheme ${schemename} -configuration debug
xcodebuild -project $schemename.xcodeproj -scheme $schemename clean
xcodebuild archive -project $schemename.xcodeproj -scheme $schemename -archivepath "${outputpath}/${schemename}.xcarchive" -configuration debug
xcodebuild -archivepath "${outputpath}/${schemename}.xcarchive" -exportpath "${outputpath}/${schemename}.ipa" -exportoptionsplist "${outputpath}/exportoptions.plist" -exportarchive
//这里有个参数exportoptionsplist 需要收到打包导出文件夹里有这个文件,相当于一个配置文件,用这个文件来导出包,把这个文件copy到当前目录即可
#-exportoptionsplist "${outputpath}/${schemename}.plist"
#xcodebuild -exportarchive -exportsigningidentity 'developer id application: my team'
#xcodebuild -exportarchive -archivepath -exportpath -exportoptionsplist
#xctool -workspace gwmovie.xcworkspace -scheme gwmovie -sdk iphonesimulator run-tests
echo "${seconds}s"
上一篇: 柴进是有丹书铁券的,这个丹书铁券就真的没什么用吗?
下一篇: C语言的单引号和双引号实例讲解