iOS自动构建以及打包命令(xcodebuild,xcrun)

2024-01-07 04:58

本文主要是介绍iOS自动构建以及打包命令(xcodebuild,xcrun),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

两个命令的语法以及使用方法,资料比较多,到处都可以找到,比如:

iOS 自动构建命令——xcodebuild

基于xcodebuild和xcrun的自动化打包

iphone-命令行编译之--xcodebuild


xcodebuild负责将工程源文件编译成xxx.app
xcrun负责给xxx.app(签名并)打包成xxx.ipa

构建APP

xcodebuild(1) Mac OS X Developer Tools Manual Page

1. build Xcode项目

构建一个Xcode项目,在项目目录下运行xcodebuild就可以了

xcodebuild [-project projectname] [-target targetname ...] [-configuration configurationname][-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...][-userdefault=value ...]

如果是单target单schema,直接xcodebuild不指定任何参数,就生成relaase版本真机模式的app

比如:



(1)"CompileC"使用"clang"编译每个文件



(2) "LD":链接成不同架构


(3) "lipo":创建通用库


(4) 处理资源

ibtool处理storyboard文件,actool处理Assets文件


(4) "dsymutil":生成dSYM文件


(5) 链接资源



(6) 签名、验证


至此,build结束


2. build workspace

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

xcodebuild -workspace workspacename -scheme schemename [-destination destinationspecifier][-destination-timeout value] [-configuration configurationname][-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...][-userdefault=value ...]

比如:


注意:workepacename是指带 .xcworkspace后缀的完整名字


3. xcpretty

xcpretty is a fast and flexible formatter for xcodebuild

其实就是用来格式化(美化)xcodebuild命令行工具输出日志的一个小工具,安装命令:

gem install xcpretty

更多使用方法见项目首页: https://github.com/supermarin/xcpretty


xcodebuild输出日志如下图所示:



是不是“惨不忍睹”啊,那用 xcpretty表现一下吧,执行如下命令:

xcodebuild | xcpretty



打包IPA

xcrun工具

xcrun-Apple Developer

命令如下:
xcrun -sdk iphoneos PackageApplication -v 源app路径 -o 输出的ipa路径




最关键的就是zip,做下压缩处理

xcodebuild

其实从上面就可以看出,建议 PackageApplication用`xcodebuild -exportArchive`来替换

(1)执行 xcodebuild clean 进行清除

(2)执行 xcodebuild archive -scheme "xxx" -configuration "Release" -archivePath "xxx/1.xcarchive"
其中 scheme 参数需要对应到工程 mobile target 名称
configuration 为固定的 Release
archivePath 指定导出的 .xcarchive 文件的位置
这个命令就相当于Xcode中的"Archive"菜单


它和PackageApplication的不同之处在于:
PackageApplication基于生成的app打包,xcodebuild archive是基于源代码编译生成然后打包


(3) 执行 xcodebuild -exportArchive -archivePath "xxx/1.xcarchive" -exportPath "xxx/1.ipa" -exportFormat IPA -exportProvisioningProfile "XC: *"
其中 archivePath 跟上个命令参数对应
exportPath 为导出 ipa 文件的目录
exportForma IPA为固定值,
exportProvisioningProfile 是 provisioning profile 的名称,与创建工程时所选的 provisioning profile 有关

如果Xcode工程已经配置好了证书的话,exportProvisioningProfile参数可以不用添加
xcodebuild -exportArchive的功能跟xcrun PackageApplication一样




这篇关于iOS自动构建以及打包命令(xcodebuild,xcrun)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/578798

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略