{ "id": "152403", "key": "TIMOB-19809", "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": "14826", "description": "Release 5.1.0-remaining iOS9 features, Android M features", "name": "Release 5.1.0", "archived": false, "released": true, "releaseDate": "2015-11-20" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2015-10-29T01:52:07.000+0000", "created": "2015-10-27T23:41:00.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "qe-5.1.0" ], "versions": [ { "id": "14826", "description": "Release 5.1.0-remaining iOS9 features, Android M features", "name": "Release 5.1.0", "archived": false, "released": true, "releaseDate": "2015-11-20" } ], "issuelinks": [ { "id": "49543", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "152490", "key": "TIMOB-19830", "fields": { "summary": "If you do not have the correct app icons, then a smarter error message should apear", "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" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } }, { "id": "49483", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "151922", "key": "TIMOB-19707", "fields": { "summary": "iOS: Error: \"DefaultIcon.png cannot be used because it contains an alpha channel\"", "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": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updated": "2015-10-30T00:45:13.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": "13103", "name": "CLI", "description": "Node-based command line interface" }, { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "*Details:* \"There are missing app icons\" error is returned if you build a mobile project pre-5.0.0 stack that *DOES have all required app icons.*\r\n\r\n*Steps to reproduce:*\r\n# Create an Alloy project using pre-5.0.0 stack:\r\n** Appc CLI NPM: 4.1.1\r\n** Appc CLI Core: 4.1.3\r\n** SDK: 4.1.0.GA\r\n** Node: v0.12.7\r\n** OS: El Capitan (10.11.1)\r\n# After the Alloy project is created, switch your environment to 5.1.X stack; see above environment field\r\n# Next, clean your Alloy project with {{appc ti clean}}\r\n# Then, install your Alloy project to an iOS device\r\n\r\n*Actual:* \"There are missing app icons\" error and 'alpha channel' warnings are returned; see attachment.\r\n*Expected:* \r\n\r\n||Required App Icons||Optional App Icons||DefaultIcon.png||DefaultIcon-ios.png||Expected Result||\r\n|All present, correct size, no alpha|All present, correct size, no alpha|doesn't matter|doesn't matter|build succeeds|\r\n|Missing 1 required icon|All present, correct size, no alpha|no|no|build fails|\r\n|Missing 1 required icon|All present, correct size, no alpha|yes w/o alpha|no|missing icon generated from DefaultIcon.png, build succeeds|\r\n|Missing 1 required icon|All present, correct size, no alpha|yes w/ alpha|no|DefaultIcon.png flattened, missing icon generated from DefaultIcon.png, build succeeds|\r\n|1 or more icons have alpha|All present, correct size, no alpha|none|none|app icon is flattened, build succeeds|\r\n|1 or more icons have alpha|All present, correct size, no alpha|yes w alpha|none|app icons are flattened, build succeeds|\r\n|1 or more icons have alpha|All present, correct size, no alpha|yes w alpha|yes w/o alpha|generates non-alpha icons from DefaultIcon-ios.png, build succeeds|\r\n|Icon has wrong size|All present, correct size, no alpha|no|no|build fails|\r\n|Icon has wrong size|All present, correct size, no alpha|yes w/o alpha|no|generates app icon from DefaultIcon.png with correct size, build succeeds|\r\n|Icon has wrong size|All present, correct size, no alpha|yes w/ alpha|no|flattens DefaultIcon.png, generates app icon from DefaultIcon.png with correct size, build succeeds|\r\n|Icon has wrong size|All present, correct size, no alpha|yes w/ alpha|yes w/o alpha|generates app icon from DefaultIcon-ios.png with correct size, build succeeds|\r\n|All present, correct size, no alpha|Missing app icon|no|no|prints warning, build succeeds|\r\n|All present, correct size, no alpha|Missing app icon|yes w/ alpha|no|DefaultIcon.png flattened, missing icon generated from DefaultIcon.png, build succeeds|\r\n|All present, correct size, no alpha|Missing app icon|yes w/ alpha|yes w/ alpha|DefaultIcon-ios.png flattened, missing icon generated from DefaultIcon-ios.png, build succeeds|\r\n|All present, correct size, no alpha|Missing app icon|yes w/ alpha|yes w/o alpha|Missing icon generated from DefaultIcon-ios.png, build succeeds|", "attachment": [ { "id": "57157", "filename": "magic.png", "author": { "name": "wluu", "key": "wluu", "displayName": "Wilson Luu", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-10-27T23:40:23.000+0000", "size": 683800, "mimeType": "image/png" } ], "flagged": false, "summary": "iOS: \"There are missing app icons\" error is returned if you build a mobile project pre-5.0.0 stack", "creator": { "name": "wluu", "key": "wluu", "displayName": "Wilson Luu", "active": false, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "wluu", "key": "wluu", "displayName": "Wilson Luu", "active": false, "timeZone": "America/Los_Angeles" }, "environment": "Appcelerator Studio, build: 4.4.0.201510270509\r\nAppc CLI NPM: 4.2.1\r\nAppc CLI Core: 5.1.0-38\r\nArrow: 1.3.13\r\nSDK: 5.1.0.v20151026164636\r\nNode: v0.12.7\r\nOS: El Capitan (10.11.1)\r\nXcode: 7.1\r\n", "closedSprints": [ { "id": 520, "state": "closed", "name": "2015 Sprint 22 Tooling", "startDate": "2015-10-26T16:54:38.390Z", "endDate": "2015-11-07T02:54:00.000Z", "completeDate": "2015-11-10T23:31:39.740Z", "originBoardId": 121 } ], "comment": { "comments": [ { "id": "368061", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Based on http://docs.appcelerator.com/platform/release-notes/?version=5.0.0.GA#deprecated_icons, building a pre-5.0.0 project with a 5.0.0+ SDK is expected to fail due to missing icons. This, the \"Expected: You should be able to build a mobile project pre-5.0.0 stack without any issues.\" is incorrect, as the complete set of icons does not exist, and there is no DefaultIcon.png in the project.\r\n\r\nHowever, the error about missing icons (while pointing to those at least some of the same icons existing in the project) is confusing and should be fixed.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-10-28T01:15:31.000+0000", "updated": "2015-10-28T01:15:31.000+0000" }, { "id": "368062", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": " would recommend a changed summary as the current one is non-obvious (to me)", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-10-28T01:18:12.000+0000", "updated": "2015-10-28T01:18:12.000+0000" }, { "id": "368068", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "[~ingo], This ticket is addressing the issue whereby the complete set of icons *does exist* (but with alpha channel) and it's causing the error. We should be flattening the app icons in Resource folder if no DefaultIcon.png exist. So the expected statement here is still valid.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-10-28T02:12:24.000+0000", "updated": "2015-10-28T02:13:45.000+0000" }, { "id": "368069", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "You sure? appicon-76 and appicon-76@2x do not exist. Some icons are missing, and some icons have alpha channels. The error messages should be distinct.\r\n\r\nIf you did have a complete set of proper icons from a 4.X project, it should not fail the build. But I believe the default set of icons for either a classic or Alloy project is not complete. So given these reproduction steps, the expected statement is invalid.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-10-28T02:21:09.000+0000", "updated": "2015-10-28T02:21:09.000+0000" }, { "id": "368072", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "ok we'll see how we can improve the messages.\r\nJust to make sure everyone's clear:\r\nExpected Results should be:\r\n\r\n||No.||Project version||DefaultIcon.png||*Required* icons in Resource folder (or assets/iphone)||Expected Result when built post-5.0.0||\r\n|1|pre 5.0.0|exist|exist and has alpha channel|build successfully|\r\n|2|pre 5.0.0|exist|exist and has no alpha channel|build successfully|\r\n|3|pre 5.0.0|exist|don't exist|build successfully|\r\n|4|pre 5.0.0|don't exist|exist and has alpha channel|build successfully|\r\n|5|pre 5.0.0|don't exist|exist and has no alpha channel|build successfully|\r\n|6|pre 5.0.0|don't exist|don't exist|fail and indicate requirement for a DefaultIcon.png|\r\n\r\nSo the scenarios to address are 1 and 4. whereby we need to flatten the icons in the resource/assets folder.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-10-28T02:52:34.000+0000", "updated": "2015-10-28T02:55:07.000+0000" }, { "id": "368161", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "Master PR: https://github.com/appcelerator/titanium_mobile/pull/7364\r\n5_1_X PR: https://github.com/appcelerator/titanium_mobile/pull/7365", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2015-10-28T18:48:08.000+0000", "updated": "2015-10-28T18:48:08.000+0000" }, { "id": "368166", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "Here's how this works. We want perfect app icons without alpha. If there's an app icon with alpha, it searches for DefaultIcon-ios.png. If DefaultIcon-ios.png does not exist, it falls back to DefaultIcon.png. If the default icon does not have alpha, it is used to generate all missing icons. If there are missing app icons and a default icon with alpha, it will first flatten the default icon before generating the missing app icons. If an app icon exists, but has alpha, it will first try to generate the app icon using a non-alpha default icon, but if it has to flatten an image, it will just use the app icon, not the default icon.\r\n\r\nSo, the test matrix looks like this:\r\n\r\n||Required App Icons||Optional App Icons||DefaultIcon.png||DefaultIcon-ios.png||Expected Result||\r\n|All present, correct size, no alpha|All present, correct size, no alpha|doesn't matter|doesn't matter|build succeeds|\r\n|Missing 1 required icon|All present, correct size, no alpha|no|no|build fails|\r\n|Missing 1 required icon|All present, correct size, no alpha|yes w/o alpha|no|missing icon generated from DefaultIcon.png, build succeeds|\r\n|Missing 1 required icon|All present, correct size, no alpha|yes w/ alpha|no|DefaultIcon.png flattened, missing icon generated from DefaultIcon.png, build succeeds|\r\n|1 or more icons have alpha|All present, correct size, no alpha|none|none|app icon is flattened, build succeeds|\r\n|1 or more icons have alpha|All present, correct size, no alpha|yes w alpha|none|app icons are flattened, build succeeds|\r\n|1 or more icons have alpha|All present, correct size, no alpha|yes w alpha|yes w/o alpha|generates non-alpha icons from DefaultIcon-ios.png, build succeeds|\r\n|Icon has wrong size|All present, correct size, no alpha|no|no|build fails|\r\n|Icon has wrong size|All present, correct size, no alpha|yes w/o alpha|no|generates app icon from DefaultIcon.png with correct size, build succeeds|\r\n|Icon has wrong size|All present, correct size, no alpha|yes w/ alpha|no|flattens DefaultIcon.png, generates app icon from DefaultIcon.png with correct size, build succeeds|\r\n|Icon has wrong size|All present, correct size, no alpha|yes w/ alpha|yes w/o alpha|generates app icon from DefaultIcon-ios.png with correct size, build succeeds|\r\n|All present, correct size, no alpha|Missing app icon|no|no|prints warning, build succeeds|\r\n|All present, correct size, no alpha|Missing app icon|yes w/ alpha|no|DefaultIcon.png flattened, missing icon generated from DefaultIcon.png, build succeeds|\r\n|All present, correct size, no alpha|Missing app icon|yes w/ alpha|yes w/ alpha|DefaultIcon-ios.png flattened, missing icon generated from DefaultIcon-ios.png, build succeeds|\r\n|All present, correct size, no alpha|Missing app icon|yes w/ alpha|yes w/o alpha|Missing icon generated from DefaultIcon-ios.png, build succeeds|\r\n\r\nThe only time the build fails is if you are missing a required icon or a required icon has the wrong dimensions and you don't have a DefaultIcon.png.\r\n\r\nRequired app icons are {{appicon-60@2x.png}}, {{appicon-60@3x.png}}, {{appicon-76.png}}, and {{appicon-76@2x.png}}.\r\n\r\nOptional app icons are {{appicon-Small.png}}, {{appicon-Small@2x.png}}, {{appicon-Small@3x.png}}, {{appicon-Small-40.png}}, {{appicon-Small-40@2x.png}}, and {{appicon-Small-40@3x.png}}.\r\n\r\nDefault icons are prioritized by {{DefaultIcon-ios.png}}, {{DefaultIcon-iphone.png}}, and finally {{DefaultIcon.png}}. If {{DefaultIcon-ios.png}} and {{DefaultIcon.png}} exists, but {{DefaultIcon-ios.png}} is invalid, it will NOT fallback to {{DefaultIcon.png}}. It will fail the build if there are missing required app icons and the selected default icon is not valid.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2015-10-28T19:16:37.000+0000", "updated": "2015-10-29T00:25:47.000+0000" }, { "id": "368167", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~emerriman] may hug you for that table.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-10-28T19:17:58.000+0000", "updated": "2015-10-28T19:17:58.000+0000" }, { "id": "368207", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "[~cbarber], can you clarify this statement you wrote?\r\n{quote}\r\nDefault icons are prioritized by DefaultIcon-ios.png, DefaultIcon-ios.png, and finally DefaultIcon.png.\r\n{quote}\r\nyou do mean this right?\r\n{quote}\r\nDefault icons are prioritized by required app icons in folder, DefaultIcon-ios.png, and finally DefaultIcon.png.\r\n{quote}", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-10-29T00:09:16.000+0000", "updated": "2015-10-29T00:09:16.000+0000" }, { "id": "368209", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "[~cbarber] There are 3 scenarios i wish to verify from your table:\r\n\r\n||Required App Icons||Optional App Icons||DefaultIcon.png||DefaultIcon-ios.png||Expected Result||\r\n|Icon has wrong size|All present, correct size, no alpha|yes w alpha|yes w/o alpha|generates app icon from{color:red} DefaultIcon-ios.png{color} with correct size, build succeeds|\r\n|All present, correct size, no alpha|Missing app icon|yes w/ alpha|yes w/ alpha|DefaultIcon-ios.png flattened, missing icon generated from {color:red}DefaultIcon-ios.png{color}, build succeeds|\r\n|All present, correct size, no alpha|Missing app icon|yes w/ alpha|yes w/o alpha|Missing icon generated from {color:red}DefaultIcon-ios.png{color}, build succeeds|", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-10-29T00:18:13.000+0000", "updated": "2015-10-29T00:18:13.000+0000" }, { "id": "368210", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "[~cng] I specifically said \"Default icons\" because I meant \"default icons\". There was a typo. It should read:\r\n\r\n| Default icons are prioritized by {{DefaultIcon-ios.png}}, {{DefaultIcon-iphone.png}}, and finally {{DefaultIcon.png}}.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2015-10-29T00:22:37.000+0000", "updated": "2015-10-29T00:22:37.000+0000" }, { "id": "368211", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "[~cng] I fixed the table per your findings.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2015-10-29T00:26:16.000+0000", "updated": "2015-10-29T00:26:16.000+0000" }, { "id": "368224", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "CR and FT passed. PRs merged.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-10-29T01:51:38.000+0000", "updated": "2015-10-29T01:51:38.000+0000" }, { "id": "368379", "author": { "name": "wluu", "key": "wluu", "displayName": "Wilson Luu", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed. Verified the following:\r\n\r\n||Required App Icons||DefaultIcon.png||DefaultIcon-ios.png||Expected Result||Actual||\r\n|Missing 1 required icon|no|no|build fails|(+)|\r\n|Missing 1 required icon|yes w/o alpha|no|missing icon generated from DefaultIcon.png, build succeeds|(+)|\r\n|Missing 1 required icon|yes w/ alpha|no|DefaultIcon.png flattened, missing icon generated from DefaultIcon.png, build succeeds|(+)|\r\n|1 or more icons have alpha|none|none|app icon is flattened, build succeeds|(+)|\r\n|1 or more icons have alpha|yes w alpha|none|app icons are flattened, build succeeds|(+)|\r\n|1 or more icons have alpha|yes w alpha|yes w/o alpha|generates non-alpha icons from DefaultIcon-ios.png, build succeeds|(+)|\r\n|Icon has wrong size|no|no|build fails|(+)|\r\n|Icon has wrong size|yes w/o alpha|no|generates app icon from DefaultIcon.png with correct size, build succeeds|(+)|\r\n|Icon has wrong size|yes w/ alpha|no|flattens DefaultIcon.png, generates app icon from DefaultIcon.png with correct size, build succeeds|(+)|\r\n|Icon has wrong size|yes w/ alpha|yes w/o alpha|generates app icon from DefaultIcon-ios.png with correct size, build succeeds|(+)|\r\n|All present, correct size, no alpha|no|no|prints warning, build succeeds|(+)|\r\n|All present, correct size, no alpha|yes w/ alpha|no|DefaultIcon.png flattened, missing icon generated from DefaultIcon.png, build succeeds|(+)|\r\n|All present, correct size, no alpha|yes w/ alpha|yes w/ alpha|DefaultIcon-ios.png flattened, missing icon generated from DefaultIcon-ios.png, build succeeds|(+)|\r\n|All present, correct size, no alpha|yes w/ alpha|yes w/o alpha|Missing icon generated from DefaultIcon-ios.png, build succeeds|(+)|\r\n\r\n*Notes:*\r\n* For testing, I did not focus on the *Optional App Icons* i.e. did not go out of my way to generate and modify those optional icons because they were optional. Hence, only focused on the *Required App Icons*, *DefaultIcon.png*, and *DefaultIcon-ios.png* and used the default Alloy project.\r\n* Verified the expected behavior by monitoring the trace logs per build and see if the app gets launched onto device.\r\n* As per Ingo's comment, will update the bug description with the *correct* expected behavior and file an *improvement* ticket in regards to the \"error about missing icons\"; those still appear.\r\n\r\n*Tested on:*\r\n\r\nAppc CLI NPM: 4.2.1\r\nAppc CLI Core: 5.1.0-38\r\nArrow: 1.3.13\r\nSDK: 5.1.0.v20151028190028\r\nNode: v4.2.1\r\nOS: El Capitan (10.11.1)", "updateAuthor": { "name": "wluu", "key": "wluu", "displayName": "Wilson Luu", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-10-30T00:02:45.000+0000", "updated": "2015-10-30T00:02:45.000+0000" } ], "maxResults": 15, "total": 15, "startAt": 0 } } }