feat(ios): Migrate from tidevice to pymobiledevice3 for iOS 17+ support#713
Draft
abhishekbedi1432 wants to merge 2 commits intomicrosoft:mainfrom
Draft
Conversation
## Summary Replace tidevice library with pymobiledevice3 to support iOS 17+ devices while maintaining backward compatibility with older iOS versions. ## Problem - tidevice is incompatible with iOS 17+ (uses deprecated DeveloperDiskImage) - Screenshots and device operations fail on modern iOS devices - tidevice development has stalled since 2021 ## Solution Migrate all iOS device management commands to pymobiledevice3: - Device discovery: usbmux list - Device info: lockdown info - App management: apps install/uninstall/list - Screenshots: developer dvt screenshot - Log collection: syslog live, crash pull - Port forwarding: usbmux forward ## Backward Compatibility - JSON parsing supports both tidevice and pymobiledevice3 field names - Device unlock failures are now non-fatal for XCTest execution - Device watcher uses polling mechanism (usbmux watch not available) ## Files Modified - IOSUtils.java: Updated all command invocations - IOSDeviceDriver.java: Updated parsing and capability requirements - EnvCapability.java: Added pymobiledevice3 capability keyword ## Testing - Verified on iPhone 11 Pro (iOS 26.2) - All core device operations functional Ref: TIDEVICE_TO_PYMOBILEDEVICE3_MIGRATION.md for detailed command mapping Co-Authored-By: Warp <agent@warp.dev>
Author
|
@microsoft-github-policy-service agree |
hydraxman
approved these changes
Jan 29, 2026
Author
|
@hydraxman @maintainers - The required checks appear blocked:
Could you please trigger the CI or bypass these checks if appropriate? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR migrates HydraLab's iOS device management from
tidevicetopymobiledevice3to enable support for iOS 17+ devices while maintaining backward compatibility with older iOS versions.Why this change?
Key Changes
IOSUtils.javaIOSDeviceDriver.javaEnvCapability.javapymobiledevice3capability keywordCommand Migration Summary
tidevice list --jsonpython3 -m pymobiledevice3 usbmux listtidevice -u <udid> screenshotpython3 -m pymobiledevice3 developer dvt screenshot --udidtidevice -u <udid> installpython3 -m pymobiledevice3 apps install --udidtidevice -u <udid> relaypython3 -m pymobiledevice3 usbmux forward --serialSee
TIDEVICE_TO_PYMOBILEDEVICE3_MIGRATION.mdfor complete mapping.Linked GitHub issue ID: N/A (Enhancement)
Pull Request Checklist
Does this introduce a breaking change?
Migration is backward compatible - JSON parsing supports both old (tidevice) and new (pymobiledevice3) field names.
How you tested it
Please check the type of change your PR introduces:
Feature UI screenshots or Technical design diagrams
N/A - Backend changes only. See migration doc for architecture details.
Co-Authored-By: Warp agent@warp.dev