{ "id": "148700", "key": "TIMOB-19000", "fields": { "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "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": "16925", "description": "WatchKit Support--all going into 5.0 now", "name": "Release 5.0.0", "archived": true, "released": true, "releaseDate": "2015-09-16" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2015-07-28T08:50:33.000+0000", "created": "2015-06-11T19:52:53.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updated": "2017-03-16T21:08:48.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": "10206", "name": "iOS", "description": "iOS Platform" }, { "id": "10207", "name": "Tooling" } ], "description": "A long time ago, Titanium's iOS build was written in Python. The iOS build performed 3 major steps:\r\n\r\n# Create all Xcode related files in build dir\r\n# Run xcodebuild to compile project, which in turn fires the Xcode project's pre-compile phase script that calls the iOS build again to copy the Titanium-specific resources\r\n# Xcode builds the final app and signs it\r\n\r\nIt was done this way so that you could open the generated Xcode project, modify JS files, and build from Xcode.\r\n\r\nWhen we replaced they Python-based iOS build scripts with the Node.js version, there was a performance issue with Xcode calling the Titanium CLI to copy the Titanium resources. I changed things so that if you are building from the Titanium CLI, it would copy the Xcode project related files, then the Titanium related files, then finally call xcodebuild. This significantly sped things up.\r\n\r\nThe problem today is that when you run {{appc run}}, it generates a Xcode project who's pre-compile script references the Titanium CLI. Users do not have the Titanium CLI installed by default and thus it will fail. Even if they did, the encryption method would vary. Also the Xcode project's pre-compile should be calling the {{appc run}}, not {{ti build}}.\r\n\r\nI'm proposing we remove the Xcode project's pre-compile script.\r\n\r\nPros:\r\n* Remove cruft from the iOS build\r\n** There's a lot of code that accommodates the ability for Titanium resources to be processed when building from Xcode that we could rip out\r\n** As maintainers of the iOS build changes, not all of the knowledge is transferred and thus new contributors neglect the Xcode-specific build path\r\n* Speeds up builds when building from Xcode\r\n* Building from Xcode only really works when you have Titanium CLI installed\r\n* Building via {{appc run}} encrypts differently than {{ti build}} and thus building from Xcode would render the new encrypted files unused and bloat the app\r\n* Modifying Titanium JS files and building directly from Xcode is not officially supported\r\n\r\nCons:\r\n* Deprecates a feature that has existed for years", "attachment": [], "flagged": false, "summary": "Remove Titanium build call from Xcode pre-compile phase", "creator": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "subtasks": [], "reporter": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "environment": null, "closedSprints": [ { "id": 455, "state": "closed", "name": "2015 Sprint 15 Tooling", "startDate": "2015-07-20T16:26:19.926Z", "endDate": "2015-08-08T01:26:00.000Z", "completeDate": "2015-08-03T20:10:37.386Z", "originBoardId": 121 } ], "comment": { "comments": [ { "id": "354928", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~bgrantges@appcelerator.com] [~rblalock] [~aleard] [~scottd] FYI. Any objections?", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-06-11T21:28:17.000+0000", "updated": "2015-06-11T21:28:17.000+0000" }, { "id": "354929", "author": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "body": "There's gotta be more cons than that. :-)\r\n\r\n\"Modifying Titanium JS files and building directly from Xcode is not officially supported\"\r\n\r\nWe've supported building from Xcode though. We've always had the ability, for example, to run Instruments with your app, which requires building from Xcode.", "updateAuthor": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "created": "2015-06-11T21:28:36.000+0000", "updated": "2015-06-11T21:28:36.000+0000" }, { "id": "354930", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "[~rblalock] Right and that won't change. What you won't be able to do is do a device build, change the app.js, build from Xcode and expect to see your changes. You will still be able to run instruments, profile the app, and package it for distribution.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2015-06-11T21:31:44.000+0000", "updated": "2015-06-11T21:31:44.000+0000" }, { "id": "354931", "author": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "body": "Kk so if you did a `ti build` compile only...open in Xcode and build to device...it'd work right?", "updateAuthor": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "created": "2015-06-11T21:33:07.000+0000", "updated": "2015-06-11T21:33:07.000+0000" }, { "id": "354932", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "[~rblalock] Correct.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2015-06-11T21:35:39.000+0000", "updated": "2015-06-11T21:35:39.000+0000" }, { "id": "354996", "author": { "name": "bgrantges@appcelerator.com", "key": "bgrantges", "displayName": "Bert Grantges", "active": false, "timeZone": "America/Chicago" }, "body": "all of the above being true - then make it so!", "updateAuthor": { "name": "bgrantges@appcelerator.com", "key": "bgrantges", "displayName": "Bert Grantges", "active": false, "timeZone": "America/Chicago" }, "created": "2015-06-12T12:12:01.000+0000", "updated": "2015-06-12T12:12:01.000+0000" }, { "id": "358430", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "This has been fixed as apart of TIMOB-18840.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2015-07-28T08:50:17.000+0000", "updated": "2015-07-28T08:50:17.000+0000" }, { "id": "413067", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-16T21:08:48.000+0000", "updated": "2017-03-16T21:08:48.000+0000" } ], "maxResults": 8, "total": 8, "startAt": 0 } } }