命令行编译/安装/运行/卸载IOS APP

一、模拟器

本次操作分为以下几个方面:

  1. 构建目标应用
  2. 启动一个iOS模拟器
  3. 把该app应用安装到上面启动好的模拟器上面
  4. 运行安装好的app
  5. 从模拟器上卸载掉该app

收集以下的一些基本信息:

  • 需要构建的scheme(比如“AwesomeApp”)
  • 应用bundle id(比如”com.awesome.app”)
  • 模拟器的名称(比如”iPhone6 Plus”)。如果你不想从Xcode的GUI中获取到这些信息,你可以通过查看命令xcrun simtl list的输出来进行收集。

开始在终端运行命令

(注意以下的命令需要在你的项目文件夹下面运行)

构建应用(指定在当前目录下生成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

二、真机

2.1 ios-deploy是什么?

ios-deploy是一个使用命令行安装ios app到连接的设备的工具,原理是根据os x命令行工程调用系统底层函数,获取连接的设备、查询/安装/卸载app。类似的工具有Fruitstrap,ideviceinstaller、node-ios-device等。

2.2 安装

条件

  • iOS 开发证书
  • Xcode6.4+

安装

需要使用包管理工具node.js安装,如果未安装node.js,管理员权限执行下列命令

brew install node 

安装ios-deploy:

npm install -g ios-deploy

 2.3使用

参数

Usage: ios-deploy [OPTION]…

-d, –debug                                    安装app后,在lldb调试环境唤起app
-i, –id                    设置要连接的设备id
-c, –detect                                    检测设备是否连接
-b, –bundle    设置要安装的app budle
-a, –args                         启动app时传递的参数
-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             指定设备端口, default: dynamic
-r, –uninstall                             安装时先卸载老的app(do not use with -m; app cache and data are cleared)
-9, –uninstall_only                 仅仅卸载app. 仅仅和 -1 搭配使用。
-1, –bundle_id 指定bundle id
-l, –list                                              列出所有文件
-o, –upload                    上传指定文件
-w, –download                          下载app tree
-2, –to    use together with up/download file/tree. specify target
-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

  • 参考

    通过命令行将iOS的APP安装到模拟器中

    ios-deploy Github地址

    node-ios-device

    获取连接设备方法


你可能感兴趣的:(自动化编译)