{ "id": "166916", "key": "TIMOB-24553", "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": [], "resolution": { "id": "6", "description": "", "name": "Hold" }, "resolutiondate": "2019-06-04T15:34:42.000+0000", "created": "2017-04-03T23:18:27.000+0000", "priority": { "name": "None", "id": "6" }, "labels": [ "cb-tooling", "engTriage" ], "versions": [ { "id": "19275", "description": "Patch release for 6.0.x regressions or important fixes", "name": "Release 6.0.3", "archived": false, "released": true, "releaseDate": "2017-03-22" }, { "id": "19882", "name": "Release 8.0.0", "archived": false, "released": true, "releaseDate": "2019-03-14" } ], "issuelinks": [], "assignee": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updated": "2019-06-04T15:34:59.000+0000", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" }, { "id": "10207", "name": "Tooling" } ], "description": "When building an app for Android and the {{}} in the tiapp.xml refers to a filename with a character that doesn't match the regex {{a-z0-9_.}}, then the build fails with:\r\n\r\n{code}\r\n[ERROR] Failed to package application:\r\n[ERROR]\r\n[ERROR] res/drawable/appicon-76.png: Invalid file name: must contain only [a-z0-9_.]\r\n{code}\r\n\r\nWorkaround is to only use {{a-z0-9_.}} characters in the appicon filename.\r\n\r\nThis ticket is invalid if we get around to creating a universal asset management system.", "attachment": [], "flagged": false, "summary": "Android: Build breaks if contains a non-[a-z0-9_.] character", "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, "comment": { "comments": [ { "id": "417202", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This is partly a native Android limitation. Google's Android build system (not Appcelerator) generates an \"R.java\" file where a Java constant gets created for each file under the APK's \"res\" folder. The \"res\" file names are used as-is during code generation. So, file names containing spaces, dashes, leading numbers, or Java keywords (if, for, where, etc.) would cause compiler errors on Google's end.\r\n\r\nPerhaps we should validate the files under the \"res\" folder first to provide a more useful build failure message to the developer? The validation code can be similar to what we use to validate a Titanium \"Application Id\", which gets turned into an Android package name.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-04-11T18:04:34.000+0000", "updated": "2017-04-11T18:04:34.000+0000" } ], "maxResults": 1, "total": 1, "startAt": 0 } } }