Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-8676] R&D: Prototype a method of deploying to iOS devices without iTunes

GitHub Issuen/a
TypeSub-task
PriorityHigh
StatusClosed
ResolutionInvalid
Resolution Date2012-07-16T12:02:51.000+0000
Affected Version/sRelease 2.1.0
Fix Version/sSprint 2012-14 Core
ComponentsTooling
Labelscore
ReporterMarshall Culpepper
AssigneeStephen Tramer
Created2012-04-11T09:12:12.000+0000
Updated2017-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

Comments

  1. Marshall Culpepper 2012-04-20

    One alternative that has been brought to our attention is fruitstrap: https://github.com/ghughes/fruitstrap
  2. Chris Barber 2012-04-20

    GPL :(
  3. Neeraj Gupta 2012-05-17

    @Chris - We can contact the author and see if he is willing to give it with liberal terms.
  4. Stephen Tramer 2012-06-04

    Bumping to next sprint, research is taking longer than expected
  5. Stephen Tramer 2012-07-16

    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.
  6. Stephen Tramer 2012-07-16

    Completed task assessment, initial investigation, etc. Determination was that direct device install over a connection is untenable. However we will offer an OTA solution.
  7. Stephen Tramer 2012-07-16

    This issue is superseded by "OTA deployment solution" (TIMOB-9969).
  8. Ygor Lemos 2013-02-14

    How come Rubymotion managed to make it happen?
  9. Lee Morris 2017-05-30

    Closing ticket as invalid.

JSON Source