[TIMOB-8676] R&D: Prototype a method of deploying to iOS devices without iTunes
GitHub Issue | n/a |
---|---|
Type | Sub-task |
Priority | High |
Status | Closed |
Resolution | Invalid |
Resolution Date | 2012-07-16T12:02:51.000+0000 |
Affected Version/s | Release 2.1.0 |
Fix Version/s | Sprint 2012-14 Core |
Components | Tooling |
Labels | core |
Reporter | Marshall Culpepper |
Assignee | Stephen Tramer |
Created | 2012-04-11T09:12:12.000+0000 |
Updated | 2017-05-30T17:17:06.000+0000 |
Description
Currently, our iOS scripts depend on iTunes for deploying to device. Since this process requires user interaction, it disables us from fully automating Drillbit or our CLI in general. We need to research (possibly reverse enginner) and prototype a way to deploy Titanium apps to a connected iOS device without iTunes
One alternative that has been brought to our attention is fruitstrap: https://github.com/ghughes/fruitstrap
GPL :(
@Chris - We can contact the author and see if he is willing to give it with liberal terms.
Bumping to next sprint, research is taking longer than expected
Investigation has determined the following: * Xcode is designed specifically to make reverse-engineering the install process difficult. The system previously had checks in place to check clock cycle differences between different install phases meaning it could be worked around, but as of Xcode 4.3.3 there appears to be hardware breakpoint detection, which is much more difficult to circumvent. Doing so will take special tools and dedicated resources. Note that even if we do reverse-engineer any install process of Xcode this has potential legal implications and places us in an "arms race" against Apple with every single toolchain component update they push (iOS, OS X, Xcode) which would require near-constant attention from a dedicated resource. This problem is roughly equivalent to what the [iPhone Dev Team](http://blog.iphone-dev.org) must regularly deal with (device rooting) and they have significantly more resources at their disposal as well as prior art. * Xcode as of 4.0 is designed to block all scripting actions (both AppleScript and Scripting Bridge) which invoke Build/Run/etc. tasks. See [this article](http://playcontrol.net/ewing/jibberjabber/automated-mobile-test-part2.html) and skip to the portion on "Xcode 4.0". Note that scripting worked with Xcode 3 so this functionality was *specifically disabled by Apple in response to what they believed was inappropriate usage.* * [fruitstrap](https://github.com/ghughes/fruitstrap) was a GPLv3 alternative we considered. However: *# GPLv3 presents customer issues (customers unwilling to use GPL software in their toolchains) *# Fruitstrap does not appear to work correctly with newer versions of iOS (5.1+) or Mountain Lion (10.8p2) Instead of direct install-to-device we will *instead* offer some sort of OTA (over-the-air) deployment solution such as [Test Flight](https://testflightapp.com/) uses, which *is* approved by Apple. Note that this solution will: * Require adhoc distribution certificates to work * Require manual interaction to accept app updates on a registered device * Require some sort of web service (whether local adhoc or persistent remote) to serve IPA updates This ticket will be marked as INVALID (along with other existing install-to-device tickets) and will be linked to a new ticket regarding OTA deployment, which will also be associated as a CLI subtask.
Completed task assessment, initial investigation, etc. Determination was that direct device install over a connection is untenable. However we will offer an OTA solution.
This issue is superseded by "OTA deployment solution" (TIMOB-9969).
How come Rubymotion managed to make it happen?
Closing ticket as invalid.