go-ios icon indicating copy to clipboard operation
go-ios copied to clipboard

Introduce an alternative app installation approach based on InstallProxy service

Open mykola-mokhnach opened this issue 1 year ago • 0 comments

Is your feature request related to a problem? Please describe. Currently app installs are done through zipconduit. Zipconduit assumes the application under test must be unzipped lcocally and then sent to the device using a special bundle format.

Describe the solution you'd like Introduce alternative app installation method based on the combination of AFC and InstallProxy services similar to how it's done in pymobiledevice3

This method is faster, especially for larger bundles because:

  • USB transfer performance is limited to USB2 max speed, which is about 30-35 MB/s in reality. Yes, iPhones are still supplied without USB3 controllers. By assuming that the average zip compression ratio is about 30% this means we could transfer an average bundle to the device 3 times faster in comparison to the above approach. If the transfer happens over a Wi-Fi tunnel (iOS17+) then the process might be much faster (ofc if the wireless connection performs well).
  • We don't need to unzip an app bundle on the host computer
  • App installation itself might be slightly slower with this method, because it depends on the device's CPU and I/O performance (basically how fast it could unzip and verify the bundle). Although, I don't observe much of the diff, especially with recent devices where CPU speed is sometimes comparable with the one on the host computer %)

mykola-mokhnach avatar Apr 12 '24 16:04 mykola-mokhnach