美文网首页appium Terminal
Mac下用终端工具libimobiledevice管理iPhon

Mac下用终端工具libimobiledevice管理iPhon

作者: 悄然林静 | 来源:发表于2018-07-09 15:38 被阅读0次

    Homebrew是Mac下最常用的包管理工具,并且是开源的(官网https://brew.sh)。如果Mac上没有,先安装HomeBrew:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    1. 安装libimobiledevice

    brew install --HEAD libimobiledevice -g
    

    libimobiledevice中并不包含ipa的安装命令,所以还需要安装ideviceinstaller

    brew install --HEAD ideviceinstaller -g
    

    2. 测试过有效的其他命令

    一些要用到的信息:

    // 手机的UDID
    bf76c991995e61c5c783f3441bff4a18605bc7ba
    // 桌面测试ipa的文件路径
    /Users/ypf/Desktop/SmartTest.ipa
    // 桌面测试ipa的BundleID
    com.CSS.app.SmartTest
    
    2.1 列出当前所有设备,包括连接到mac的真机、模拟器、这台mac电脑本身
    instruments -s devices
    
    2.2 列出当前连接到mac的设备的UDID,包括通过usb和wifi连接的
    idevice_id -l
    
    2.3 安装mac上的ipa到手机
    ideviceinstaller -u [udid] -i [xxx.ipa]
    
    // 举例子
    ideviceinstaller --udid bf76c991995e61c5c783f3441bff4a18605bc7ba --install /Users/ypf/Desktop/SmartTest.ipa
    
    2.4 卸载手机应用
    ideviceinstaller -u [udid] -U [bundleId]
    
    // 举例子
    ideviceinstaller --udid bf76c991995e61c5c783f3441bff4a18605bc7ba --uninstall com.chinasoft.app.SmartTest
    
    2.5 屏幕截图

    这个截图的路径暂时不知道怎么设置,默认会存放在/users/ypf

    idevicescreenshot
    
    2.6 获取实时系统日志
    idevicesyslog
    
    2.7 获取指定设备的信息
    ideviceinfo -u [udid]
    
    // 举例子
    ideviceinfo --udid bf76c991995e61c5c783f3441bff4a18605bc7ba
    
    2.8 获取指定设备的名称
    ideviceinfo -u [udid] -k DeviceName
    // 举例子1
    ideviceinfo --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -k DeviceName
    

    idevicename -u [udid]
    
    举例子2
    idevicename --udid bf76c991995e61c5c783f3441bff4a18605bc7ba
    
    2.9 获取指定设备的系统版本
    ideviceinfo -u [udid] -k ProductVersion
    
    // 举例子
    ideviceinfo --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -k ProductVersion
    
    2.10 获取指定设备的型号
    ideviceinfo -u [udid] -k ProductType
    
    // 举例子
    ideviceinfo --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -k ProductType
    
    2.11 获取指定设备的系统名称
    ideviceinfo -u [udid] -k ProductName
    
    // 举例子
    ideviceinfo --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -k ProductName
    
    2.12 获取设备时间
    idevicedate
    
    2.13 获取设备名称
    idevicename
    
    2.14 查看和操作设备的描述文件
    ideviceprovision list
    
    2.15 查看指定设备安装的所有应用,包括系统和第三方
    ideviceinstaller -u [udid] -l -o list_all
    
    // 举例子
    ideviceinstaller --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -l -o list_all
    
    2.16 查看指定设备安装的第三方应用
    ideviceinstaller -u [udid] -l 
    
    // 举例子1
    ideviceinstaller --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -l
    

    ideviceinstaller -u [udid] -l -o list_user
    
    // 举例子2
    ideviceinstaller --udid bf76c991995e61c5c783f3441bff4a18605bc7ba -l -o list_user
    
    2.17 查看指定设备安装的系统应用
    ideviceinstaller -u [udid] -l -o list_system
    
    // 举例子
    ideviceinstaller --udid 64af3bfaf93e6a0e97d75aeac8fbb8610732c150 -l -o list_system
    
    2.18 设置代理 / 端口转发

    (举个端口转发的例子)
    先将iPhone用数据线连接到Mac,在终端执行如下命令:

    // 第1个是Mac端口,第2个是iPhone端口
    iproxy 7999 8100
    

    此时会将iPhone上的8100端口的数据转发到Mac的7999端口,这个在做自动化测试时会用到(因为iOS自动化测试现有的主流框架大都是基于WebDriver协议的实现的,Facebook自家封装了一个开源框架WebDriverAgent,这里其实是有一个不小的坑,需要好好说道说道,详见我的另一篇文章xxx)

    3. 待测试的命令

    3.1 挂载DeveloperDiskImage

    用于调试……

    ideviceimagemounter
    
    3.2 调试程序(需要预先挂载DeveloperImage)
    idevicedebug
    

    4. 用xcodebuild从源码构建应用安装包

    $ cd /source-folder/
    $ PROJECT=<your-project-name>
    $ xcodebuild clean -project $PROJECT.xcodeproj -configuration Debug -alltargets
    $ xcodebuild archive -project $PROJECT.xcodeproj -scheme $PROJECT -archivePath $PROJECT.xcarchive
    
    # 注意,末尾的 exportProvisioningProfile 参数值是在 Xcode 的 Performance->Accounts->Apple ID->View Details 窗口的下半部分看到的名称。如 iOS Team Provisioning Profile: chj.ToDoList
    $ xcodebuild -exportArchive -archivePath $PROJECT.xcarchive -exportPath $PROJECT -exportFormat ipa -exportProvisioningProfile "your provision profile"
    
    # build 完的 ipa 包直接就放在当前目录
    
    

    5. 解决ideviceinstaller报错:Could not connect to lockdownd. Exiting.

    brew uninstall ideviceinstaller -g
    brew uninstall libimobiledevice -g
    brew install --HEAD libimobiledevice -g
    brew install --HEAD ideviceinstaller -g
    sudo chmod -R 777 /var/db/lockdown
    

    待测试的解决方法:

    brew uninstall ideviceinstaller
    brew uninstall libimobiledevice
    brew install --HEAD libimobiledevice
    brew link --overwrite libimobiledevice
    brew install ideviceinstaller
    brew link --overwrite ideviceinstaller
    sudo chmod -R 777 /var/db/lockdown
    

    PS:暂时没测试的https://www.jianshu.com/p/6423610d3293

    相关文章

      网友评论

        本文标题:Mac下用终端工具libimobiledevice管理iPhon

        本文链接:https://www.haomeiwen.com/subject/faxtpftx.html