iOS 自动构建命令——xcodebuild

article/2025/1/11 20:49:48

想想当初天天来到公司,每天需要做一件事就是打开Xcode打包ipa,上传到fir。日复一日月复一月年复一年的做着同样的事情,作为有志成为优秀工程师的我来说,这是必须要解决的问题,所以决定自动化解决问题。

简介

xcodebuild 是苹果发布自动构建的工具。它在一个Xcode项目下能构建一个或者多个targets ,也能在一个workspace或者Xcode项目上构建scheme,总的来说,用它没错就是了。

用法说明

Tips:在终端输入man xcodebuild,可以看到Description里面有介绍用法。

也可以看官方文档

当你想构建一个Xcode项目,在项目目录下运行xcodebuild就可以了(目录下面包含着projectname.xcodeproj文件就行),如果目录下有多个项目,你需要用参数-project指定一个项目。默认xcodebuild命令会构建你第一个target的。当然你也可以用-targetname指定。

如果要构建workspace,你必须指定-workspace-scheme参数。

当然你可以以用就比如-version、-showsdks、-list等一些命令来获取一些项目相关的参数。

之前文章使用xcodebuild+ xcrun的PackageApplication打包,但是已经不推荐使用了。下面使用arhive和exportArchive来打包

Archive包

在shell里面 [ ]表示这个参数是可选的,< > 表示参数是必须的

话不多说,先上个命令:

    xcodebuild archive -workspace 项目名称.xcworkspace -scheme 项目名称 -configuration 构建配置 -archivePath archive包存储路径 CODE_SIGN_IDENTITY=证书 PROVISIONING_PROFILE=描述文件UUID  
  • -workspace 这个就是项目名
  • -scheme 可以通过xcodebuild -list获取
  • -configration 一些参数,也可以通过xcodebuild -list获取,一般使用Debug、Release
  • -archivePath archive后的路径
  • CODE_SIGN_IDENTITY 证书的Inentity
  • PROVISIONING_PROFILE 描述文件UUID

来看看xcodebuild -list吧,看看怎么获取scheme和configration

     Information about project "ThreeDTouchTest":Targets:ThreeDTouchTestThreeDTouchTestTestsThreeDTouchTestUITestsBuild Configurations:DebugReleaseIf no build configuration is specified and -scheme is not passed then "Release" is used.Schemes:ThreeDTouchTest

如果不需要特定去指定证书和Provisioning文件,那可以省略上面这两个参数也可以。不过还是得说一下这两参数怎么获取:

证书Identity获取:

打开你的钥匙串访问->选中其中一个证书->右键->显示简介,把标题复制出来就可以了。

格式是:

iPhone Distribution: Beijing xxoo yyooxx Technology Service CO., Ltd. (UA11AAJJKK8)

证书.png

获取Provisioning文件UUID

在xcode8.0以上,Provisioning文件的位置是:

/Users/用户名/Library/MobileDevice/Provisioning Profiles

在终端上面进入的文件夹。使用/usr/bin/security可以把Provisioning文件解密

/usr/bin/security cms -D -i 098a87e3-11fe-463d-75aa-12345678adba.mobileprovision

在终端输出整个plist文件,里面包含着所有的信息

对了,还有这个命令可以查看项目设置:

xcodebuild -target <target> -configuration <configuration> -showBuildSettings

生成ipa文件

PackageApplication已经不推荐使用了。下面说一下另外一种打包的方法:

xcodebuild -exportArchive -archivePath archive文件的地址.xcarchive -exportPath 导出的文件夹地址 -exportOptionsPlist exprotOptionsPlist.plist CODE_SIGN_IDENTITY=证书 PROVISIONING_PROFILE=描述文件UUID  

同样,如果你不需要的指定证书和Provisioning文件,可以把上面的两个参数去掉,它会根据你的Xcode配置去匹配。

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>teamID</key><string>UA11AAJJKK8</string> //TeamID<key>method</key><string>ad-hoc</string> //ad-hoc打包<key> compileBitcode</key> //是否编译bitcode<false/></dict></plist>

下面是关于其他字段的解释:

