命令行安装ipa包到手机、模拟器

1. 安装到真机

命令行 :
idevice_id -l 显示当前所连接的设备[udid],包括 usb、WiFi 连接
instruments -s devices 列出设备包括模拟器、真机及 mac 电脑本身

1.1 ios-deploy 安装使用(类似的工具有Fruitstrap(下边有介绍使用说明),node-ios-device等)

  • 1.1.1 安装ios-deploy brew install ios-deploy
  • 1.1.2 安装完成后先执行 ios-deploy -c连接真机设备
  • 1.1.3 cd **.app 目录下 ( **.app 就是将 **.ipa 解压获取的)
  • 1.1.4 安装 ios-deploy --debug --bundle my.app | ios-deploy—uninstall—debug—bundle my.app (第二个命令行会先卸载再重新安装)

ios-deploy -h 查看帮助
(1) 将应用程序部署并调试到连接的设备上ios-deploy –debug –bundle my.app
(2) 将应用程序部署并调试到连接的设备上,跳过任何wi-fi连接(使用USB)ios-deploy –debug –bundle my.app –no-wifi
(3) 将应用程序部署并启动到连接的设备上,但在此之后退出调试器ios-deploy –justlaunch –debug –bundle my.app
(4) 将应用程序部署并启动到连接的设备上,当应用程序崩溃或退出时退出ios-deploy –noninteractive –debug –bundle my.app
(5) 将文件上传到应用程序的Documents文件夹ios-deploy –bundle_id ‘bundle.id’ –upload test.txt –to Documents/test.txt
(6) 下载应用程序的文档、库和tmp文件夹ios-deploy –bundle_id ‘bundle.id’ –download –to MyDestinationFolder
(7) 列出应用程序的文档、库和tmp文件夹的内容ios-deploy –bundle_id ‘bundle.id’ –list
(8) 将应用程序部署并调试到连接的设备上,首先卸载应用程序ios-deploy –uninstall –debug –bundle my.app
(9)检查设备上是否存在bundle id应用程序(检查返回代码“echo $?”)ios-deploy –exists –bundle_id com.apple.mobilemail
(10)下载app的文档目录onlyios-deploy –download=/Documents –bundle_id my.app.id –to ./my_download_location
(11)列出连接设备的id和名称ios-deploy -c
(12) 卸载一个应用程序ios-deploy –uninstall_only –bundle_id my.bundle.id
(13) 列出设备上所有应用程序的包idios-deploy –list_bundle_id

其他命令操作可以查看 ios-deply的 github地址

1.2 Fruitstrap 安装使用

  • 1.2.1 安装 fruitstrap

(1) Git 远端clone文件
git clone git://github.com/ghughes/fruitstrap.git
cd fruitstrap
cat makefile 复制下方标识选中的命令,在终端中执行

终端展示

(2) 编译生成可执行文件
gcc -o fruitstrap -framework CoreFoundation -framework MobileDevice -F/System/Library/PrivateFrameworks fruitstrap.c
终端执行复制的命令,会在项目根目录下生成一个unix可执行文件,这个文件是可以直接在终端里执行的,如果在当前目录下出现fruitstrap文件就说明执行成功。ls查看就可以,或者open $(pwd)
(3) 调用可执行文件
方法1:终端用全路径调用
// 例如执行查看帮助的命令
/users/ypf/desktop/fruitstrap -d
方法2:将可执行文件复制粘贴到终端的默认目录/usr/bin,可以看到这里有很多可执行文件,这里的unix可执行文件可以通过文件名直接在终端中调用。
// 直接在终端中用文件名调用
fruitstrap -d

  • 1.2.2 安装.ipa到真机

执行命令行fruitstrap -i [目标设备的udid] -b [.ipa的path]

查看帮助Options:fruitstrap -d
fruitstrap命令的完整格式

// -i 目标设备的udid
// -b 要安装的.ipa的路径
// -a 参数数组
// -t 设置超时时间(单位:s)

fruitstrap [-d/--debug] [-i/--id device_id] -b/--bundle bundle.app [-a/--args arguments] [-t/--timeout timeout(seconds)]

1.3 node-ios-device 安装使用

点击查看node-ios-device安装
终端执行命令行 npm install node-ios-device --save-optional

