xcodebuild xcrun simctl

在iOS中打包是一件繁琐且重复耗时的工作,而且手动操作还会遇到一些操作错误的问题。而且随着iOS的渠道增多更加会浪费额外的时间,在前面的文中有讲到过使用jenkins或者fastlane打包的工具,那么本篇将会讲解如果通过xcode提供的的shell编译工具xcodebuild,xcrun,xcrun simtil等进行相应的打包自动化操作。下面会简单的列举一些操作,更多请查看对应的–help。

xcodebuild

xcodebuild负责将工程源文件编译成xxx.app

在terminate中输入以下命令xcodebuild –help:

1
tianww@tortoise-MacBook-Pro xcodebuild --help

可以查看的到xcodebuild的相关的可用命令:

显示xcodebuildversion:xcodebuild –version

显示当前系统安装的sdk:xcodebuild –showsdks

显示当前目录下project Information:xcodebuild –list

需要注意以上命令是需要在当前的工程.xcodeproj下执行

清理iphoneos下的.app文件xcodebuild clean

1
$xcodebuild clean -workspace BeiBeiAPP.xcworkspace -scheme beibei -configuration release -sdk iphoneos SYMROOT=`pwd`/build_yueyu

以下是通过xcodebuild生成workspace类型的.app文件,注意如果是xcodeproj类型打包的话就选择-project,注意此时需要设置好项目的codesign选择自动即可。

1
$xcodebuild -workspace BeiBeiAPP.xcworkspace -scheme beibei -configuration release -sdk iphoneos build SYMROOT=`pwd`/build_yueyu

xcrun

xcrun负责给xxx.app(签名)并打包成xxx.ipa

在terminate中输入以下命令xcrun –help,可以查看到xcrun的相关所有的命令:

1
tianww@tortoise-MacBook-Pro xcrun --help

以下通过.app文件生成ipa文件,并且签名的操作

1
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "$distDir/$appName.app" -o "$distDir/$channelId.ipa" --sign "09E378E966D47195A553BE0EF9F0790D4997A9B5"

其中,参数 v 就是 build 结果中最后一行 app 文件的路径,参数 o 是生成的 ipa 文件的路径。

xcrun simctl

通过xcrun simtil相关命令可以调度模拟器的操作,包括安装卸载启动等。

在terminate中输入以下命令xcrun simctl –help,可以查看到xcrun simctl的相关所有的命令:

1
tianww@tortoise-MacBook-Pro xcrun simctl --help

如下简单的写了一个自动启动模拟器,并安装相关APP,并且自动启动的shell脚本:

1
2
3
4
5
6
7
8
echo "ouput xcrun instuments list-->"
xcrun instruments -s #列举当前机器的所有的instruments列表
echo "select instruments device and run--->"
xcrun instruments -w "iPhone 6s (9.3)#[DEB8527E-87D4-4BCE-BDE3-12CAB9463669] (Simulator)" #根据列举的instruments,调用对应的设备
echo "install app-->"
xcrun simctl install booted ~/Desktop/BridgeLabiPhone.app #安装对应地址下的.app文件到上面选择的设备
echo "run app-->"
xcrun simctl launch booted "com.redcat.shandiangou.daily" #启动模拟器,需要传入对应的bundle identifier

参考

1.iOS自动化的打渠道包解决方案

2.xcodebuild 使用手册