{ "id": "162402", "key": "TIMOB-23853", "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": "18429", "description": "", "name": "Hyperloop 2.2.0", "archived": false, "released": true, "releaseDate": "2017-10-16" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2017-09-18T15:14:49.000+0000", "created": "2016-08-04T00:22:42.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "binary", "frameworks", "hyperloop" ], "versions": [ { "id": "18264", "name": "hyperloop 1.2.7", "archived": false, "released": true, "releaseDate": "2017-02-06" } ], "issuelinks": [ { "id": "56008", "type": { "id": "10122", "name": "Gantt: start-finish", "inward": "is triggered by", "outward": "is triggering" }, "outwardIssue": { "id": "169921", "key": "TIMOB-25354", "fields": { "summary": "Hyperloop: iOS - Building hyperloop-examples app fails with Hyperloop 2.2.0", "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": "None", "id": "6" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "55967", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "inwardIssue": { "id": "161279", "key": "TIMOB-23570", "fields": { "summary": "Hyperloop: iOS - Support use_frameworks flag in Cocoapods", "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 } } } }, { "id": "56275", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "170989", "key": "TIMOB-25729", "fields": { "summary": "Hyperloop: iOS - Unable to load Mapbox using Hyperloop", "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": "None", "id": "6" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "54908", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "161279", "key": "TIMOB-23570", "fields": { "summary": "Hyperloop: iOS - Support use_frameworks flag in Cocoapods", "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": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2018-01-26T21:26:59.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": "13715", "name": "Hyperloop", "description": "Hyperloop project" }, { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "Some iOS frameworks require the XCode project to reference the *.framework* file in the \"Embedded Binaries\" section of the project properties. \r\n\r\n!Screen Shot 2016-08-04 at 10.19.04 AM.png|thumbnail!\r\n\r\n[Charts|https://github.com/danielgindi/Charts] is an example.", "attachment": [ { "id": "59976", "filename": "Screen Shot 2016-08-04 at 10.19.04 AM.png", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-08-04T00:19:28.000+0000", "size": 7941, "mimeType": "image/png" } ], "flagged": false, "summary": "Hyperloop: iOS - Support embedded binaries", "creator": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "subtasks": [], "reporter": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "environment": "N/A", "comment": { "comments": [ { "id": "392407", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Not sure what you mean here. Can't you link the local-embedded framework like done with other local frameworks? E.g. by placing it in /src and referencing it in the appc.js.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-08-04T10:16:06.000+0000", "updated": "2016-08-04T10:16:06.000+0000" }, { "id": "392408", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "The difference is that everything you put into the \"embedded binaries\" section in XCode gets packaged into your app's IPA. Some frameworks (like Charts) requires that you reference it both as a \"embedded binary\" and a \"linked framework or library\".", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-08-04T10:21:52.000+0000", "updated": "2016-08-04T10:21:52.000+0000" }, { "id": "392412", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "But if you want it packaged with the app, couldn't you just place it in {{app/platform/ios}}? All assets there will be packaged (uncompiled) with the app.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-08-04T11:48:34.000+0000", "updated": "2016-08-04T11:48:34.000+0000" }, { "id": "392416", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "I will try it once i get to the office. But i think it won't work - the embedded binaries must be referenced in the XCode project properties in order for Charts to work (according to their documentation).", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-08-04T13:58:21.000+0000", "updated": "2016-08-04T13:58:21.000+0000" }, { "id": "392471", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "Hey @Hans Knoechel. I've tried doing what you said, but all that happens if you put a file in the *app/platform/ios* folder is that the file gets copied to your XCode project. It doesn't necessarily get references as a \"embedded binary\".\r\n\r\nBasically the Charts framework needs 3 important things in order to work:\r\n\r\n1) You gotta copy their .xcodeproj inside the project that you want to use it.\r\n2) Somewhere in your code you must have a *@import Charts;*\r\n3) In the project properties you gotta reference the *.framework* file in the embedded binaries.\r\n\r\nI don't know if it's possible to do any of these steps above with HyperLoop. Can you confirm that ?\r\n", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-08-04T23:23:19.000+0000", "updated": "2016-08-04T23:23:19.000+0000" }, { "id": "392478", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "I've gave up on the Charts Framework and went for Core Plot.\r\nGuess what ? Same problem.\r\n\r\nIn order to put it to work i had to...\r\n1) Put CorePlot.framework inside \"src\" in my project root folder\r\n2) Reference it in my *appc.js*\r\n3) Build the project. All the hyperloop wrappers are created flawlessly!\r\n4) When opening the app i get the same error as i was getting for the Charts framework: \r\n\r\n{code:java}\r\nDyld Error Message:\r\n Library not loaded: @rpath/CorePlot.framework/CorePlot\r\n Referenced from: /Users/USER/Library/Developer/CoreSimulator/Devices/72A6BC5A-112B-4499-909B-4BECED0F1262/data/Containers/Bundle/Application/26BD09A7-17AB-44FD-83B4-C8E0BC3A48DF/loopmodules-coreplot.app/loopmodules-coreplot\r\n Reason: image not found\r\n{code}\r\n\r\n5) Opened the titanium generated *.xcodeproj* file. - i was doing the same for *Charts*\r\n6) Dragged the *CorePlot.xcodeproj* inside the project (thus transforming it into an XCode Workspace) - i was doing the same for *Charts*\r\n7) Referenced the *CorePlot.framework* file as a *Embedded Binary*\r\n8) Run the app from XCode -> app opens flawlessly. \r\n\r\nI'm starting to think that these two frameworks are not the only ones that require you to move their .xcodeproj file inside your project workspace + reference them as an Embedded Binary. It'd be good to investigate a way to do these procedures from inside the titanium SDK / HyperLoop core in case the user wants to.\r\n\r\n\r\n", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-08-05T01:06:43.000+0000", "updated": "2016-08-05T01:06:55.000+0000" }, { "id": "392479", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "I've just noticed that on the error that i've posted above XCode is searching for the CorePlot framework in the folder */Users/USER/Library*, but this user called \"USER\" doesn't exist at all.\r\n\r\nHmmm..", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-08-05T01:10:51.000+0000", "updated": "2016-08-05T01:10:51.000+0000" }, { "id": "392501", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Interesting, interesting. Let me check what the .pbxproj needs to include to add it. After that we can estimate the workload and schedule it. Thanks!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-08-05T13:47:59.000+0000", "updated": "2016-08-05T13:47:59.000+0000" }, { "id": "392967", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "Hey Hans. Any thoughts on this?", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-08-11T23:03:33.000+0000", "updated": "2016-08-11T23:03:33.000+0000" }, { "id": "393828", "author": { "name": "adampax", "key": "adampax", "displayName": "Adam Paxton", "active": true, "timeZone": "America/New_York" }, "body": "I'm also getting the {{/Users/USER}} path and Image Not Found error on a different framework [mapbox|https://www.mapbox.com/ios-sdk/]", "updateAuthor": { "name": "adampax", "key": "adampax", "displayName": "Adam Paxton", "active": true, "timeZone": "America/New_York" }, "created": "2016-08-22T19:26:11.000+0000", "updated": "2016-08-22T19:26:11.000+0000" }, { "id": "394975", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "I've noticed that the best frameworks out there require adding the binary file to the \"Embedded binaries\".\r\nThis leaves us with no options but to give up on using the top quality frameworks that could really change the game for us. Can we at least have a feedback on when you plan to release this feature?", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-09-01T00:21:09.000+0000", "updated": "2016-09-01T00:21:09.000+0000" }, { "id": "395017", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hey there, moved the ticket to TIMOB and scheduled it for 6.1.0 for now (since 6.0.0 is already completed / code-freezed). Please provide as many information beforehand, e.g.:\r\n- Example library that uses embedded libraries\r\n- Example code of that library (keep it simple for the test-case)\r\n- Attach the generated metabase and a full trace-log of it not being working\r\n\r\nThanks!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-09-01T07:39:56.000+0000", "updated": "2016-09-01T07:39:56.000+0000" }, { "id": "395023", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "Example libraries that i've came across and that use embedded binaries:\r\n- https://github.com/iZettle/sdk-ios\r\n- https://www.mapbox.com/ios-sdk/\r\n- https://github.com/danielgindi/Charts\r\n- https://github.com/storehouse/Advance\r\n\r\nExample code / metabase is not necessary, because the app will crash if you use a library without its *.framework* embedded anyways.\r\n\r\nUsing the Charts example:\r\n-> import \"Charts\" on your Podfile\r\n-> run the project with this line in any controller: \r\n\r\n{code:java}\r\nvar chart = require(\"Charts/Charts\");\r\n{code}\r\n\r\nIt should crash the app when it opens.\r\n\r\n", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-09-01T08:04:28.000+0000", "updated": "2016-09-01T08:04:28.000+0000" }, { "id": "395025", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Well, the above usage is incorrect. I would rather suggest something like {{var ChartXAxis = require(\"Charts/ChartXAxis\");}} since we need to require the class-names. The framework also seems to be written in Swift, so that may cause other problems (not sure).", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-09-01T08:10:07.000+0000", "updated": "2016-09-01T08:10:07.000+0000" }, { "id": "395029", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "I've just tested it again. Apparently you don't even need to require something in your code. \r\nAs long as you have the *Charts* pod referenced in your podfile, when you open your app it will crash.", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-09-01T08:29:20.000+0000", "updated": "2016-09-01T08:29:20.000+0000" }, { "id": "395030", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Ok thanks, will help to get a reproducible case quickly!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-09-01T08:32:16.000+0000", "updated": "2016-09-01T08:32:16.000+0000" }, { "id": "395031", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "Think I've got something...\r\n\r\nMy app is being installed at: */Users/rodolfo/Library/Developer/CoreSimulator/Devices/EAE8D8F1-ABB1-4E33-A166-B153C0BF4172/data/Containers/Bundle/Application/F0170255-0F80-4169-BA04-2CC27DAC5918/loopmodules-charts.app/Frameworks*\r\n(Of course this folder structure changes in every computer, but it's just to help you look at the right place).\r\n\r\nInside my *.app* there was an empty folder called \"Frameworks\". I copied the *.framework* file there and the error changed to this:\r\n\r\n{code:java}\r\nDyld Error Message:\r\n Library not loaded: @rpath/libswiftCore.dylib\r\n{code}\r\n\r\nI also have the flag *EMBEDDED_CONTENT_CONTAINS_SWIFT: 'YES'* in my *Appc.js*, but this missing swift lib error keeps showing.\r\n\r\nSo manually copying the Framework to my *.app* seems to do the trick. Now the error is swift related... which i will need some time to discover what is that.\r\n", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-09-01T08:43:12.000+0000", "updated": "2016-09-01T09:19:10.000+0000" }, { "id": "395034", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "By the way, since this is a Pod written in Swift you need to declare \"use_frameworks!\" in your Podfile.", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-09-01T08:53:31.000+0000", "updated": "2016-09-01T08:53:31.000+0000" }, { "id": "395042", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "(As a workaround), try to add any other Swift-file in the src/ directory, so Hyperloop manages the Swift-lib. In the final PR, this would need to be detected by the Hyperloop-CLI automatically, based on whether your library has Swift-sources.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-09-01T09:22:54.000+0000", "updated": "2016-09-01T09:22:54.000+0000" }, { "id": "395152", "author": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "body": "Tried, but it didn't work...\r\n", "updateAuthor": { "name": "rdperottoni", "key": "rdperottoni", "displayName": "Rodolfo Perottoni", "active": true, "timeZone": "Australia/Brisbane" }, "created": "2016-09-01T22:35:56.000+0000", "updated": "2016-09-01T22:35:56.000+0000" }, { "id": "401588", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Ok, here are the receipt to realize this (to be implemented):\r\n\r\n# We need a new section (e.g. {{embeddedBinaries}}) in the {{appc.js}}, similar to TIMOB-23854:\r\n{code:javascript}\r\nhyperloop: {\r\n ios: {\r\n xcodebuild: {\r\n embeddedBinaries: [\r\n \"Charts.framework\" // placed in \"src/\"\r\n ]\r\n }\r\n }\r\n}\r\n{code}\r\n# Hook into the .pbxproj file (with some more entries, but this is the main one):\r\n{code}\r\n/* Begin PBXCopyFilesBuildPhase section */\r\n\t\tDB67ABFB1DE26E8E00724BDD /* Embed Frameworks */ = {\r\n\t\t\tisa = PBXCopyFilesBuildPhase;\r\n\t\t\tbuildActionMask = 2147483647;\r\n\t\t\tdstPath = \"\";\r\n\t\t\tdstSubfolderSpec = 10;\r\n\t\t\tfiles = (\r\n\t\t\t\tDB67ABFA1DE26E8E00724BDD /* Charts.framework in Embed Frameworks */,\r\n\t\t\t);\r\n\t\t\tname = \"Embed Frameworks\";\r\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\r\n\t\t};\r\n/* End PBXCopyFilesBuildPhase section */\r\n{code}\r\n\r\nAfter that, we still need to distinguish between System-Frameworks and custom frameworks. The easiest way would probably be to either place custom ones in our {{src/}} directory and assume that if the framework cannot be found there is either a System Framework and can be search in the iOS SDK-directory or it's not valid. ", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-11-21T00:04:34.000+0000", "updated": "2016-11-21T00:04:34.000+0000" }, { "id": "402196", "author": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "body": "For usage with CocoaPods this will be resolved with TIMOB-23570 as we then include a script provided by CocoaPods that integrates the Frameworks in the Xcode project and copies them to the Frameworks folder.", "updateAuthor": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-11-29T15:48:43.000+0000", "updated": "2016-11-29T15:48:43.000+0000" }, { "id": "403940", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hey guys, quick update here: This is a more general CLI ticket then just Hyperloop. That's why it can be fixed for both Hyperloop and the \"old\" native modules by using our CLI hook \"[ti.dynamiclib|https://gist.github.com/hansemannn/5046fcc9a14cc3d09d0874f964b443aa]\". I wrote some more details on how to integrate it as well. This ticket will still automate the whole process, but this hook already allows the integration today. Thx!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-01-02T13:05:30.000+0000", "updated": "2017-01-02T13:05:30.000+0000" }, { "id": "404620", "author": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~hansknoechel] Based on your comment, what would you like me to do with this ticket?", "updateAuthor": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-01-14T23:32:48.000+0000", "updated": "2017-01-14T23:32:48.000+0000" }, { "id": "406264", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "[~emerriman] It's scheduled for Hyperloop 2.1.0, where we'll likely refactor the above library to an own node-module which then can be used in both the classic module CLI and the Hyperloop CLI. Until then, Hyperloopers can already use the ti.dynamiclib library in their Hyperloop projects already.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-02-03T12:48:00.000+0000", "updated": "2017-02-03T12:48:00.000+0000" }, { "id": "406274", "author": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Thanks [~hansknoechel]", "updateAuthor": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-02-03T14:05:50.000+0000", "updated": "2017-02-03T14:05:50.000+0000" }, { "id": "418083", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "I've just put this ticket {{In Progress}}. It will likely be resolved together with TIMOB-23570 by allowing dynamic frameworks in both (locally) embedded frameworks and CocoaPods frameworks.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-04-26T07:55:35.000+0000", "updated": "2017-04-26T07:55:35.000+0000" }, { "id": "429306", "author": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "body": "[~amukherjee], follow these steps to verify this ticket:\r\n\r\n# Create a new app, download the Mapbox SDK from https://www.mapbox.com/install/ios/ and place it under {{app/platform/ios}}\r\n# Replace the content of {{app/controllers/index.js}} with the following:\r\n{code}\r\nvar UIScreen = require('UIKit/UIScreen');\r\nvar UIView = require('UIKit/UIView');\r\nvar CGRectMake = require('CoreGraphics').CGRectMake;\r\nvar CLLocationCoordinate2DMake = require('CoreLocation').CLLocationCoordinate2DMake;\r\nvar MGLMapView = require('Mapbox/MGLMapView');\r\nvar screenRect = CGRectMake(0 , 0, UIScreen.mainScreen.bounds.size.width, UIScreen.mainScreen.bounds.size.height);\r\nvar mapView = MGLMapView.alloc().initWithFrame(screenRect);\r\nmapView.setCenterCoordinateZoomLevelAnimated(CLLocationCoordinate2DMake(59.31, 18.06), 9, false);\r\n\r\n$.index.add(mapView);\r\n\r\n$.index.open();\r\n{code}\r\n\r\n*Expected behavior*\r\nThe app opens a blank white Mapbox view (this is due to a missing access key). In the lower corner the Mapbox logo and an info icon should be visible, indicating that the Mapbox view successfully opened.", "updateAuthor": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-10-19T21:29:23.000+0000", "updated": "2017-10-19T21:29:23.000+0000" }, { "id": "429310", "author": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Verified. Able to build and run apps with embedded binaries", "updateAuthor": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-10-19T22:40:44.000+0000", "updated": "2017-10-19T22:40:44.000+0000" } ], "maxResults": 30, "total": 30, "startAt": 0 } } }