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

相关文章

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

Python利用PySpark和Kafka实现流处理引擎构建指南

《Python利用PySpark和Kafka实现流处理引擎构建指南》本文将深入解剖基于Python的实时处理黄金组合:Kafka(分布式消息队列)与PySpark(分布式计算引擎)的化学反应,并构建一... 目录引言:数据洪流时代的生存法则第一章 Kafka:数据世界的中央神经系统消息引擎核心设计哲学高吞吐

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.