codeskyblue / tidevice3

wrapper for pymobiledevice3 to make it more easy to use.
MIT License
176 stars 33 forks source link

tidevice3

PyPI version codecov

wrapper for pymobiledevice3 to make it more easy to use.

Install

Mac

pip install tidevice3

# or install as Isolated environment
brew install pipx
pipx install tidevice3

Linux

# required by pytun-pmd3
sudo apt install python3-dev gcc pipx
pipx install tidevice3
pipx ensurepath

CLI Usage

iOS >= 17 screenshot,app:ps connect through Ethernet over USB (NCM device) instead of usbmuxd So tunneld should start first.

# start tunneld for iOS>=17
# launch process (pmd3 remote start-tunnel) when new usb device connected
# root required
$ sudo t3 tunneld

Basic usage

$ t3 list
...

# enable developer mode and mount develoepr image
$ t3 developer

# install & uninstall
$ t3 install https://....ipa
$ t3 install ./some.ipa
$ t3 uninstall com.example

# take screenshot
$ t3 screenshot out.png

# reboot
$ t3 reboot

# file operation
$ t3 fsync <ls|rm|pull|push> [Arguments...]

# app
$ t3 app <ps|list|launch|kill|instal|uninstall|foreground>

# install
# alias for app install
$ t3 install <URL or LocalIPA>

# screenrecord
$ t3 screenrecord out.mp4

# relay (like iproxy LOCAL_PORT DEVICE_PORT)
$ t3 relay 8100 8100
$ t3 relay 8100 8100 --source 0.0.0.0 --daemonize

# show help
$ t3 --help

API Usage

The API alone is insufficient for all operations; combining it with the pymobiledevice3 library can accomplish more things.

from tidevice3.api import list_devices, connect_service_provider, screenshot, app_install

for d in list_devices(usb=True):
    print("UDID:", d.Identifier)
    service_provider = connect_service_provider(d.Identifier)
    pil_im = screenshot(service_provider)
    pil_im.save("screenshot.png")

    # install ipa from URL or local
    app_install(service_provider, "https://example.org/some.ipa")

iOS 17 support

Mac,Windows,Linux all supported iOS<17

WDA

其实WDA启动可以不用XCUITest,下面是具体的方法(适用于iOS >= 15)

DEVELOP & CONTRIBUTE

see DEVELOP.md

LICENSE

MIT