{ "id": "162799", "key": "TIMOB-23818", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "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": [], "resolution": null, "resolutiondate": null, "created": "2016-08-24T19:52:01.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [ { "id": "53930", "type": { "id": "10000", "name": "Blocks", "inward": "is blocked by", "outward": "blocks" }, "outwardIssue": { "id": "162522", "key": "TISTUD-8772", "fields": { "summary": "Hyperloop: Errors when running project with liveview and hyperloop enabled", "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": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "53872", "type": { "id": "10000", "name": "Blocks", "inward": "is blocked by", "outward": "blocks" }, "outwardIssue": { "id": "162800", "key": "TISTUD-8696", "fields": { "summary": "Liveview: Unable to find Hyperloop reference on iOS devices", "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": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2017-11-10T17:08:39.000+0000", "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" } }, "components": [ { "id": "13715", "name": "Hyperloop", "description": "Hyperloop project" }, { "id": "10207", "name": "Tooling" } ], "description": "Run a Hyperloop enable project with Liveview, modify project file with new Hyperloop requires will trigger a Liveview reload. If the required reference hasn't been generated on the first build, Liveview will spit out error, i.e {{Couldn't find module: UIKit/UITableView for architecture: x86_64}}.\r\n\r\nLiveview needs a way to trigger hyperloop metabase regeneration. \r\n\r\n*Step to Reproduce*\r\n1. Create a project with Hyperloop enabled, add {{var UIView = require('UIKit/UIView');}}\r\n2. Enable Liveview, run the project\r\n3. Modify the code to reference Hyperloop, add {{var UITableView = require('UIKit/UITableView');}}\r\n\r\n*Actual Result*\r\n{{Couldn't find module: UIKit/UITableView for architecture: x86_64}} error in the output.\r\n\r\nIf you look into {{/build/iphone/build/Products/Debug-iphonesimulator/.app/hyperloop/uikit}} folder, you'll find {{uitableview.js}} file missing.\r\n\r\n\r\n", "attachment": [], "flagged": false, "summary": "Hyperloop: Command to trigger metabase generation", "creator": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "subtasks": [], "reporter": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "environment": "Hyperloop module 1.2.6\r\nHyperloop plugin 1.2.6\r\nLiveview 1.0.10", "closedSprints": [ { "id": 799, "state": "closed", "name": "2017 Sprint 02 Tooling", "startDate": "2017-01-15T00:01:57.583Z", "endDate": "2017-01-29T00:01:00.000Z", "completeDate": "2017-01-30T21:11:44.577Z", "originBoardId": 199 } ], "comment": { "comments": [ { "id": "395383", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "There is a public {{generateMetabase}} that could be triggered, although it would need refactoring to be called independently.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-09-06T11:02:22.000+0000", "updated": "2016-09-06T11:02:22.000+0000" }, { "id": "403271", "author": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "body": "As Liveview works outside of the normal build pipeline there is currently no way make it work properly with Hyperloop. Although it would be possible to regenerate missing JS files there is also some native helper code required to properly support blocks and framework function such as {{CGRectMake}}. Those would required a new build to be available in the app, something which Liveview is not capable of. The only way to fix that would be to generate ALL available APIs during the build, not just the ones that are actually used in the code but that would have an significant impact on the app size and i wouldn't consider that as a viable solution at all.\r\n\r\nI added a new section to the [Hyperloop FAQ|https://wiki.appcelerator.org/display/FAQ/Hyperloop+FAQ#HyperloopFAQ-Liveview] to reflect the current limitations related to Hyperloop usage with Liveview.\r\n\r\n*Edit:* Just an idea: We could try to alter the metabase generation behavior into dev and production. So in dev we generate all JS proxies and helper code so on consequent build we don't have to check for any new Hyperloop requires and Liveview would work. This should also have a positive impact on build time for consequent build. On release builds we continue with our current behavior and only generate things for APIs that are actually used.", "updateAuthor": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-12-13T15:56:51.000+0000", "updated": "2016-12-13T16:03:49.000+0000" } ], "maxResults": 2, "total": 2, "startAt": 0 } } }