1.4 ideviceinstaller安装(现在用不了除非把电脑系统版本Xcode降级)

  • 1.4.1、在终端再执行以下命令 brew install ideviceinstaller
  • 可能出现的错误⇣⇣
    (1)安装时若出现以下报错提示:Error: Cannot write to /usr/local/Cellar
    解决方案:先执行: sudo chown -R $USER /usr/local再次执行brew install ideviceinstaller
  • 1.4.2 安装后执行查看列表命令 ideviceinstaller -l

    执行时若出现以下报错提示 Could not connect to lockdownd. Exiting
    解决方法:首先断开所有设备连接,依次执行以下命令
    1.1 brew uninstall ideviceinstaller
    1.2 brew uninstall libimobiledevice
    1.3 brew install --HEAD libimobiledevice
    1.4 brew link --overwrite libimobiledevice
    1.5 brew install ideviceinstaller
    1.6 brew link --overwrite ideviceinstaller
    删除本地保存信任设备目录
    2. sudo rm -rf /var/db/lockdown/*
    修改权限
    3. sudo chmod -R 777 /var/db/lockdown/
    ⇡⇡执行这条命令会出现密码输入提示,直接输入密码后回车即可

  • 1.4.3 安装ipa包到手机命令行

    ideviceinstaller -i "${ipaPath}/${ipa_name}.ipa”

  • 可能出现的错误⇣⇣
    (1)安装时若是提示:dyld: Library not loaded:/usr/local/lib/libzip.4.dylib image not found
    解决方案:尝试运行ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
  • 1.2. 第三方软件安装 (itools、ifunbox、itunes等)

  • 1.3. 第三方的网站fir.im、prg等

2. 安装到模拟器

  • 1. xcrun 安装

      1. 打开一个模拟器
      • (1)直接在Xcode中打开一个
      • (2)命令行open -a Simulator.app --args -CurrentDeviceUDID <设备的UDID>打开(输入命令行时不要加上<>
        *** xcrun simctl boot UDID(只在后台启动模拟器,看不到GUI,建议用上边命令)***
        (不知道具体模拟器型号可以用命令行xcrun simctl list devices查看模拟器列表) - 报错请查看下边异常处理解决即可

关闭模拟器: xcrun simctl shutdown all(关闭所有模拟器)
关闭指定模拟器: xcrun simctl shutdown udid
重置模拟器:xcrun simctl erase udid(清除模拟器的数据和设置)

    1. 安装
      xcrun simctl install booted /..../*.app
      这里安装时是使用的.app文件,直接解压.ipa文件就可以获得
      /..../*.app 是app文件的路径,也可以直接cd到目录下
    1. 启动app
      xcrun simctl launch booted ‘app的Bundle identifier’
      通过URL Scheme方式一样打开一个app:xcrun simctl openurl booted "com.**.**"
    1. 关闭app
      xcrun simctl terminate booted
    • 5.卸载
      xcrun simctl uninstall booted com.app.bundleIdentify
      卸载时使用com.app.bundleIdentify即安装的应用的bundle Identify

截图命令:xcrun simctl io booted screenshot screenshot.png
录屏功能:xcrun simctl io booted recordVideo example.mp4
查看日志: tail -f
日志文件的路径: /Users/ U s e r N a m e / L i b r a r y / L o g s / C o r e S i m u l a t o r / UserName/Library/Logs/CoreSimulator/ UserName/Library/Logs/CoreSimulator/simulator_hash/system.log
让模拟器打开网页:xcrun simctl openurl booted "https://www.baidu.com"

异常问题:
1、xcrun simctl install booted /path/xxx.app
2、xcrun: error: unable to find utility “simctl”, not a developer tool or in PATH`
3、xcrun: error: active developer path(“/Volumes/Xcode/Xcode.app/Contents/Developer”) does not exist, use xcode-select –switch path/to/Xcode.app to specify the Xcode that you wish to use for command line developer tools (or seeman xcode-select)
No devices are booted
这些问题将会导致安装不成功,如果没有安装上可执行下面的操作。
解决方案:
steps 1:获取Xcode安装路径。在终端中输入 sudo xcode-select -switch Xcode路径/Contents/Developer 即可。

## created an archive
xcodebuild clean archive -workspace APP.xcworkspace -scheme APP -archivePath $ARCHIVE_PATH
## export archive
xcodebuild -exportArchive -archivePath $ARCHIVE_PATH.xcarchive -exportPath $ARCHIVE_PATH -exportFormat APP -exportProvisioningProfile app-App-Adhoc-Distribution
## run the iPhone 6 Plus simulator
xcrun instruments -w "iPhone 6 Plus (8.3 Simulator)"
## install the app on the simalutor
xcrun simctl install booted /pathtoAPP/APP.app
## run test.js
xcrun instruments -w "iPhone 6 Plus (8.3 Simulator)" -t /tmp/UIAutomation/APP.tracetemplate /pathtoAPP/APP.app -e UIASCRIPT "/pathtoTest/test.js"
  • 2. ios-sim 安装

      1. 安装“ios-sim” brew install ios-sim | npm install ios-sim -g
      1. 查看已安装的模拟器类型:ios-sim showdevicetypes
      1. 启动指定模拟器并安装 ios-sim launch /Users/work/Desktop/Mara.app --devicetypeid iPhone-X, 11.2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270