iOS Xcodebuild
简介
xcodebuild 是苹果发布自动构建的工具。它在一个Xcode项目下能构建一个或者多个targets ,也能在一个workspace或者Xcode项目上构建scheme,总的来说,用它没错就是了。
用法说明
Tips:在终端输入man xcodebuild,可以看到Description里面有介绍用法。
也可以看官方文档
当你想构建一个Xcode项目,在项目目录下运行xcodebuild
就可以了(目录下面包含着projectname.xcodeproj
文件就行),如果目录下有多个项目,你需要用参数-project
指定一个项目。默认xcodebuild
命令会构建你第一个target的。当然你也可以用-targetname
指定。
如果要构建workspace,你必须指定-workspace
和-scheme
参数。
当然你可以以用就比如-version、-showsdks、-list等一些命令来获取一些项目相关的参数。
构建
在shell里面 [ ]表示这个参数是可选的,< > 表示参数是必须的
话不多说,先上个命令:
xcodebuild [-project projectname] [-target targetname ...] [-configuration configurationname]
[-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...]
[-userdefault=value ...]
- -project 这个很清楚啦?你的项目名字
- -target 这个也很清楚了吧?不过可以通过
xcodebuild -list
获取 - -configrtion 一些参数,也可以通过
xcodebuild -list
获取 - -sdk 这个可由
xcodebuild -showsdks
得到,我一般都是默认 buildaction 这个指的是构建的动作,一般有
build
,analyze
,archive
,test
,install
,clean
,默认当然是build
了还有其他的一些参数比较少用到
来看看
xcodebuild -list
吧Information about project "ThreeDTouchTest":
Targets:
ThreeDTouchTest
ThreeDTouchTestTests
ThreeDTouchTestUITests Build Configurations:
Debug
Release If no build configuration is specified and -scheme is not passed then "Release" is used. Schemes:
ThreeDTouchTest
你们想要的Target有了,Schemes也有了,Configurations也有了,来看看xcodebuild -showsdks
OS X SDKs:
OS X 10.11 -sdk macosx10.11
iOS SDKs:
iOS 9.2 -sdk iphoneos9.2
iOS Simulator SDKs:
Simulator - iOS 9.2 -sdk iphonesimulator9.2
tvOS SDKs:
tvOS 9.1 -sdk appletvos9.1
tvOS Simulator SDKs:
Simulator - tvOS 9.1 -sdk appletvsimulator9.1
watchOS SDKs:
watchOS 2.1 -sdk watchos2.1
watchOS Simulator SDKs:
Simulator - watchOS 2.1 -sdk watchsimulator2.1
构建吧,兄台们,还等什么?接着来看看构建workspace命令是怎么样的
xcodebuild -workspace workspacename -scheme schemename [-destination destinationspecifier]
[-destination-timeout value] [-configuration configurationname]
[-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...]
[-userdefault=value ...]
基本都一样,只不过这里的workspacename跟schemename必须要指定。
命令运行成功后,一般会在你的项目目录下生成build文件夹,你可以在里面看到你的生成的包,还有dSYM文件。(好像对workspace构建后不会在项目目录下生成build文件夹,那你可以在你的命令后面添加SYMROOT=buildDir
指定一个build文件夹)。
对了,还有这个命令可以查看项目设置:
xcodebuild -target <target> -configuration <configuration> -showBuildSettings
生成ipa文件
生成文件使用的是xrun命令:
xcrun -sdk iphoneos -v PackageApplication ./build/Release-iphoneos/xxx.app -o ~/Desktop/xxx.ipa
打包成功后,会在桌面找到你的ipa。
是不是很简单呢?
上传到Fir
这个就更简单了,敬请参照:Fir的命令行客户端
总结
作为开发人员,肯定不可能天天跟着测试人员跑。自动化是非常有必要的,所以会点脚本,肯定不会吃亏。
最后推荐一个好东西:自动构建打包,不是我写的,有这么好的轮子怎么会自已再写一个呢?
参考文档
iOS Xcodebuild的更多相关文章
- iOS xcodebuild 打包app
1.传统的app打包(没有使用cocopods) 在打包之前,先把证书和配置文件选好. step1:打开终端,cd 进入到工程目录中 step2:xcodebuild clean(如果buid文件存在 ...
- IOS开发基础知识--碎片41
1:UIWebView加载本地的HTML NSString *path = [[NSBundle mainBundle] bundlePath]; NSURL *baseURL = [NSURL fi ...
- iOS代码组件化--利用cocoaPods创建私有库
如果项目模块多,模块间逻辑复杂,我们发现多个人同时维护一个代码仓库需要十分小心,一不小心,造成冲突,解决起来很烦,相信很多人都遇到手工删除合并的冲突的文件的经历. 如果利用组件化思想,每个人维护自己的 ...
- iOS组件化开发一使用source管理远端库升级(四)
一.克隆远端库代码到本地选择master分支 1.克隆 2.代码会显示出你所有版本的tag 二.可以在Example目录下验证代码的正确行: cd 到库的文件夹然后 pod install comma ...
- iOS组件化实践
参考资料: http://wereadteam.github.io/2016/03/19/iOS-Component/#more https://casatwy.com/iOS-Modulizatio ...
- github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法
一.上传写好的库到github(我这里使用SourceTree客户端) 1.在github上创建一个仓库 2.将仓库拉倒本地 复制仓库地址 将刚才复制的地址粘贴到这里 3.上传项目到github 将写 ...
- pod出现include of non-modular header inside framework module 错误
今天打包pod 的时候 出现的错误 -> AFNetworking+RX (3.1.0.18) - ERROR | [iOS] xcodebuild: Returned an unsuccess ...
- iOS系统提供开发环境下命令行编译工具:xcodebuild
iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...
- xcodebuild和xcrun实现自动打包iOS应用程序
随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带来的各 ...
随机推荐
- 2016年江西理工大学C语言程序设计竞赛(高级组)
问题 A: jxust 解法:争议的问题(是输入整行还是输入字符串),这里倾向输入字符串,然后判断是否含有jxust就行 #include<bits/stdc++.h> using nam ...
- 扩展当easyui datagrid无数据时,显示特定值。如:没有数据
var myview = $.extend({},$.fn.datagrid.defaults.view,{ onAfterRender:function(target){ $.fn.datagrid ...
- R----lubridata包介绍学习
lubridate包,非常强大,能够识别各种类型的日期.字符型和时间型数据,都是格式比较特别的你数据,在处理时,比较麻烦,但是有了lubridate这个包之后,时间处理变得非常简单,这个包函数命名简单 ...
- iOS Error
1),'libxml/tree.h' file not found Solution: 1. 导入libxml2.dylib 包 2.设置Header Search Paths 为 /usr/inc ...
- [转](一)unity4.6Ugui中文教程文档-------概要
转载请注明出处:http://blog.csdn.net/u010019717更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/forum.php?mod=guid ...
- 使用IE11抓包,防止在网页跳转时抓包数据被清除的方法
引:最近在研究使用python实现模拟登陆各大网站,在使用IE11进行抓包分析网站登陆的逻辑结构的时候,发现每次在抓包的时候,当网页跳转的时候,抓包数据会被清除,让我很是郁闷,最终在查阅相关资料以及自 ...
- JMeter结果分析
- MFC编程入门之十一(对话框:模态对话框及其弹出过程)
加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有了些解了,有个好的开始对于以后的学习大有裨益.趁热打铁,这一节讲讲什么是对话框和非模态对话框,以及模态对话框怎样弹出. 一.模态对话框和非 ...
- 判断json数据是否为空
json数据是没有length这个属性的 ,所以不能直接用.length()方法 我们可以先遍历,然后根据遍历次数求长度 1.在IE上这样遍历json:(js代码) var jsonLength = ...
- Excel 2013中单元格添加下拉列表的方法
使用Excel录入数据的时候我们通常使用下拉列表来限定输入的数据,这样录入数据就很少发生错误了.Excel 2013较以前的版本发生了很大的变化,那么在Excel 2013是如何添加下拉列表的呢? 下 ...