{ "id": "174630", "key": "TIMOB-27718", "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": "20033", "name": "Release 9.0.0", "archived": false, "released": true, "releaseDate": "2020-03-18" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2020-01-30T21:14:40.000+0000", "created": "2020-01-16T01:31:23.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "android", "build", "resources" ], "versions": [], "issuelinks": [], "assignee": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2020-01-30T21:14:40.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": "*Preface:*\r\nAn Android APK's \"res\" files (such as drawables) have the following restictions:\r\n* File names can only have lower-case letters, numbers, or underscores.\r\n* File names cannot start with a number.\r\n* Cannot be placed in subdirectories.\r\n\r\nThe above limitations are by Google's design, because the Android build system turns \"res\" file names into Java constants under the generated {{R}} class. Violating the above will result in a build failure.\r\n\r\nHowever, Titanium allows app developers to violate the above rules and will lower-case the file name and replace illegal characters and directory separators with {{'_'}} underscores.\r\n\r\n*App Changes for Titanium 9.0.0:*\r\nFor app builds, we want to maintain backward compatibility. This means allowing app developer to continue to violate Google's \"res\" file naming rules, but we should log a build +WARNING+ for every \"res\" file in violation to compel app developer's to follow Google's best-practices. This will also help minimize confusion when attempting to access a \"res\" file via native Java APIs using the illegal name, which won't work.\r\n\r\n*Module Changes for Titanium 9.0.0:*\r\nNative modules built with Titanium 9.0.0 and higher will no longer be allowed to violate Google's \"res\" file naming rules. This is because we're now building a native module to an AAR library which packages the module's \"res\" files. So, illegal \"res\" file names will cause a build failure just like how it works in Android Studio.\r\n\r\n*Test:*\r\nThe attached [^Resources.zip] contains a directory tree of image files which violate Google's \"res\" naming conventions.\r\n", "attachment": [ { "id": "67236", "filename": "Resources.zip", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-01-17T03:08:36.000+0000", "size": 18370, "mimeType": "application/zip" } ], "flagged": false, "summary": "Android: Log build warnings if \"res\" files have invalid names", "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": 1177, "state": "closed", "name": "2020 Sprint 2", "startDate": "2020-01-20T17:44:37.733Z", "endDate": "2020-01-31T17:44:00.000Z", "completeDate": "2020-01-31T16:57:44.689Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "453731", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (master): https://github.com/appcelerator/titanium_mobile/pull/11438", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-01-17T01:13:16.000+0000", "updated": "2020-01-17T01:13:16.000+0000" }, { "id": "453753", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR passed, Waiting on Jenkins build.", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-01-21T15:20:29.000+0000", "updated": "2020-01-21T15:20:29.000+0000" }, { "id": "453782", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "merged to master for 9.0.0", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2020-01-23T15:04:49.000+0000", "updated": "2020-01-23T15:04:49.000+0000" }, { "id": "453951", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified the fix with SDK 9.0.0.v20200130075800.\r\nClosing.", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-01-30T21:14:36.000+0000", "updated": "2020-01-30T21:14:36.000+0000" } ], "maxResults": 4, "total": 4, "startAt": 0 } } }