Available keys for -exportOptionsPlist:compileBitcode : BoolFor non-App Store exports, should Xcode re-compile the app from bitcode? Defaults to YES.embedOnDemandResourcesAssetPacksInBundle : BoolFor non-App Store exports, if the app uses On Demand Resources and this is YES, asset packs are embedded in the app bundle so that the app can be tested without a server to host asset packs. Defaults to YES unless onDemandResourcesAssetPacksBaseURL is specified.iCloudContainerEnvironmentFor non-App Store exports, if the app is using CloudKit, this configures the "com.apple.developer.icloud-container-environment" entitlement. Available options: Development and Production. Defaults to Development.manifest : DictionaryFor non-App Store exports, users can download your app over the web by opening your distribution manifest file in a web browser. To generate a distribution manifest, the value of this key should be a dictionary with three sub-keys: appURL, displayImageURL, fullSizeImageURL. The additional sub-key assetPackManifestURL is required when using on demand resources.method : StringDescribes how Xcode should export the archive. Available options: app-store, ad-hoc, package, enterprise, development, and developer-id. The list of options varies based on the type of archive. Defaults to development.onDemandResourcesAssetPacksBaseURL : StringFor non-App Store exports, if the app uses On Demand Resources and embedOnDemandResourcesAssetPacksInBundle isn't YES, this should be a base URL specifying where asset packs are going to be hosted. This configures the app to download asset packs from the specified URL.teamID : StringThe Developer Portal team to use for this export. Defaults to the team used to build the archive.thinning : StringFor non-App Store exports, should Xcode thin the package for one or more device variants? Available options: <none> (Xcode produces a non-thinned universal app), <thin-for-all-variants> (Xcode produces a universal app and all available thinned variants), or a model identifier for a specific device (e.g. "iPhone7,1"). Defaults to <none>.uploadBitcode : BoolFor App Store exports, should the package include bitcode? Defaults to YES.uploadSymbols : BoolFor App Store exports, should the package include symbols? Defaults to YES.

上传到Fir

这个就更简单了,敬请参照:Fir的命令行客户端

总结

作为开发人员,肯定不可能天天跟着测试人员跑。自动化是非常有必要的,所以会点脚本,肯定不会吃亏。


转载链接:https://www.jianshu.com/p/3f43370437d2


http://chatgpt.dhexx.cn/article/Rdj8JVU0.shtml

相关文章

iOS开发-思维导图(初级)

简介&#xff1a;本脑图只整理了一些自认为比较基础的东西&#xff08;比较主观&#xff09;&#xff0c;可能适用于部分初学者&#xff0c;对于正在进阶的小伙伴参考意义可能不大哦~&#x1f601; 如果有小伙伴觉得哪些知识也需要加到图中&#xff0c;欢迎评论区留言&#xff…

IOS开发之证书

分别为证书、appID、设备、描述文件 一、证书Certificates 证书类型&#xff1a; Software&#xff1a;开发证书&#xff08;程序员开发app&#xff09;、分发证书&#xff08;真机调试&#xff09;、发布证书&#xff08;正式发布&#xff09; Services&#xff1a;通知证书&…

怎么学习iOS,如何学习iOS开发?

近年来ios app开发在不断发展中,各中小型也如雨后春笋纷纷露头,像广州商侣软件公司这样的app开发企业可以说是处处可见,然而ios app开发到底该如何入手,如何才能如鱼得水般在这个领域里面畅游呢? 一、什么是ios app开发 ios app开发是指针对苹果公司所生产的手机的ios系统…

零基础学习 iOS 开发

作者&#xff1a;匿名用户 链接&#xff1a;https://www.zhihu.com/question/22000647/answer/114700565 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 作为一名混迹iOS开发圈近4年的码农&#xff0c;资历不深不浅&a…

IOS小白入门指南

加入ios 项目已经一个多月了&#xff0c;本篇文章主要介绍IOS开发入门的一些基础知识&#xff0c;帮助想学习iOS开发的人更有效率地学习。 目录 需要的计算机基础 开发语言选择 IOS两种开发语言的异同 Objective-C和swift的相同点&#xff1a; 二者的不同点&#xff1a…

java ios开发_使用Java开发iOS应用

自从使用Objective C开发原生的iOS应用以来,就有许多使用别的语言来开发iOS应用的替选方案。比如说,下面就列出了一些: PhoneGap, 使用HTML/JS来开发 RubyMotion,使用Ruby ionic,使用AngularJS开发 我最近发现的一个的是RoboVM,你可以通过它来用Java开 自从使用Objective…

IOS开发进阶学习资料(提升必备)

最近整理了下IOS学习资料&#xff0c;包含了入门、进阶、性能优化、面试和学习书籍&#xff0c;算是比较全面的&#xff0c;在这里分享给大家&#xff0c;希望对大家有用。 先晒出IOS学习路线图&#xff0c;大家照着图谱修炼。 学习社区 objc中国 learn IOS Ray Wenderlich…

iOS开发进阶(二):走近iOS原生开发

文章目录 一、前言二、知识储备三、 Object-C四、启动流程五、拓展阅读 一、前言 在应用 uni-app 进行跨平台APP开发过程中&#xff0c;发现并不支持视频播放小窗功能&#xff0c;且插件市场提供的插件用户体验不好&#xff0c;遂决定自行开发 uni-app 原生插件。 uni-app原生…

