{ "id": "159275", "key": "ALOY-1490", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "11113", "key": "ALOY", "name": "Alloy", "projectCategory": { "id": "10400", "description": "Tools for developing applications", "name": "Tooling" } }, "fixVersions": [], "resolution": null, "resolutiondate": null, "created": "2016-04-03T21:25:10.000+0000", "priority": null, "labels": [], "versions": [ { "id": "17974", "name": "alloy 1.8.0", "archived": false, "released": true, "releaseDate": "2016-03-16" } ], "issuelinks": [ { "id": "51366", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "155573", "key": "ALOY-1365", "fields": { "summary": "Improve how Alloy works with i18n and platform folders", "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": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } } ], "assignee": { "name": "batman", "key": "batman", "displayName": "Bruce Wayne", "active": true, "timeZone": "America/New_York" }, "updated": "2016-05-25T11:41:37.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "13604", "name": "Tooling", "description": "Items related to Alloy tooling and workflow" } ], "description": "h3. Steps to Reproduce\r\nPlace a symbolic link to a folder or file under app/platform/android/res/* \r\n\r\nh3. Actual Result\r\nNo files or folders which are symbolic links under app/platform/ are copied across to the /platform/ folder on Android app compilation.\r\n\r\nh3. Expected Result\r\nAll files or folders whether they be symbolic links or not should be copied across to the /platform/ folder on app compilation.", "attachment": [], "flagged": false, "summary": "Alloy 1.8+ not copying symbolic links to the platform folder in the project root", "creator": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "environment": "Mac OS 10.10.5\r\nTI SDK 5.2.1\r\nTi CLI 5.0.6\r\nAlloy 1.8.5", "comment": { "comments": [ { "id": "382123", "author": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "body": "Hello, \r\n\r\nCan you explain a little more? I am not clearly understanding your issue. What do you mean by symbolic link? Please provide some steps to follow and necessary code segment. We need to test it in our environment. \r\n\r\nRegards,\r\nSharif.", "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2016-04-07T19:47:52.000+0000", "updated": "2016-04-07T19:52:24.000+0000" }, { "id": "382170", "author": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hi Sharif,\r\n\r\nI currently have 31 clients who each have their own app. The functionality is the same for each App. The only difference between the Apps are the graphics like the launch icon and the splash screens, and also tiapp.xml and manifest.\r\n\r\nSo what I do to avoid having 31 sets of the same source code, which would be updated 31 times whenever I make a change, is to use symbolic links or symlinks (shortcuts in Windows terms) to a Base App which contains all the source code and generic graphics. It means whenever I make a change to the Base App, all 31 Apps get the source code change straight away. All I have to do is republish them.\r\n\r\nNow that the platform folder has been placed into the app folder, and gets copied out to the project root directory on Android App compilation, only the files and directories that are NOT symlinks get copied across. This causes the compiler to fail as it can't find the files it requires to build the app. The error looks like this:\r\n\r\n[ERROR] : Failed to package application:\r\n[ERROR] : \r\n[ERROR] : /Users/Peter/Documents/Appcelerator_Studio_Workspace/App1/build/android/res/drawable-mdpi/ic_drawer.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited\r\n[ERROR] : /Users/Peter/Documents/Appcelerator_Studio_Workspace/App1/build/android/res/drawable-hdpi/ic_drawer.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited\r\n[ERROR] : /Users/Peter/Documents/Appcelerator_Studio_Workspace/App1/build/android/res/drawable-xhdpi/ic_drawer.png: libpng warning: iCCP: Not recognizing known sRGB profile that has been edited\r\n[ERROR] : /Users/Peter/Documents/Appcelerator_Studio_Workspace/App1/build/android/AndroidManifest.xml:4: error: Error: No resource found that matches the given name (at 'theme' with value '@style/Theme.Dark').\r\n\r\nWhen I look at the newly created platform folder in the project root, I can see that all the files that are symlinks in app/platform/ are not there.\r\n\r\nFor example, App 1 has a notification icon for when it receives Push Notifications and is located in app/platform/android/res/drawable-xxhdpi/notification.png. This file is actually a symlink from App1 to the Base App project. The Linux command I used to create the symlink looks like this:\r\n\r\nln -sv ../../../../../../Base\\ App/app/platform/android/res/drawable-xxhdpi/notification.png app/platform/android/res/drawable-xxhdpi/notification.png\r\n\r\nTry creating a symlink under app/platform/android/res/ to a file somewhere outside of the current project and then compile the project for Android and see if that symlink file gets copied across to the project root platform folder.\r\n\r\nRegards,\r\n\r\nPeter", "updateAuthor": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-04-08T07:37:16.000+0000", "updated": "2016-04-08T07:37:16.000+0000" }, { "id": "382739", "author": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hi Sharif,\r\n\r\nJust wanted to find out how you are going with this problem. Just to add a bit more information, I replaced all instances of the symlinks in the app/platform/android/res/ folder with the actual files taken from my Base App project and it compiled without error. So that shows that the symlinks are the problem. However, replacing the symlinks is not a long term solution as it means that eventually I could have 100 App projects and if I need to update any graphics that are common to all projects, I would have to do it 100 times. With symlinks, I only have to make the change once in the Base App project and all other projects are updated automatically.\r\n\r\nIf you could look into this further for me, it would be greatly appreciated.\r\n\r\nKind regards,\r\n\r\nPeter ", "updateAuthor": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-04-14T15:48:17.000+0000", "updated": "2016-04-14T15:48:17.000+0000" }, { "id": "382837", "author": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2016-04-15T16:29:46.000+0000", "updated": "2016-04-15T16:29:46.000+0000" }, { "id": "382847", "author": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hi Sharif,\r\n\r\nI looked at that other ticket link you sent, but that was resolved back in 2014. This problem with the symlinks has only just started occurring since the latest update of Appcelerator Studio which moved the platform folder into the app folder (and then recreates the platform folder in the project root). I am not sure I should reopen that ticket when it doesn't really relate to the problem I am experiencing. \r\n\r\nIn general, Appcelerator Studio works fine with symlinks, just not when it's copying the contents from app/platform to the /platform folder.\r\n\r\nKind regards,\r\n\r\nPeter\r\n", "updateAuthor": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-04-15T17:29:17.000+0000", "updated": "2016-04-15T21:08:30.000+0000" }, { "id": "382850", "author": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "body": "Hello, Can you attach a test case, sample code for us to test?", "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2016-04-15T17:58:43.000+0000", "updated": "2016-04-15T17:58:43.000+0000" }, { "id": "382861", "author": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "body": "If you look back at my comment from a week ago, you will see all the information you need. I can't provide any sample code as the problem is not a programming issue, but the way Appcelerator Studio is handling symbolic links when copying files across.", "updateAuthor": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-04-15T21:10:37.000+0000", "updated": "2016-04-15T21:10:37.000+0000" }, { "id": "382897", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~cbarber] you might want to have a look as well since you did ALOY-1365. Could it be that the way Alloy now copies platform/i18n does not include symbolic links?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-04-17T10:10:12.000+0000", "updated": "2016-04-17T10:10:12.000+0000" }, { "id": "382903", "author": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "body": "I am using relative paths in my symbolic links. I wonder if that is causing the problems. I need to use relative paths as I work between different computers and the pathing is different on each one. So an absolute path would not work when pulling files from Git.\r\n\r\nWould it be possible just to resolve the symbolic link and actually copy the file that the symbolic link links to, instead of copying across the symbolic link itself?", "updateAuthor": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-04-17T12:30:58.000+0000", "updated": "2016-04-17T12:31:22.000+0000" }, { "id": "384494", "author": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "body": "Any word on this problem so far?", "updateAuthor": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-05-02T20:55:10.000+0000", "updated": "2016-05-02T20:55:10.000+0000" }, { "id": "384576", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~cbarber] any idea?\r\n\r\n[~phorner72] not sure how relative paths in symbolic links would work once they've been copied from {{app/platform}} to {{platform}}.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-05-03T12:54:09.000+0000", "updated": "2016-05-03T12:54:09.000+0000" }, { "id": "384580", "author": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "body": "[~fokkezb] A relative path would no longer work if the symbolic link is copied up one directory higher. As I mentioned in a previous comment, it would be great if the symbolic link could be resolved and the actual file it points to would be copied into the /platform folder at the time of publishing the app. So the actual /platform file would not contain any symbolic links, just actual physical files that the symbolic links point to. Is this possible?", "updateAuthor": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-05-03T13:36:12.000+0000", "updated": "2016-05-03T13:39:01.000+0000" }, { "id": "386763", "author": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "body": "Just wanted to bump this issue and see if there has been any progress on it.", "updateAuthor": { "name": "phorner72", "key": "phorner72", "displayName": "Peter Horner", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-05-25T11:41:37.000+0000", "updated": "2016-05-25T11:41:37.000+0000" } ], "maxResults": 14, "total": 14, "startAt": 0 } } }