{ "id": "148692", "key": "TIMOB-18998", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "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-02T02:19:32.000+0000", "created": "2015-06-11T15:13:29.000+0000", "epic": { "id": 149396, "key": "TIMOB-19145", "name": "iOS: iOS 9 Updates", "summary": "iOS: iOS9 Updates", "color": { "key": "color_1" }, "done": false }, "priority": { "name": "High", "id": "2" }, "labels": [ "appthinning", "ios9" ], "versions": [], "issuelinks": [ { "id": "48346", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "149117", "key": "TIMOB-19069", "fields": { "summary": "IOS9: App thinning: Support on-demand resources for app thinning", "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": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "49187", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "151709", "key": "TIDOC-2330", "fields": { "summary": "iOS9: Support for App thinning", "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": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "48401", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "149691", "key": "TIMOB-19218", "fields": { "summary": "iOS9: Disable bitcode in build settings by default", "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": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "57687", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "169128", "key": "TIMOB-25032", "fields": { "summary": "iOS: Resolve asset-catalog hashes back to real names, fail build when detecting duplicates", "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": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } } ], "assignee": { "name": "pinnamuri", "key": "pinnamuri", "displayName": "Praveen Innamuri", "active": false, "timeZone": "America/Los_Angeles" }, "updated": "2019-06-11T16:17: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": "The first stage of app thinning support is to correctly sort out graphic assets by their associated targets and scale factor (1x,2x,3x | iphone, ipad). This is already supported at the file level to some extent with the proxies loading files with the appropriate file names flags on a particular device.\r\n\r\nThis is a two part improvement and as more information is gained from apple, split into appropriate tickets.\r\n\r\nApple will be documenting the XCAsset Source Artifact Format (basically a folder with JSON markup - Content.json) that will allow the cli to gather in project resources and create the needed imageset.\r\n\r\nThe proxies will need to be able to access the assets located within the asset catalogs at runtime.\r\n\r\n*Reference*: https://developer.apple.com/library/prerelease/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html\r\n\r\n*Note*: Filenames with suffix 2x, 3x etc will still work in runtime. However, Apple will not slice the app into variants according to this naming convention. These files *must be inside asset catalogs* in order for app thinning to work.\r\n\r\nh4. Attached screenshot of how to get to use App Thinning. \r\nThese are the steps to reproduce on Xcode 7 Beta2:\r\n1. Archive your app in Xcode 7 Beta2. This archive will still be full sized.\r\n2. Select archive and choose to export.\r\n3. Choose last option to export ipa file for development use.\r\n4. This screen will appear and you can choose specific device.\r\n5. After export, show package contents of ipa and you can see a Assets.car file that contains the images. As compared to not using App thinning, you won't see the car file but instead your image files. \r\n\r\nh4. Some More Reference:\r\n_AssetCatalog Folder looks like this_\r\n{quote}\r\nMedia.xcassets\r\n-- fullscreen.imageset\r\n---- fullscreen.png\r\n---- fullscreen@2x.png\r\n---- fullscreen@2x~ipad.png\r\n---- etc.\r\n---- Contents.json\r\n-- titleImage.imageset\r\n---- titleImage.png\r\n---- titleImage@2x.png\r\n---- titleImage@3x.png\r\n---- etc\r\n---- Contents.json\r\n-- Contents.json\r\n{quote}\r\n\r\n_Contents.json file looks like this_\r\n{code}\r\n{\r\n \"images\" : [\r\n {\r\n \"idiom\" : \"universal\",\r\n \"filename\" : \"fullscreen.png\",\r\n \"scale\" : \"1x\"\r\n },\r\n {\r\n \"idiom\" : \"universal\",\r\n \"filename\" : \"fullscreen@2x.png\",\r\n \"scale\" : \"2x\"\r\n },\r\n {\r\n \"idiom\" : \"universal\",\r\n \"filename\" : \"fullscreen@3x.png\",\r\n \"scale\" : \"3x\"\r\n },\r\n {\r\n \"idiom\" : \"iphone\",\r\n \"filename\" : \"fullscreen~iphone.png\",\r\n \"scale\" : \"1x\"\r\n },\r\n {\r\n \"idiom\" : \"iphone\",\r\n \"filename\" : \"fullscreen@2x~iphone.png\",\r\n \"scale\" : \"2x\"\r\n },\r\n {\r\n \"idiom\" : \"iphone\",\r\n \"scale\" : \"3x\"\r\n },\r\n {\r\n \"idiom\" : \"ipad\",\r\n \"filename\" : \"fullscreen~ipad.png\",\r\n \"scale\" : \"1x\"\r\n },\r\n {\r\n \"idiom\" : \"ipad\",\r\n \"filename\" : \"fullscreen@2x~ipad.png\",\r\n \"scale\" : \"2x\"\r\n }\r\n ],\r\n \"info\" : {\r\n \"version\" : 1,\r\n \"author\" : \"xcode\"\r\n }\r\n}\r\n{code}", "attachment": [ { "id": "56132", "filename": "Screen Shot 2015-07-09 at 1.03.55 pm.png", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-07-09T05:22:15.000+0000", "size": 120779, "mimeType": "image/png" } ], "flagged": false, "summary": "iOS9: App thinning: Create XCAssets (imagesets) w/ the cli and access resources within those catalogs at runtime", "creator": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "subtasks": [ { "id": "150046", "key": "TIMOB-19295", "fields": { "summary": "iOS9: Titanium CLI automatically converts existing images to assets catalog", "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": "8", "description": "A technical task.", "name": "Technical task", "subtask": true } } }, { "id": "150047", "key": "TIMOB-19296", "fields": { "summary": "iOS9: Update image related methods to support the use of assets catalogs", "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": "8", "description": "A technical task.", "name": "Technical task", "subtask": true } } }, { "id": "150048", "key": "TIMOB-19297", "fields": { "summary": "iOS9: Titanium CLI automatically converts app icons and launch images to assets catalog", "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": "8", "description": "A technical task.", "name": "Technical task", "subtask": true } } } ], "reporter": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "environment": null, "closedSprints": [ { "id": 494, "state": "closed", "name": "2015 Sprint 20 SDK", "startDate": "2015-09-26T00:29:19.845Z", "endDate": "2015-10-10T00:29:00.000Z", "completeDate": "2015-10-12T05:33:30.964Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "354885", "author": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "body": "Will add apple doc link as soon as posted.", "updateAuthor": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "created": "2015-06-11T15:16:31.000+0000", "updated": "2015-06-11T15:16:31.000+0000" }, { "id": "357327", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "*Titanium Reference:* http://www.appcelerator.com/blog/2015/04/how-to-use-density-specific-images/\r\nWe will need to consider the current method titanium developers are used to, and based on that, how best to integrate app thinning.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-07-09T03:12:17.000+0000", "updated": "2015-07-09T03:12:17.000+0000" }, { "id": "357694", "author": { "name": "tcrist", "key": "tcrist", "displayName": "Travis Crist", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Will the implementation of this force apps to enable bitcode? ", "updateAuthor": { "name": "tcrist", "key": "tcrist", "displayName": "Travis Crist", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-07-14T21:13:13.000+0000", "updated": "2015-07-14T21:13:52.000+0000" }, { "id": "357698", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "As far as I can tell, although bitcode is part of app thinning, it has nothing to do with xcassets. Currently bit code is enabled YES in build settings by default in every Xcode project in Xcode 7 Beta 3.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-07-14T21:37:01.000+0000", "updated": "2015-07-14T21:37:01.000+0000" }, { "id": "357699", "author": { "name": "tcrist", "key": "tcrist", "displayName": "Travis Crist", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Thanks Chee for the info. Is it possible to request support to disable bitcode in the build settings? \r\n\r\nI ask because we have many 3rd party frameworks and if they all have to support bitcode then we will not be in good shape to build with iOS 9. I am concerned that Xcode 7 defaults it to Yes and that there needs to be an ability to set it to No for those who are not able to fully use it yet due to special circumstances. Would that be possible? \r\n\r\nOr do I need to file a new ticket for that request? \r\n\r\nThanks, \r\nTravis", "updateAuthor": { "name": "tcrist", "key": "tcrist", "displayName": "Travis Crist", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-07-14T21:55:57.000+0000", "updated": "2015-07-14T21:55:57.000+0000" }, { "id": "357701", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "We are actually in the midst of considering that, thank you for your input. It will be great if you could file a new ticket for this. ", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-07-14T22:27:12.000+0000", "updated": "2015-07-14T22:27:12.000+0000" }, { "id": "358261", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Latest updated [docs|https://developer.apple.com/library/prerelease/ios/documentation/Xcode/Reference/xcode_ref-Asset_Catalog_Format/FolderStructure.html#//apple_ref/doc/uid/TP40015170-CH18-DontLinkElementID_2] from Apple.\r\n\r\nNote: This clearly describes that even if you group the images, all assets filenames in the asset catalog MUST be unique.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-07-24T17:07:40.000+0000", "updated": "2015-07-24T17:07:40.000+0000" }, { "id": "365606", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "All subtasks are complete. Resolving this issue.\r\n\r\nh4. Steps to Test\r\n1. Using [~fokkezb] app in http://www.appcelerator.com/blog/2015/04/how-to-use-density-specific-images/\r\n2. After build, verify all images are in the asset catalog in the Xcode project in /build/iphone\r\n\r\nAlso test if packaged app (for specific device) is app thinned.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-10-02T02:19:15.000+0000", "updated": "2015-10-02T02:19:15.000+0000" }, { "id": "368499", "author": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Verified implemented, using:\r\n\r\nMacOS 10.11.2 (15C27e)\r\nStudio 4.4.0.201510290507\r\nTi SDK 5.1.0.v20151028190028\r\nAppc NPM 4.2.1\r\nAppc CLI 5.1.0-38\r\nTi CLI 5.0.5\r\nAlloy 1.7.16\r\nArrow 1.3.13\r\nXcode 7.2 (7C46l)\r\nNode v0.12.7\r\nJava 1.7.0_80\r\nproduction\r\n\r\nImages are put into asset catalog in the Xcode project. App thinning successfully reduces app size and images available in exported archive", "updateAuthor": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-10-30T21:19:23.000+0000", "updated": "2015-10-30T21:19:23.000+0000" } ], "maxResults": 10, "total": 10, "startAt": 0 } } }