{ "id": "155236", "key": "TIMOB-20489", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "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": "17684", "name": "Release 5.2.1", "archived": false, "released": true, "releaseDate": "2016-03-25" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2016-03-03T00:51:16.000+0000", "created": "2016-03-01T09:00:37.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [], "versions": [ { "id": "16997", "name": "Release 5.2.0", "archived": false, "released": true, "releaseDate": "2016-02-23" } ], "issuelinks": [ { "id": "50722", "type": { "id": "10122", "name": "Gantt: start-finish", "inward": "is triggered by", "outward": "is triggering" }, "inwardIssue": { "id": "151883", "key": "TIMOB-19694", "fields": { "summary": "CLI: Create template to configure launchScreen.storyboard", "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": "50865", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "155416", "key": "CLI-957", "fields": { "summary": "Unable to build modules from Appc CLI", "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": "50780", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "155318", "key": "TIDOC-2470", "fields": { "summary": "Update module guides to use CLI instead of build.py", "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": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "50785", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "155326", "key": "TISTUD-8013", "fields": { "summary": "Studio should use {{appc run}} to package modules instead of deprecated build.py", "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": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "50781", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "155322", "key": "TIMOB-20570", "fields": { "summary": "Add support for \"Resources\" dir and --build-only to Android module build", "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 } } } }, { "id": "50784", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "155323", "key": "TISTUD-8012", "fields": { "summary": "Studio needs to call \"appc run\" / \"ti build\" to build iOS/Android modules", "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": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "updated": "2016-03-22T20:10:32.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" } ], "description": "TIMOB-19694 fixed a bug where for iOS anything in a module's {{platform/iphone|ios}} folder was copied to {{build/iphone/build/Products/Debug-iphonesimulator/AppName.app}} where it should copy to {{build/iphone}} like Android and Windows do.\r\n\r\nUnfortunately this breaks Titanium and iOS modules that relied on the old behaviour, when you build using 5.2.0.\r\n\r\nThis ticket requests to find a module-side solution for this \"breaking fix\".\r\n\r\nSo far a project-side solution was suggested, by using a [project CLI plugin or (new) hook|https://gist.github.com/hansemannn/83840da6d7cd39ed6e1e] that copies the files over. However, modules should be self-contained and not rely on additional scripts to be added/written by the user.\r\n\r\nProbably, modules should be able to hook into the CLI as well. Then we could give an example of a module-based CLI hook that does what the < 5.2.0 CLI used to do.\r\n\r\nKnown affected OSS modules:\r\n\r\n* https://github.com/Scringo/ScringoTitaniumModule/tree/master/ios/platform/iphone\r\n* https://github.com/an83/JoobMobile-Appcelerator-Module/tree/master/platform/iphone/Resources\r\n* https://github.com/ZeusFramework/ZeusbaseTi/tree/master/Modules/iphone/com.infinery.fv/1.0/platform/iphone\r\n* https://github.com/benbahrenburg/Ti.iSpeech/tree/master/iOS/platform/iphone\r\n* https://github.com/aaronksaunders/ios8documemtpicker/tree/master/iphone/platform/iphone\r\n* https://github.com/mdsb100/titanium-good-practices/tree/master/ShareSDKModuleDemo/ios/TestShareSDK/iphone/platform/iphone\r\n* https://github.com/hyperlab/TiMixpanel/tree/master/ios/platform/iphone\r\n* https://github.com/ryanpeng84/pageflip/tree/master/com.infinery.pageflip/1.0/platform/iphone\r\n* https://github.com/timanrebel/HockeyApp/tree/master/iphone/platform/iphone/HockeySDKResources.bundle\r\n* https://github.com/inthekloud/ITK.Instabug/tree/master/iphone/platform/iphone\r\n* https://github.com/dieskim/countly-sdk-appcelerator-titanium-ios/tree/master/iphone/platform/iphone/Countly.momd\r\n* https://github.com/The-Virtual-Forge/ti.S3FileTransferManager/tree/master/iphone/platform/iphone\r\n* https://github.com/hansemannn/Ti.GoogleMaps/tree/master/iphone/platform/ios/GoogleMaps.bundle\r\n* https://github.com/BOXOUT-THINKERS/TiOpenChat/tree/master/modules/iphone/com.leftlanelab.firebase/1.1.1/platform/iphone", "attachment": [], "flagged": false, "summary": "iOS modules unable to write to product", "creator": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "subtasks": [], "reporter": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "environment": "5.2.0.GA", "closedSprints": [ { "id": 596, "state": "closed", "name": "2016 Sprint 05 Tooling", "startDate": "2016-02-27T01:30:53.769Z", "endDate": "2016-03-12T01:30:00.000Z", "completeDate": "2016-03-14T11:54:10.256Z", "originBoardId": 121 } ], "comment": { "comments": [ { "id": "378307", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "This can't be solved with a CLI hook. This can only be fixed by fixing the iOS build.\r\n\r\nI propose we introduce a {{Resources}} directory to modules. Module developers can place bundles and other files in the {{Resources}} directory. There will not be a {{Resources/ios}} directory since the {{Resources}} directory would already be in the platform specific module project directory.\r\n\r\nThis is a 1 line change to the iOS build. Then we need to add maybe 10 lines to the iOS module build. All module authors that use the {{platform/ios}} directory will need to update their modules and re-package them using whatever Titanium SDK includes this proposed fix.\r\n\r\nI think we can get by for now only doing this for iOS since supporting a {{Resources}} directory would be a new feature for Android, Windows, and Mobile Web.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2016-03-01T15:53:01.000+0000", "updated": "2016-03-01T15:53:01.000+0000" }, { "id": "378311", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This sounds like a good plan [~cng]. Let's confirm on a fix, and then shove it into 5.2.1 if possible (as it's a bug fix more than a feature add).", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-03-01T16:04:53.000+0000", "updated": "2016-03-01T16:04:53.000+0000" }, { "id": "378314", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "By \"good plan\" I was referring to your comment.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-03-01T16:11:24.000+0000", "updated": "2016-03-01T16:11:24.000+0000" }, { "id": "378315", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Excellent plan [~cbarber]!", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-03-01T16:12:08.000+0000", "updated": "2016-03-01T16:12:08.000+0000" }, { "id": "378317", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~fokkezb] can you circulate this idea quickly with some of the above affected module parties to see how they feel about it?", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-03-01T16:14:17.000+0000", "updated": "2016-03-01T16:14:17.000+0000" }, { "id": "378320", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Thanks Chris, sounds great! For me being affected with ti.googlemaps, it's fine. ", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-03-01T16:19:17.000+0000", "updated": "2016-03-01T16:19:17.000+0000" }, { "id": "378321", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~ben.bahrenburg@gmail.com] [~timanrebel] what do you think of Chris is solution to have a {{Resources}} folder under the module?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-03-01T16:20:25.000+0000", "updated": "2016-03-01T16:20:25.000+0000" }, { "id": "378326", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~cbarber] one note on the name of the folder. Does it do exactly the same as if you would have these files in the project's Resources folder? If not then we should use a different name.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-03-01T16:38:36.000+0000", "updated": "2016-03-01T16:38:36.000+0000" }, { "id": "378329", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "[~fokkezb] It does the same exact thing as the {{Resources}} in apps.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2016-03-01T16:50:51.000+0000", "updated": "2016-03-01T16:50:51.000+0000" }, { "id": "378376", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "master PR: https://github.com/appcelerator/titanium_mobile/pull/7790\r\n5_2_X PR: https://github.com/appcelerator/titanium_mobile/pull/7791", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2016-03-01T22:18:14.000+0000", "updated": "2016-03-01T22:18:14.000+0000" }, { "id": "378378", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Chris, thanks! How can we use this PR for the module development? Same \"iphone/Resources/\" folder?", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-03-01T22:28:37.000+0000", "updated": "2016-03-01T22:28:37.000+0000" }, { "id": "378387", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "Apply this PR. Create a new module. Put stuff in the {{iphone/Resources}} folder. Build it. Install it. Create a Titanium app. Add the module to the tiapp.xml. Build the app.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2016-03-01T22:56:09.000+0000", "updated": "2016-03-01T22:56:09.000+0000" }, { "id": "378466", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Scons'd the SDK, made it the default SDK, created a folder \"Resources\" inside {{/iphone/}}, copied the bundle (GoogleMaps.bundle) inside and built it using the module build-script (build.py). The packaged module does not seem to include the file and the module doesn't work. \r\n\r\nI'm sure I just have the wrong folder structure on module-side, but the users will definitely need at least a [updated guide|https://wiki.appcelerator.org/display/guides2/iOS+Module+Development+Guide] in order to update their modules properly. \r\n\r\nModule PR to pull and test: https://github.com/hansemannn/Ti.GoogleMaps/pull/13", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-03-02T12:39:07.000+0000", "updated": "2016-03-02T12:39:37.000+0000" }, { "id": "378476", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "[~hansknoechel] The build.py is deprecated. There's a message at the top build.py output that told you to use the CLI.\r\n\r\n{code}\r\ncd /path/to/module\r\ncd iphone\r\nti build -p ios --build-only\r\n{code}", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2016-03-02T15:40:23.000+0000", "updated": "2016-03-02T15:40:23.000+0000" }, { "id": "378478", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Yes, but only for new modules. Existing module dev's will not get that message at all. Further notes:\r\n- If I don't have the {{assets}} directory, the build fails (build.py didn't). \r\n- All those discussions should into the guide before we merge\r\n- The update will force both module and app developers to use at least 5.2.1\r\n\r\nWill test now.\r\n\r\n*EDIT*: Works fine!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-03-02T15:52:49.000+0000", "updated": "2016-03-02T15:56:25.000+0000" }, { "id": "378479", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I would guess that you would keep the assets in two places for maximum compatibility? The only issue would be that you couldn't specifically use 5.2.0.\r\n\r\n* Old location for < 5.2.0\r\n* New location for > 5.2.0", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-03-02T15:56:49.000+0000", "updated": "2016-03-02T15:57:13.000+0000" }, { "id": "378480", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "Part of the problem with the old build.py is it NEVER gets updated regardless of the SDK. So, that makes sense you didn't see the message.\r\n\r\nI'll fix the PR quick to not require an assets dir. Update: fixed!", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2016-03-02T16:02:15.000+0000", "updated": "2016-03-02T18:30:39.000+0000" }, { "id": "378516", "author": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "body": "PR merged.", "updateAuthor": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "created": "2016-03-03T00:51:16.000+0000", "updated": "2016-03-03T00:51:16.000+0000" }, { "id": "378588", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "So... we now need to create a.. TIDOC-2470 :)\r\n\r\nDo newly generated modules still have a {{build.py}}? Do Android modules also need to be build via {{ti build}}? And how about [Studio|http://docs.appcelerator.com/platform/latest/#!/guide/iOS_Module_Project-section-43288810_iOSModuleProject-BuildandPackagetheModule.1], is that already updated to use {{ti build}} instead of the {{build.py}} script?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-03-03T15:02:10.000+0000", "updated": "2016-03-03T15:02:10.000+0000" }, { "id": "378606", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "[~fokkezb] Answered most of your questions on TIDOC-2470. We'll need someone from Studio to chime in.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2016-03-03T16:31:08.000+0000", "updated": "2016-03-03T16:31:08.000+0000" }, { "id": "378616", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-03-03T18:50:56.000+0000", "updated": "2016-03-03T19:53:23.000+0000" }, { "id": "378903", "author": { "name": "timanrebel", "key": "timanrebel", "displayName": "Timan Rebel", "active": true, "timeZone": "Europe/London" }, "body": "Bit late to the party (was on holiday), but great idea to have a `Resources` folder. Also removes some tricks in the `module.xconfig` where I always forget the change the version number to the correct module version. Thanks!", "updateAuthor": { "name": "timanrebel", "key": "timanrebel", "displayName": "Timan Rebel", "active": true, "timeZone": "Europe/London" }, "created": "2016-03-07T08:54:21.000+0000", "updated": "2016-03-07T08:54:32.000+0000" }, { "id": "380429", "author": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Verified fixed, using:\r\n\r\nMacOS 10.11.4 (15E65)\r\nStudio 4.5.0.201602170821\r\nTi SDK 5.2.1.v20160318225121\r\nAppc NPM 4.2.4-2\r\nAppc CLI 5.2.1-20\r\nAlloy 1.8.1\r\nXcode 7.3 (7D175)\r\n\r\nTested the new build process by building modules that did not need updating and contained a build.py. Verified commonJS modules, modules with multiple architectures, asset bundling, doc generation and the standard modules were able to build. Then updated several modules from the list in the ticket body and went through the same checklist after removing the build.py and verifying that the modules were working as expected with the new build process.", "updateAuthor": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-03-22T20:10:32.000+0000", "updated": "2016-03-22T20:10:32.000+0000" } ], "maxResults": 26, "total": 26, "startAt": 0 } } }