iOS开发学习系列(1)———Swift语言入门

缘起 对于成为全栈开发者的目标而言&#xff0c;很好奇自己几年前怎么就没想过iOS开发的事情。iOS好歹也是移动操作系统两巨头之一。反思了下&#xff0c;有可能是因为之前对Object-C太无感导致的。现在趁着Swift&#xff0c;借这个机会重新整理iOS的开发。本系列虽然是iOS开发…

IOS开发学习资料集合(开发必备)

最近整理了下IOS学习资料&#xff0c;包含了入门、进阶、性能优化、面试和学习书籍&#xff0c;算是比较全面的&#xff0c;在这里分享给大家&#xff0c;希望对大家有用。 先晒出IOS学习路线图&#xff0c;大家照着图谱修炼。 学习社区 objc中国 learn IOS Ray Wenderlich…

iOS开发学习路线

那么现在说正题,如何成为负责任的开发者? 关注作者:点击关注二字可以找到大神组织首先要负责,对自己的项目负责。如果是自己新开的项目,要保证随时都能清晰的想到项目当中每个地方是怎么实现的,测试或者用户反馈了问题以后,能立马想到可能的错误原因。 如果是接手的项目…

对项目需求管理的认识和体会

下面是对一位项目经理关于需求管理的访谈&#xff1a; 做了那么多个项目&#xff0c;我深深感到对项目的需求把握管理好了&#xff0c;是项目成功的关键。对需求的管理大概有那么几个活动&#xff0c;首先是需求获取&#xff0c;这是一个确定和理解客户的需要和期望的过程&…

项目范围管理:WBS

创建工作分解结构是把项目可交付成果和项目工作分解成较小的、更易于管理的组件的过程。工作分解结构&#xff08;WBS&#xff09;是项目管理的基础&#xff0c;项目的所有规划和控制工作都必须基于工作分解结构。如果没有工作分解结构&#xff0c;就谈不上项目的进度计划、成本…

项目治理-项目需求范围管理:范围蔓延、镀金

范围蔓延、镀金 场景1&#xff1a; “甲方需要做一个App电商系统&#xff0c;项目对接非常满意&#xff0c;快项目结尾的时候&#xff0c;甲方的老板说&#xff0c;听说现在流行小程序&#xff0c;这个电商系统一定要在小程序上面也可以运行&#xff0c;如果不支持&#xff0…

怎样使用GitLab管理项目?

1. issue 介绍 一般 master 分支默认是被锁住的&#xff0c;其目的是保护该分支。普通开发人员可以创建 issue 后建立对应的分 支然后去完成任务。完成issue 后便要合并分支&#xff0c;只需发送 merge request ,等待 owner 审核才能合并到 master 分支上。合并的过程中可能…

软件需求管理过程

软件需求管理过程 软件需求管理过程 软件需求管理的过程 需求确认(确认需求规格) 需求获取–>需求分析–>需求规格编写–>需求验证需求变更(开发过程中的需求管理) 需求获取&#xff0c;需求分析&#xff0c;需求规格编写&#xff0c;需求验证&#xff0c;需求变更…

项目管理——需求收集与管理

项目管理——需求收集与管理 VS 需求收集对于产品经理来说&#xff0c;都已经属于老生常谈了。在产品的立项和设计前需要先做需求调研&#xff0c;在这里我们就来谈谈如何进行需求收集和管理。 一、需求收集目的 需求收集的目的就是了解用户目前所需要的是什么&#xff0c;最迫…

项目管理--需求分析

项目管理-需求分析 一、需求分析概述软件需求分类 需求分析是什么? 二&#xff0c;需求分析的任务需求分析的任务主要有两个方面&#xff1a;需求分析的困难&#xff1a;需求分析过程需求管理 三&#xff0c;需求分析案例需求分析的过程包括&#xff1a;exp:需求陈述需求陈述中…

谈产品研发项目需求及需求变更管理

公司经过2年多所研发的产品&#xff0c;终于正式试用了&#xff0c;中间经历过了无数次调整&#xff0c;产品研发过程是不断迭代的过程&#xff0c;发生需求变更、设计变更的情况非常多&#xff0c;为不影响创新和开拓思路&#xff0c;研发处在开放状态&#xff0c;当前阶段是时…

需求管理搞不定?这4招帮你解决项目需求管理

当你坐下来分析一个失败项目的时候&#xff0c;会发现很多项目在需求分析阶段就出现了问题&#xff0c;而需求变更也或多或少和开始的需求有关。 但项目需求就像神秘人一样&#xff0c;不知道是什么、不知道从哪来、不知道想干啥&#xff0c;搞清项目需求简直像一场读心术… …