{ "id": "138397", "key": "TIMOB-17887", "fields": { "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "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": "19882", "name": "Release 8.0.0", "archived": false, "released": true, "releaseDate": "2019-03-14" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2018-12-14T18:52:20.000+0000", "created": "2014-10-22T20:36:00.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "ios", "modules", "swift" ], "versions": [ { "id": "19957", "description": "", "name": "Release 7.1.0", "archived": false, "released": true, "releaseDate": "2018-03-14" } ], "issuelinks": [ { "id": "42319", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "138381", "key": "TIMOB-17888", "fields": { "summary": "iOS: Add support for Swift libraries in native modules", "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": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2019-05-27T20:14:25.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": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "It is not currently possible to add Swift code to a Titanium module.\r\n\r\nh3. Steps to reproduce:\r\n# ti create -n ti.test -p ios --id ti.test -t module -url \"http://test.com\" -d .\r\n# Open up the project in Xocde. Confirm it builds.\r\n# Add a Swift file and accept the addition of a “bridging header\".\r\n# Attempt to build. It then prompts to update the minimum target version from 4.0 to 7.0\r\n# Build and get the following error:\r\n\r\n{code}\r\n Libtool build/ti.test.build/Release-iphoneos/ti.test.build/Objects-normal/arm64/libTiTest.a normal arm64\r\n cd /Users/ingo/Documents/ti.test/iphone\r\n export IPHONEOS_DEPLOYMENT_TARGET=7.0\r\n export PATH=\"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Users/ingo/Documents/adt-bundle-mac-x86/sdk/platform-tools:/Users/ingo/Documents/adt-bundle-mac-x86/sdk/tools:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin\"\r\n /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -static -arch_only arm64 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk -L/Users/ingo/Documents/ti.test/iphone/build/Release-iphoneos -filelist /Users/ingo/Documents/ti.test/iphone/build/ti.test.build/Release-iphoneos/ti.test.build/Objects-normal/arm64/TiTest.LinkFileList -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -Xlinker -force_load -Xlinker /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a -Xlinker -add_ast_path -Xlinker /Users/ingo/Documents/ti.test/iphone/build/ti.test.build/Release-iphoneos/ti.test.build/Objects-normal/arm64/TiTest.swiftmodule -framework Foundation -o /Users/ingo/Documents/ti.test/iphone/build/ti.test.build/Release-iphoneos/ti.test.build/Objects-normal/arm64/libTiTest.a\r\nerror: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: unknown option character `X' in: -Xlinker\r\nUsage: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -static [-] file [...] [-filelist listfile[,dirname]] [-arch_only arch] [-sacLT] [-no_warning_for_no_symbols]\r\nUsage: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -dynamic [-] file [...] [-filelist listfile[,dirname]] [-arch_only arch] [-o output] [-install_name name] [-compatibility_version #] [-current_version #] [-seg1addr 0x#] [-segs_read_only_addr 0x#] [-segs_read_write_addr 0x#] [-seg_addr_table ] [-seg_addr_table_filename ] [-all_load] [-noall_load]\r\n{code}\r\n\r\nThis is the error reported here: http://stackoverflow.com/questions/24020986/error-when-compiling-a-static-library-using-swift-unknown-option-character-x\r\n\r\nAnd this is because you can't built a static library using Swift:\r\n\r\nhttp://openradar.appspot.com/radar?id=5536341827780608\r\n\r\nIt may be possible to get around this:\r\n\r\nhttp://andelf.github.io/blog/2014/06/25/write-swift-module-with-swift-cont/\r\n\r\nGenerate .swiftmodule .swiftdoc\r\n{code}\r\nxcrun swift -sdk $ (xcrun --show-sdk-path --sdk macosx) SwiftyJSON.swift -emit-library -emit-module -module-name SwiftyJSON -v -o libswiftSwiftyJSON.dylib -module-link-name swiftSwiftyJSON\r\n{code}\r\n\r\nGenerate .o\r\n{code}\r\nxcrun swift -sdk $ (xcrun --show-sdk-path --sdk macosx) -c SwiftyJSON.swift -parse-as-library -module-name SwiftyJSON -v -o SwiftyJSON.o\r\n{code}\r\n\r\nGenerate .a\r\n{code}\r\nar rvs libswiftSwiftyJSON.a SwiftyJSON.o\r\n{code}\r\n", "attachment": [], "flagged": false, "summary": "iOS: Add Swift modules support", "creator": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 1058, "state": "closed", "name": "2018 Sprint 16 SDK", "startDate": "2018-07-29T22:26:06.486Z", "endDate": "2018-08-12T22:26:00.000Z", "completeDate": "2018-08-13T17:38:16.757Z", "originBoardId": 114 }, { "id": 1028, "state": "closed", "name": "2018 Sprint 09 SDK", "startDate": "2018-04-22T22:53:08.928Z", "endDate": "2018-05-06T22:53:00.000Z", "completeDate": "2018-05-07T00:02:15.883Z", "originBoardId": 114 }, { "id": 1093, "state": "closed", "name": "2018 Sprint 23", "startDate": "2018-11-04T23:35:52.006Z", "endDate": "2018-11-18T23:35:00.000Z", "completeDate": "2018-11-19T05:30:34.338Z", "originBoardId": 114 }, { "id": 1095, "state": "closed", "name": "2018 Sprint 24", "startDate": "2018-11-19T05:35:58.310Z", "endDate": "2018-12-03T05:35:00.000Z", "completeDate": "2018-12-03T16:28:57.549Z", "originBoardId": 114 }, { "id": 1065, "state": "closed", "name": "2016 Sprint 17 SDK", "startDate": "2018-08-13T17:39:36.846Z", "endDate": "2018-08-27T17:39:00.000Z", "completeDate": "2018-08-29T16:10:57.013Z", "originBoardId": 114 }, { "id": 1034, "state": "closed", "name": "2018 Sprint 10 SDK", "startDate": "2018-05-07T00:03:21.636Z", "endDate": "2018-05-21T00:03:00.000Z", "completeDate": "2018-05-20T20:54:58.928Z", "originBoardId": 114 }, { "id": 1035, "state": "closed", "name": "2018 Sprint 11 SDK", "startDate": "2018-05-20T20:57:43.542Z", "endDate": "2018-06-03T20:57:00.000Z", "completeDate": "2018-06-04T15:13:14.425Z", "originBoardId": 114 }, { "id": 1070, "state": "closed", "name": "2018 Sprint 18 SDK", "startDate": "2018-08-26T16:14:35.297Z", "endDate": "2018-09-09T16:14:00.000Z", "completeDate": "2018-09-11T20:59:21.495Z", "originBoardId": 114 }, { "id": 1039, "state": "closed", "name": "2018 Sprint 12 SDK", "startDate": "2018-06-03T15:22:23.401Z", "endDate": "2018-06-17T15:22:00.000Z", "completeDate": "2018-06-18T20:45:36.363Z", "originBoardId": 114 }, { "id": 1103, "state": "closed", "name": "2018 Sprint 25", "startDate": "2018-12-02T16:29:21.531Z", "endDate": "2018-12-16T16:29:00.000Z", "completeDate": "2018-12-15T02:33:24.870Z", "originBoardId": 114 }, { "id": 1073, "state": "closed", "name": "2018 Sprint 19 SDK", "startDate": "2018-09-09T21:02:56.422Z", "endDate": "2018-09-23T21:02:00.000Z", "completeDate": "2018-09-23T22:28:10.932Z", "originBoardId": 114 }, { "id": 1045, "state": "closed", "name": "2018 Sprint 13 SDK", "startDate": "2018-06-17T20:47:13.621Z", "endDate": "2018-07-01T20:47:00.000Z", "completeDate": "2018-07-02T18:40:05.029Z", "originBoardId": 114 }, { "id": 1078, "state": "closed", "name": "2018 Sprint 20 SDK", "startDate": "2018-09-23T16:57:58.349Z", "endDate": "2018-10-07T16:57:00.000Z", "completeDate": "2018-10-07T23:31:40.476Z", "originBoardId": 114 }, { "id": 1018, "state": "closed", "name": "2018 Sprint 07 SDK", "startDate": "2018-03-25T21:59:36.637Z", "endDate": "2018-04-08T21:59:00.000Z", "completeDate": "2018-04-08T17:55:14.467Z", "originBoardId": 114 }, { "id": 1050, "state": "closed", "name": "2018 Sprint 14 SDK", "startDate": "2018-07-01T18:40:57.193Z", "endDate": "2018-07-15T18:40:00.000Z", "completeDate": "2018-07-16T03:27:08.720Z", "originBoardId": 114 }, { "id": 796, "state": "closed", "name": "2017 Sprint 02 SDK", "startDate": "2017-01-15T00:00:41.845Z", "endDate": "2017-01-29T00:00:00.000Z", "completeDate": "2017-01-30T21:10:44.640Z", "originBoardId": 114 }, { "id": 1084, "state": "closed", "name": "2018 Sprint 21", "startDate": "2018-10-07T23:32:40.560Z", "endDate": "2018-10-21T23:32:00.000Z", "completeDate": "2018-10-21T23:19:05.460Z", "originBoardId": 114 }, { "id": 1021, "state": "closed", "name": "2018 Sprint 08 SDK", "startDate": "2018-04-08T17:57:36.122Z", "endDate": "2018-04-22T17:57:00.000Z", "completeDate": "2018-04-22T22:51:19.120Z", "originBoardId": 114 }, { "id": 1053, "state": "closed", "name": "2018 Sprint 15 SDK", "startDate": "2018-07-15T21:52:05.453Z", "endDate": "2018-07-29T21:52:00.000Z", "completeDate": "2018-07-29T22:25:11.723Z", "originBoardId": 114 }, { "id": 1088, "state": "closed", "name": "2018 Sprint 22", "startDate": "2018-10-21T23:20:52.653Z", "endDate": "2018-11-04T23:20:00.000Z", "completeDate": "2018-11-04T23:29:59.423Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "329115", "author": { "name": "mattapperson", "key": "mattapperson", "displayName": "me@gmail.com", "active": true, "timeZone": "America/Los_Angeles" }, "body": "We also need to account for Swift based dylib files. Frameworks are already being developed using these and wrapping them for titanium modules is next to imposable with the current build tools.", "updateAuthor": { "name": "mattapperson", "key": "mattapperson", "displayName": "me@gmail.com", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-10-23T01:45:52.000+0000", "updated": "2014-10-23T01:45:52.000+0000" }, { "id": "329116", "author": { "name": "mattapperson", "key": "mattapperson", "displayName": "me@gmail.com", "active": true, "timeZone": "America/Los_Angeles" }, "body": "An example of an SDK using swift dylibs would be https://secure.paymentech.com/developercenter/mobilesdk/ios/?WT.mc_id=adc001_sdk", "updateAuthor": { "name": "mattapperson", "key": "mattapperson", "displayName": "me@gmail.com", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-10-23T01:46:23.000+0000", "updated": "2014-10-23T01:46:23.000+0000" }, { "id": "342763", "author": { "name": "pragmateq", "key": "pragmateq", "displayName": "Gary Crook", "active": true, "timeZone": "Europe/London" }, "body": "Does Apple's announcement of Swift 1.2 address this problem, or are static libraries a different beast?\r\n\r\nFrom page 4 of http://adcdownload.apple.com//Developer_Tools/Xcode_6.3_beta/Xcode_6.3_beta_Release_Notes.pdf ...\r\n\r\n“static” methods and properties are now allowed in classes (as an alias for “class final”). You are now\r\nallowed to declare static stored properties in classes, which have global storage and are lazily initialized\r\non first access (like global variables). Protocols now declare type requirements as “static” requirements\r\ninstead of declaring them as “class” requirements. (17198298)", "updateAuthor": { "name": "pragmateq", "key": "pragmateq", "displayName": "Gary Crook", "active": true, "timeZone": "Europe/London" }, "created": "2015-02-10T13:18:28.000+0000", "updated": "2015-02-10T13:18:28.000+0000" }, { "id": "342765", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~pragmateq] No -- different \"static.\"", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-10T15:14:50.000+0000", "updated": "2015-02-10T15:14:50.000+0000" }, { "id": "349248", "author": { "name": "moshebox@gmail.com", "key": "moshebox@gmail.com", "displayName": "Moshe Marciano", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "is there any news about this? I mean including swift code directly in a titanium module?\r\nI thought Appcelerator declared it was possible:\r\n\r\nhttp://www.appcelerator.com/blog/2014/06/ios-8-support/\r\n\r\n{code}\r\n This means that you could build a Titanium native module for iOS in Objective C or Swift and start taking advantage of all of the great features of iOS 8 and Swift right now.\r\n{code}\r\n\r\nis there an ETA on this to be fixed? a lot of OSS code out there for iOS is being now written using Swift and we are left behind..", "updateAuthor": { "name": "moshebox@gmail.com", "key": "moshebox@gmail.com", "displayName": "Moshe Marciano", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2015-04-12T17:08:58.000+0000", "updated": "2015-04-12T17:08:58.000+0000" }, { "id": "349249", "author": { "name": "pragmateq", "key": "pragmateq", "displayName": "Gary Crook", "active": true, "timeZone": "Europe/London" }, "body": "This must surely be of the highest priority. I'm really feeling held back with lack of Swift support and can't offer my clients any custom modules (obj c is too alien for me). I know you guys are probably busting a gut to get features implemented soon as and Hyperloop may void the need for what we're asking. Can we have a little feedback on what the current state of play is with Swift? It's such a great language.", "updateAuthor": { "name": "pragmateq", "key": "pragmateq", "displayName": "Gary Crook", "active": true, "timeZone": "Europe/London" }, "created": "2015-04-12T18:05:54.000+0000", "updated": "2015-04-12T18:05:54.000+0000" }, { "id": "349294", "author": { "name": "iotashan", "key": "iotashan", "displayName": "Shannon Hicks", "active": true, "timeZone": "America/Chicago" }, "body": "I'm not sure that (without seriously overhauling how Titanium works) Swift support will happen. Swift doesn't allow you to compile to a static library, and Titanium can't use a dynamic library. I believe that accommodating this is one of the goals of Ti.Next though.\r\n\r\nSo we're stuck until Apple finally lets us compile a normal static library, or until Ti.Next comes along.", "updateAuthor": { "name": "iotashan", "key": "iotashan", "displayName": "Shannon Hicks", "active": true, "timeZone": "America/Chicago" }, "created": "2015-04-13T09:33:03.000+0000", "updated": "2015-04-13T09:33:03.000+0000" }, { "id": "349297", "author": { "name": "pragmateq", "key": "pragmateq", "displayName": "Gary Crook", "active": true, "timeZone": "Europe/London" }, "body": "OK could there be any workaround or middle-man that lets the base obj-c static lib call a separate Swift dynamic lib?", "updateAuthor": { "name": "pragmateq", "key": "pragmateq", "displayName": "Gary Crook", "active": true, "timeZone": "Europe/London" }, "created": "2015-04-13T10:21:19.000+0000", "updated": "2015-04-13T10:21:19.000+0000" }, { "id": "436269", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "*To all watchers of this ticket*: You might receive a few notification mails as this is now scheduled and transitioned to an Epic. It will include sub-tasks and general discussion. \r\n\r\nOne of the big tasks to solve here is to move the Titanium iOS-core into an independent framework, e.g. \"TitaniumSDKCoreKit.framework\", which will then be used in both normal Titanium development but also in combination with native modules. Talking about that, native modules will likely also be able to handle the dependency via Cocoapods to ease general dependency management across different versions. \r\n\r\nThis task is expected to be completed in the SDK 8.0.0 time frame and will likely break native modules, requiring them to be recompiled with the core-framework again. More over the next months!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-04-04T07:42:45.000+0000", "updated": "2018-04-04T07:42:45.000+0000" }, { "id": "436552", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Basic implementation is done - moving the SDK core to an own framework that is used by the SDK itself. To prevent dependency issues across multiple version of the core-framework, we will likely also add CocoaPods support for classic modules like done for Hyperloop. All remaining tasks are CLI- and cleanup-related. \r\n\r\nNote: This ticket will allow both to *use* Swift libraries in native modules, but also to *build* Swift powered modules that are packaged as universal frameworks, e.g. \"TiMap.framework\".", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-04-05T19:22:13.000+0000", "updated": "2018-04-05T19:25:17.000+0000" }, { "id": "440575", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Update: The changes to the core are done. Some details:\r\n- The core of the Titanium iOS-SDK is now moved to a framework and provided precompiled to the build process, saving 4-5 seconds build time. Together with other recent build pipeline improvements, we will save 10-15 seconds for clean builds, compared to older version of the SDK\r\n- This change does *not* represent a breaking change, retaining full backwards compatibility with older modules. No (iOS) modules will need to get recompiled in order to use this\r\n- You can now select between a Swift- and Obj-C template when creating a new module. The new templates also includes examples for distributing your module via CocoaPods and Carthage\r\n\r\nThe changes and many more details can be seen in the [designated pull request|https://github.com/appcelerator/titanium_mobile/pull/10218].", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-08-08T08:53:40.000+0000", "updated": "2018-08-08T08:53:50.000+0000" }, { "id": "440580", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This is awesome!", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-08-08T13:22:16.000+0000", "updated": "2018-08-08T13:22:16.000+0000" }, { "id": "443945", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "This is already resolved now.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-11-27T21:54:00.000+0000", "updated": "2018-11-27T21:54:00.000+0000" }, { "id": "444607", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Resolving as PR is merged.", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-12-14T18:52:15.000+0000", "updated": "2018-12-14T18:52:15.000+0000" }, { "id": "445177", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "*Closing ticket* Verified in SDK version {{8.0.0.v20190109125941}} Able to create module using swift and run it in a titanium project. \r\n\r\nTest Steps:\r\n# Created a new test module using {{ti create -t module --name test --id com.example.tese --code-base swift}}\r\n# Packaged the module using {{appc run -p ios --build-only}} (iOS folder within the module)\r\n# Created a new titanium project\r\n# Added the following code\r\n{code:java}\r\nvar test = require('com.example.tese');\r\nTi.API.info('module is => ' + test);\r\nTi.API.info('module tryThis method returns => ' + test.tryThis());\r\nTi.API.info('module exampleProp is => ' + test.testProperty);\r\ntest.testProperty = 'Should equal Hello World';\r\n{code}\r\n# Ran the program\r\n# Able to see the correct outputs\r\n\r\n*Test Environment*\r\n{code:java}\r\niPhone 6S (12.1) Sim\r\nAPPC CLI: 7.0.9\r\nOperating System Name: Mac OS Mojave\r\nOperating System Version: 10.14.2\r\nNode.js Version: 8.9.1\r\nXcode 10.1\r\n{code}\r\n", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-01-10T13:26:37.000+0000", "updated": "2019-01-10T13:26:37.000+0000" }, { "id": "448670", "author": { "name": "kosso", "key": "kosso", "displayName": "kosso", "active": true, "timeZone": "Europe/London" }, "body": "I have just tried the commands above and am getting an error when trying to compile the module created. \r\n\r\nAfter opening the default project in XCode 10.2.1 and letting it update the settings (and out-of-date Swift version!) the error is in ComExampleTeseExampleProxy.swift line 15 : \r\n\r\n{code}\r\nCannot override a Self return type with a non-Self return type\r\n\"1. Overridden declaration is here (TitaniumKit.TiProxy)\"\r\n{code}\r\n\r\n\r\n{code}\r\nTest Environment: \r\nAppc CLI : 7.0.10\r\nNodeJs 10.15.3\r\nmacOs Mohave 10.14.5\r\n{code}", "updateAuthor": { "name": "kosso", "key": "kosso", "displayName": "kosso", "active": true, "timeZone": "Europe/London" }, "created": "2019-05-27T20:14:25.000+0000", "updated": "2019-05-27T20:14:25.000+0000" } ], "maxResults": 18, "total": 18, "startAt": 0 } } }