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自动打包并发布脚本

时间: 2024-10-08 17:54:24

iOS Xcodebuild的相关文章

iOS xcodebuild 打包app

1.传统的app打包(没有使用cocopods) 在打包之前,先把证书和配置文件选好. step1:打开终端,cd 进入到工程目录中 step2:xcodebuild clean(如果buid文件存在,就把build过程生产出来的原有文件全部删除) step3:xcodebuild -target test -configuration Release(编译,斜体部分需修改为你自己的工程名) 这一步完成之后,你会发现你的工程目录里多一个build文件夹,找到里面的.app文件,下一步使用. st

iOS代码组件化--利用cocoaPods创建私有库

如果项目模块多,模块间逻辑复杂,我们发现多个人同时维护一个代码仓库需要十分小心,一不小心,造成冲突,解决起来很烦,相信很多人都遇到手工删除合并的冲突的文件的经历. 如果利用组件化思想,每个人维护自己的模块对应的代码库,将会大大降低冲突的风险,而且组件化能够很好的给工程解耦. 组件化的第一步就是创建自己的仓库,公司的话需要搭建并维护私有库. 1.查看本地索引库 我们用cocoaPods 的时候,默认使用的是cocoaPods自带的索引库 终端中使用命令 $ pod repo 查看有哪些索引库,这里

iOS系统提供开发环境下命令行编译工具:xcodebuild

iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单来说,Workspace就是一个容器,在该容器中可以存放多个你创建的Xcode Project, 以及其他的项目中需要使用到的文件. 使用Workspace的好处有: 1),扩展项目的可视域,即可以在多个项目之间跳转,重构,一个项目可以使用另一个项目的输出.Workspace会负责各个Project

xcodebuild和xcrun实现自动打包iOS应用程序

随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带来的各种不便. 自动化打包背景介绍 1.背景 随着ios程序发布的渠道逐渐的增多,为每个渠道打包也成为特别耗费时间和体力的一项技术活了,而这一般大多数都是由rd来完成的.这样就占用了 rd很多的开发时间,何不把这些东西写成一个自动化的脚本,然后交给qa 或是 pm来完成这个打包过程了.经过一番调研发现网上

ios shell打包脚本 xcodebuild

#! /bin/bash project_path=$(dirname $0) project_config=Release output_path=~/Desktop build_scheme=YKTicketsApp workspace_name=YKTicketsApp parameter=":p:c:o:s:w:h:" while getopts $parameter optname do case "$optname" in "p" )

使用xcodebuild命令行编译iOS应用遇到的一个错误及解决办法

今天使用自动化生成 iphone App时遇到一个奇怪问题,Xcode编译是好的,但xcodebuild命令行编译iOS编译报下面的错误,在stackoverflow上没有搜到相关的信息,看了搞iOS开发的都不用命令行工具啊.仔细分析错误信息后,找到的解决方法是在工程目录的Frameworks下面删除CoreFoundation.framework /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolc

xcodebuild命令行编译打包iOS应用和企业发布

最近继续完善App的自动生成系统,android App自动生成已经工作的很好了,开始实现iOS App的自动生成,经过在stackoverflow等不断的搜索和实验,终于成功实现了在命令行下实现iOS App编译,压缩,签名等生成企业inhouse应用的过程,比较坑人的一点是最后一行命令可以实现压缩应用的效果,不需要通过xcodebuild exportArchive命令到处压缩的应用, 这个是国外一个blog看到的.关键命令如下: xcodebuild -project "SalesApp.

Jenkins iOS – Git, xcodebuild, TestFlight

Introduction with Jenkins iOS If you are new to continuous integration for mobile platforms then you are in the right place. This article will explain how to setup a fully automated continuous integration environment. To do this we will use the follo

iOS项目通过xcodebuild和xcrun自动发布

最近在研究App的自动生成, 使用Python编写程序替换图标,名称等,然后生成全新的应用. 通常打包采用xcodebuild和xcrun两个命令,xcodebuild负责编译,xcrun负责将app打成ipa. 常见步骤如下: 1.清理工程 /usr/bin/xcodebuild -target targetName clean 2.编译工程 /usr/bin/xcodebuild -target targetName 3.打包 /usr/bin/xcrun -sdk iphoneos Pac