在日常iOS研发或者测试中,经常会对手机进行设备udid、应用包名、安装app、卸载app等操作。
在mac系统上可以安装libimobiledevice工具解决上述问题,但是不支持windows系统。
今天给大家介绍一款在iOS辅助做自动化的命令行工具tidevice,支持安装app、运行XCTest、采集性能、支持多系统等。
tidevice是阿里的内部的一个小组用来做iOS自动化用的工具,已经开源到github了。
项目地址 https://github.com/alibaba/taobao-iphone-device。
该工具能够用于与iOS设备进行通信,提供以下功能。
支持运行在Mac,Linux,Windows上
Python 3.6+环境下
pip3 install -U "tidevice[openssl]"
Windows电脑需要安装并启动Itunes。
如果需要体验tidevice工具,需要准备一台iOS测试机。
另外需要准备一个iOS项目,代码地址: https://github.com/xinxi1990/iOSDemo。
打包命令
xcodebuild
-project ./iOSDemo.xcodeproj
-scheme iOSDemo
-configuration Release
-derivedDataPath ./
生成ipa命令
xcrun -sdk iphoneos PackageApplication -v
~/iOSDemo/Build/Products/Release-iphoneos/iOSDemo.app -o
~/iOSDemo/Build/Products/Release-iphoneos/iOSDemo.ipa
tidevice version
tidevice version 0.7.14
tidevice version
tidevice version 0.7.14
tidevice pair
Paired with device 530a0f8ebb699738d605e68a5c8e54b0a4bcd925 HostID: 651A4458-9D29-4AFF-92C3-CD020D17CDDB
tidevice list
UDID NAME MarketName ProductVersion ConnType
530a0f8ebb699738d605e68a5c8e54b0a4bcd925 iPhone (2) iPhone 8 Plus 15.4.1 usb
tidevice list --json
[
{
"udid": "530a0f8ebb699738d605e68a5c8e54b0a4bcd925",
"name": "iPhone (2)",
"market_name": "iPhone 8 Plus",
"product_version": "15.4.1",
"conn_type": "usb"
}
]
安装应用
tidevice install /Users/xinxi/Downloads/app.ipa(本地ipa地址)
指定设备安装
tidevice --udid 530a0f8ebb699738d605e68a5c8e54b0a4bcd925 /Users/xinxi/Downloads/app.ipa
卸载应用
tidevice uninstall com.example.demo(应用包名)
启动应用
tidevice launch com.example.demo
停止应用
tidevice kill com.example.demo
Kill pid: 1988
查看已安装应用
tidevice applist
查看运行中的应用
tidevice ps
tidevice ps --json
[
{
"pid": 324,
"name": "WorldClockWidget",
"bundle_id": "",
"display_name": ""
},
{
"pid": 315,
"name": "GeneralMapsWidget",
"bundle_id": "",
"display_name": ""
},
{
"pid": 155,
"name": "Taobao4iPhoneWidgetExtension",
"bundle_id": "",
"display_name": ""
},
{
"pid": 328,
"name": "AwemeNotificationService",
"bundle_id": "",
"display_name": ""
}
]
tidevice在日常工作中非常实用,比如在自动化测试中使用安装、卸载命令等。本次就简单入门介绍一下tidevice的基本使用,后续会介绍tidevice在UI自动化、性能采集中的实战。