安装环境:
- MacOS Mojave 10.14
- Xcode10.1
安装libimobiledevice
网上查到的教程
移除所有的 iOS 设备,然后在终端输入以下代码
1 | brew uninstall ideviceinstaller |
连接一台iOS设备,并信任,然后输入以下代码
1 | sudo chmod -R 777 /var/db/lockdown/ |
查看手机信息
1 | ideviceinfo -d |
查看手机上安装的所有APP的 BundleId
1 | ideviceinstaller -l |
实际安装过程
遇到问题
在运行brew install --HEAD libimobiledevice
这段代码时遇到问题:
1 | Last 15 lines from /Users/joy/Library/Logs/Homebrew/libimobiledevice/01.autogen.sh: |
看上去是libusbmuxd
的版本不对。在网上查了很多方案以后,发现只能编译安装1.1.0版本。
编译安装
编译安装的时候需要依赖于很多库,不过由于我一开始使用brew install --HEAD libimobiledevice
的时候,自动给我安装好了依赖的库,所以就不需要我再一一编译安装了。
编译安装libusbmuxd-1.1.0
1 | git clone https://github.com/libimobiledevice/libusbmuxd.git |
编译安装libimobiledevice
1 | git clone https://github.com/libimobiledevice/libimobiledevice.git |
在运行 ./autogen.sh
又遇到问题:
1 | checking for openssl >= 0.9.8... no |
我确认我安装的openssl
版本都是1.0以上,但还是报openssl
版本错误。在网上查到,依赖库可以使用openssl
或GnuTLS
,所以我决定用另一个试一试。
1 | brew install GnuTLS |
安装完依赖库以后,输入以下代码重新编译安装
1 | ./autogen.sh --disable-openssl |
又遇到一个新的问题:
1 | configure: error: libgcrypt is required to build libimobiledevice with GnuTLS |
需要安装libgcrypt
库
1 | brew install libgcrypt |
安装完成后,重新编译安装,OK,No problem~
编译安装ideveceinstaller
我本来想用 HomeBrew 安装,结果发现在 HomeBrew 安装 ideveceinstaller 时,它依赖于libimobiledevice,会自动下载某个稳定版的 libimobiledevice ,所以最好还是只能编译安装。
1 | git clone https://github.com/libimobiledevice/ideviceinstaller.git |
自动化测试
安装WebDriverAgent
真机安装WebDriverAgent
ATX 文档 - iOS 真机如何安装 WebDriverAgent
从GitHub
上下载代码
1 | git clone https://github.com/facebook/WebDriverAgent |
运行初始化脚本
1 | ./Scripts/bootstrap.sh |
该脚本会使用Carthage下载所有的依赖,使用npm
打包响应的js文件
执行完成后,直接双击打开WebDriverAgent.xcodeproj
这个文件。
设置好Team
、Profile
、Signing Certificate
以后,选择真机,Product
-> Test
。
一切正常的话,手机上会出现一个无图标的WebDriverAgent
应用,启动之后,马上又返回到桌面。这是很正常的不要奇怪。
此时控制台界面可以看到设备的IP。
通过上面给出的IP和端口,加上/status
合成一个url地址。例如http://10.0.0.1:8100/status
,然后浏览器打开。如果出现一串JSON输出,说明WDA安装成功了。
而inspector的地址是
http://localhost:8100/inspector
, inspector 是用来查看UI的图层,方便写测试脚本用的
使用终端替代Xcode
通常来说为了持续集成,能够全部自动化比较好一些
1 | # 解锁keychain,以便可以正常的签名应用, |
安装Python3 wda
1 | pip install --pre facebook-wda |
这个时候就可以来写python脚本了
1 | import time |