{ "id": "171791", "key": "TIMOB-26128", "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": "20238", "description": "", "name": "Release 7.5.0", "archived": false, "released": true, "releaseDate": "2018-11-15" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2018-09-19T21:33:47.000+0000", "created": "2018-06-13T18:49:05.000+0000", "priority": { "name": "Low", "id": "4" }, "labels": [ "android", "assets" ], "versions": [], "issuelinks": [], "assignee": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2018-10-09T12:32:38.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": "10202", "name": "Android", "description": "Android Platform" } ], "description": "*Summary:*\r\nDirectory names have a leading underscore '_' (ex: \"_MyDirectory\") are automatically excluded from the built Android APK's \"assets\" directory. Google did this intentionally with their \"aapt\" command line tool. We should change this behavior since iOS and Windows doesn't have this restriction. (Makes it less confusing too.)\r\n\r\nFor JavaScript files under these directories, they will only be excluded when building for the emulator since they're added to the APK's \"assets\" directory in this case. For \"device\" and \"production\" builds, the JavaScript will be correctly included, but this is because they're compiled/encrypted and not bundled under the APK's \"assets\" directory in this case.\r\n\r\n*Steps to reproduce:*\r\n# Create a Titanium \"Classic\" app.\r\n# Copy the attached [^Test.zip] file's contents to your app.\r\n# Build and run the app for the Android emulator.\r\n# On app startup, a runtime error will occur where {{require()}} will fail to find the JavaScript file under directory \"_Test\".\r\n# Build and run the app to an Android device. _(Note the emulator.)_\r\n# On app startup, note that a window is displayed, but it fails to display an image. _(The JS files was loaded, but the \"_Test/AppcLogo.png\" did not get included into the APK.)_\r\n\r\n*Cause:*\r\nGoogle's command line tool \"aapt\" will automatically exclude the following from the APK's assets directory:\r\n* .svn\r\n* .git\r\n* .ds_store\r\n* .scc\r\n* .CVS\r\n* thumbs.db\r\n* picasa.ini\r\n* _\r\n\r\nWe can change this behavior by using \"aapt\" argument {{--ignore-assets}} and tell it not to omit directories with a leading underscore.\r\n", "attachment": [ { "id": "65261", "filename": "Test.zip", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-06-13T20:47:56.000+0000", "size": 52679, "mimeType": "application/zip" } ], "flagged": false, "summary": "Android: Allow asset directory names with a leading underscore to be included in the build", "creator": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 1073, "state": "closed", "name": "2018 Sprint 19 SDK", "startDate": "2018-09-09T21:02:56.422Z", "endDate": "2018-09-23T21:02:00.000Z", "completeDate": "2018-09-23T22:28:10.932Z", "originBoardId": 114 }, { "id": 1058, "state": "closed", "name": "2018 Sprint 16 SDK", "startDate": "2018-07-29T22:26:06.486Z", "endDate": "2018-08-12T22:26:00.000Z", "completeDate": "2018-08-13T17:38:16.757Z", "originBoardId": 114 }, { "id": 1045, "state": "closed", "name": "2018 Sprint 13 SDK", "startDate": "2018-06-17T20:47:13.621Z", "endDate": "2018-07-01T20:47:00.000Z", "completeDate": "2018-07-02T18:40:05.029Z", "originBoardId": 114 }, { "id": 1065, "state": "closed", "name": "2016 Sprint 17 SDK", "startDate": "2018-08-13T17:39:36.846Z", "endDate": "2018-08-27T17:39:00.000Z", "completeDate": "2018-08-29T16:10:57.013Z", "originBoardId": 114 }, { "id": 1050, "state": "closed", "name": "2018 Sprint 14 SDK", "startDate": "2018-07-01T18:40:57.193Z", "endDate": "2018-07-15T18:40:00.000Z", "completeDate": "2018-07-16T03:27:08.720Z", "originBoardId": 114 }, { "id": 1053, "state": "closed", "name": "2018 Sprint 15 SDK", "startDate": "2018-07-15T21:52:05.453Z", "endDate": "2018-07-29T21:52:00.000Z", "completeDate": "2018-07-29T22:25:11.723Z", "originBoardId": 114 }, { "id": 1070, "state": "closed", "name": "2018 Sprint 18 SDK", "startDate": "2018-08-26T16:14:35.297Z", "endDate": "2018-09-09T16:14:00.000Z", "completeDate": "2018-09-11T20:59:21.495Z", "originBoardId": 114 }, { "id": 1039, "state": "closed", "name": "2018 Sprint 12 SDK", "startDate": "2018-06-03T15:22:23.401Z", "endDate": "2018-06-17T15:22:00.000Z", "completeDate": "2018-06-18T20:45:36.363Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "438451", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (master): https://github.com/appcelerator/titanium_mobile/pull/10112", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-06-16T03:47:20.000+0000", "updated": "2018-06-16T03:47:20.000+0000" }, { "id": "441656", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR Passed.\r\n\r\nDirectories with \"_\" are included in the apk & assets in the test are displayed as expected.\r\n\r\nStudio Ver: 5.1.1.201809051655\r\nSDK Ver: 7.5.0 local build\r\nOS Ver: 10.13.5\r\nXcode Ver: Xcode 9.4.1\r\nAppc NPM: 4.2.13\r\nAppc CLI: 7.0.6\r\nDaemon Ver: 1.1.3\r\nTi CLI Ver: 5.1.1\r\nAlloy Ver: 1.13.2\r\nNode Ver: 8.9.1\r\nNPM Ver: 5.5.1\r\nJava Ver: 10.0.2\r\nDevices: ⇨ google Nexus 5 (Android 6.0.1)\r\n ⇨ google Pixel (Android 9)\r\nEmulator: ⇨ Android 4.1.2\r\n", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-09-18T18:58:19.000+0000", "updated": "2018-09-18T18:58:19.000+0000" }, { "id": "441815", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR Merged.", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-09-19T21:33:44.000+0000", "updated": "2018-09-19T21:33:44.000+0000" }, { "id": "442442", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "*Closing ticket.* Fix can now be verified in SDK version {{7.5.0.v20181008124804}}.\r\n\r\nTest and other information can be found at:\r\nhttps://github.com/appcelerator/titanium_mobile/pull/10112", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-10-09T12:32:33.000+0000", "updated": "2018-10-09T12:32:33.000+0000" } ], "maxResults": 4, "total": 4, "startAt": 0 } } }