本次操作分为以下几个方面:
收集以下的一些基本信息:
开始在终端运行命令
(注意以下的命令需要在你的项目文件夹下面运行)
构建应用(指定在当前目录下生成build文件夹):
xcodebuild -scheme AwesomeApp -destination ‘platform=iphonesimulator,name=iPhone 6 Plus’ -derivedDataPath build
启动模拟器:
xcrun instruments -w ‘iPhone 6 Plus’
安装应用包(需要在通过以上命令构建好目标应用和启动完成模拟器之后来运行此命令)
xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/AwesomeApp.app
启动模拟器中已经安装好的应用(在该应用已经通过如上命令安装好之后)
xcrun simctl launch booted com.awesome.app
删除该安装包:
xcrun simctl uninstall booted com.awesome.app
如果你需要构建的是一个相当复杂的项目的话,你其实是需要给构建命令指定不少的一些参数的。具体请阅读RTFMs(Read The Fucking Manuals:阅读那该死的使用手册!)。如果你是像我一样是个懒虫的话,请通过编写一些脚本来自动完成这些步骤吧。
原文:Build And Run iOS Apps In Commmand Line
ios-deploy是一个使用命令行安装ios app到连接的设备的工具,原理是根据os x命令行工程调用系统底层函数,获取连接的设备、查询/安装/卸载app。类似的工具有Fruitstrap,ideviceinstaller、node-ios-device等。
需要使用包管理工具node.js安装,如果未安装node.js,管理员权限执行下列命令
brew install node
安装ios-deploy:
npm install -g ios-deploy
Usage: ios-deploy [OPTION]…
-d, –debug 安装app后,在lldb调试环境唤起app
-i, –id
-c, –detect 检测设备是否连接
-b, –bundle
-a, –args
-t, –timeout
-u, –unbuffered 不缓存stdout
-n, –nostart 调试时不唤起app
-I, –noninteractive 在非交互模式启动 (app异常退出时退出调试)
-L, –justlaunch 启动app并关闭lldb调试
-v, –verbose enable verbose output
-m, –noinstall 不安装app直接启动调试 (-d not required)
-p, –port
-r, –uninstall 安装时先卸载老的app(do not use with -m; app cache and data are cleared)
-9, –uninstall_only 仅仅卸载app. 仅仅和 -1
-1, –bundle_id
-l, –list 列出所有文件
-o, –upload
-w, –download 下载app tree
-2, –to
-D, –mkdir
-R, –rm
-V, –version 打印执行文件版本
-e, –exists 检查指定的bundle id是否安装
-B, –list_bundle_id 列出所有安装的bundle id
-W, –no-wifi ignore wifi devices
// deploy and debug your app to a connected device
ios-deploy –debug –bundle my.app
// deploy and debug your app to a connected device, skipping any wi-fi connection (use USB)
ios-deploy –debug –bundle my.app –no-wifi
// deploy and launch your app to a connected device, but quit the debugger after
ios-deploy –justlaunch –debug –bundle my.app
// deploy and launch your app to a connected device, quit when app crashes or exits
ios-deploy –noninteractive –debug –bundle my.app
// Upload a file to your app’s Documents folder
ios-deploy –bundle_id ‘bundle.id’ –upload test.txt –to Documents/test.txt
// Download your app’s Documents, Library and tmp folders
ios-deploy –bundle_id ‘bundle.id’ –download –to MyDestinationFolder
// List the contents of your app’s Documents, Library and tmp folders
ios-deploy –bundle_id ‘bundle.id’ –list
// deploy and debug your app to a connected device, uninstall the app first
ios-deploy –uninstall –debug –bundle my.app
// check whether an app by bundle id exists on the device (check return code `echo $?`)
ios-deploy –exists –bundle_id com.apple.mobilemail
// Download the Documents directory of the app *only*
ios-deploy –download=/Documents –bundle_id my.app.id –to ./my_download_location
// List ids and names of connected devices
ios-deploy -c
// Uninstall an app
ios-deploy –uninstall_only –bundle_id my.bundle.id
// list all bundle ids of all apps on your device
ios-deploy –list_bundle_id