{ "id": "89826", "key": "TIMOB-8676", "fields": { "issuetype": { "id": "5", "description": "The sub-task of the issue", "name": "Sub-task", "subtask": true }, "parent": { "id": "89765", "key": "TIMOB-8652", "fields": { "summary": "Core: Create a new Titanium Command Line Interface", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "subtask": false } } }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "13502", "description": "Sprint 2012-14 Core", "name": "Sprint 2012-14 Core", "archived": true, "released": true, "releaseDate": "2012-07-15" } ], "resolution": { "id": "7", "description": "", "name": "Invalid" }, "resolutiondate": "2012-07-16T12:02:51.000+0000", "created": "2012-04-11T09:12:12.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "core" ], "versions": [ { "id": "13271", "description": "Release 2.1.0", "name": "Release 2.1.0", "archived": false, "released": true, "releaseDate": "2012-06-29" } ], "issuelinks": [ { "id": "18665", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "81742", "key": "TIMOB-5823", "fields": { "summary": "iOS: Support building to device, directly to the device, skipping iTunes", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "18894", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "97379", "key": "TIMOB-9969", "fields": { "summary": "iOS: Create OTA (over-the-air) deploy solution ", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "Low", "id": "4" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "19912", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "99117", "key": "TISTUD-2090", "fields": { "summary": "Display a set of instructions when launching iOS \"Debug on Device\"", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } }, { "id": "20272", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "99928", "key": "TIMOB-10675", "fields": { "summary": "CLI: Allow android apps to automatically launch when deployed to device", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "24306", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "60683", "key": "TISTUD-528", "fields": { "summary": "Deploy directly to device (iPhone)", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } } ], "assignee": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-05-30T17:17:06.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10207", "name": "Tooling" } ], "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", "attachment": [], "flagged": false, "summary": "R&D: Prototype a method of deploying to iOS devices without iTunes", "creator": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 3, "state": "closed", "name": "Release 3.0.0", "startDate": "2012-09-27T05:26:46.636Z", "endDate": "2012-10-08T20:05:00.000Z", "completeDate": "2012-12-20T17:03:19.403Z" } ], "comment": { "comments": [ { "id": "192052", "author": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "body": "One alternative that has been brought to our attention is fruitstrap:\r\n\r\nhttps://github.com/ghughes/fruitstrap", "updateAuthor": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-04-20T11:47:20.000+0000", "updated": "2012-04-20T11:47:20.000+0000" }, { "id": "192055", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "GPL :(", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2012-04-20T11:52:15.000+0000", "updated": "2012-04-20T11:52:15.000+0000" }, { "id": "195238", "author": { "name": "ngupta", "key": "ngupta", "displayName": "Neeraj Gupta", "active": true, "timeZone": "America/Los_Angeles" }, "body": "@Chris - We can contact the author and see if he is willing to give it with liberal terms.", "updateAuthor": { "name": "ngupta", "key": "ngupta", "displayName": "Neeraj Gupta", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-05-17T23:07:33.000+0000", "updated": "2012-05-17T23:07:33.000+0000" }, { "id": "197060", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Bumping to next sprint, research is taking longer than expected", "updateAuthor": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-06-04T11:46:23.000+0000", "updated": "2012-06-04T11:46:23.000+0000" }, { "id": "207769", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Investigation has determined the following:\r\n\r\n* 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.\r\nNote 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.\r\n* 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.*\r\n* [fruitstrap|https://github.com/ghughes/fruitstrap] was a GPLv3 alternative we considered. However:\r\n*# GPLv3 presents customer issues (customers unwilling to use GPL software in their toolchains)\r\n*# Fruitstrap does not appear to work correctly with newer versions of iOS (5.1+) or Mountain Lion (10.8p2)\r\n\r\nInstead 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:\r\n\r\n* Require adhoc distribution certificates to work\r\n* Require manual interaction to accept app updates on a registered device\r\n* Require some sort of web service (whether local adhoc or persistent remote) to serve IPA updates\r\n\r\nThis 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.", "updateAuthor": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-07-16T11:59:03.000+0000", "updated": "2012-07-16T12:01:28.000+0000" }, { "id": "207770", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Completed task assessment, initial investigation, etc. Determination was that direct device install over a connection is untenable. However we will offer an OTA solution.", "updateAuthor": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-07-16T12:02:51.000+0000", "updated": "2012-07-16T12:02:51.000+0000" }, { "id": "207771", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This issue is superseded by \"OTA deployment solution\" (TIMOB-9969).", "updateAuthor": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-07-16T12:07:23.000+0000", "updated": "2012-07-16T12:07:23.000+0000" }, { "id": "238575", "author": { "name": "ygbr", "key": "ygbr", "displayName": "Ygor Lemos", "active": true, "timeZone": "America/Sao_Paulo" }, "body": "How come Rubymotion managed to make it happen?", "updateAuthor": { "name": "ygbr", "key": "ygbr", "displayName": "Ygor Lemos", "active": true, "timeZone": "America/Sao_Paulo" }, "created": "2013-02-14T17:57:06.000+0000", "updated": "2013-02-14T17:57:06.000+0000" }, { "id": "420615", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as invalid.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-05-30T17:17:06.000+0000", "updated": "2017-05-30T17:17:06.000+0000" } ], "maxResults": 33, "total": 33, "startAt": 0 } } }