{ "id": "174788", "key": "TIMOB-27791", "fields": { "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "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": "21051", "description": "", "name": "Release 9.2.0", "archived": false, "released": true, "releaseDate": "2020-09-23" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2020-09-16T13:03:45.000+0000", "created": "2020-03-05T21:48:27.000+0000", "epic": { "id": 173720, "key": "TIMOB-27132", "name": "Support macOS target", "summary": "iOS 13: Add MacOS as a target for deployment", "color": { "key": "color_1" }, "done": false }, "priority": { "name": "None", "id": "6" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "updated": "2020-09-16T13:03:45.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": [], "description": "In [PR #11506|https://github.com/appcelerator/titanium_mobile/pull/11506] (WIP) we have started to supporting macOS target. \r\nCurrent commands to create and run app for Mac target are as below -\r\n\r\n1. Create an app using this SDK-> appc new -p ios\r\n2. Set property 'enable-mac-target' to 'true' in tiapp.xml\r\n < property name=\"enable-mac-target\" type=\"bool\">true < /property >\r\n3. To run on Mac-> appc run -p iOS -T 'mac'\r\n4. It should launch Mac app\r\n\r\nIs there any modifications required?", "attachment": [ { "id": "67291", "filename": "Native-ios-mac-enabled.png", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-03-05T21:52:50.000+0000", "size": 71577, "mimeType": "image/png" } ], "flagged": false, "summary": "Decide CLI commands to build and archive app for macOS target ", "creator": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 1205, "state": "closed", "name": "2020 Sprint 18", "startDate": "2020-08-31T15:45:10.220Z", "endDate": "2020-09-11T15:45:00.000Z", "completeDate": "2020-09-11T19:56:20.674Z", "originBoardId": 114 }, { "id": 1206, "state": "closed", "name": "2020 Sprint 19", "startDate": "2020-09-14T20:01:00.000Z", "endDate": "2020-09-25T20:01:00.000Z", "completeDate": "2020-09-28T15:30:19.875Z", "originBoardId": 114 }, { "id": 1182, "state": "closed", "name": "2020 Sprint 6", "startDate": "2020-03-16T21:38:00.000Z", "endDate": "2020-03-27T21:38:00.000Z", "completeDate": "2020-03-27T16:02:02.830Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "454562", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Feedback from Hans in PR -\r\n\r\n* In general: I'd vote for macos instead of mac in all terrms. Mac is the hardware, macOS the software.\r\n* Make macOS an own target (inside tiapp.xml), using macos\r\n* Make macOS an own command, e.g. ti build -p macos instead of an ti build -p ios subcommand\r\n* How are macOS assets planned to be handled? Especially launch images and app icon are quite essential. Do they just reuse the iOS one?", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-03-05T21:50:25.000+0000", "updated": "2020-03-05T21:50:25.000+0000" }, { "id": "454564", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": " \r\n1. The way we are supporting Mac target is, via maccatalyst which is available in ios ecosystem. So I think platform should be ‘iOS’. See the attached screenshot 'Native-is-mac-enable.png' (section Deployment Info) of native app. Instead of using 'enable-mac-target' in tiapp.xml we can use true similar to\r\n true . Or 'enable-mac-target' in tiapp.xml is fine? [~hknoechel] Are you talking about this?\r\n2. Assets handling - We can provide Mac specific app icons. By default it will use iOS one. Launch images are not used in Mac apps.\r\n3. Do we want to make macos as own command or use it as subcommand -\r\n E.g to debug on Mac - \"appc run -p iOS -T mac\" and \r\n to archive for Mac-apstore something like - \"app run -p iOS -T dist-mac-apstore\"\r\n4. How to ensure if module should be build for 'mac' as well? Probably to add some key in 'timodule.xml' or any other way?\r\n\r\n[~cbarber] [~cwilliams] What is suggestion here?\r\n", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-03-05T22:52:09.000+0000", "updated": "2020-03-05T22:52:09.000+0000" }, { "id": "454565", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "I don't get why we need a {{}} or a {{true}} setting. Just have a {{\\-\\-target}} of {{\"mac\"}} (or {{\"macos\"}}). Having an explicit {{--target}} of \"mac\" with the appropriate validation should be sufficient. We don't want to add unnecessary barriers like these one-off settings. Furthermore, {{}} is a Studio thing and should be deprecated.\r\n\r\nIf you add a {{\\-T mac}}, then it makes sense to also add a {{\\-T dist-mac-appstore}}. Note that {{\"dist-*\"}} targets have a deploy type of \"production\".\r\n\r\nIn theory a module would be built for x64 in addition to whatever other architectures they are compiled for. If you think there are modules that are mac specific, then maybe we take a step back and consider adding \"mac\" as a platform, not a target. Then the \"mac\" platform would have some sort of default target (I dunno, \"desktop\" or something) and a \"dist-appstore\" target. \"mac\" modules would go in {{~/Library/Application Support/Titanium/mobilesdk/modules/mac///}}.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2020-03-05T23:05:51.000+0000", "updated": "2020-03-05T23:05:51.000+0000" }, { "id": "454566", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "*Side Question:*\r\nPerhaps the platform should be called \"ipados\"?\r\n\r\nThis is because you're building an app based on the iPadOS platform which can run on macOS and iPad. (I'm guessing you don't have access to macOS APIs; only iPadOS APIs.)\r\n\r\nKind of like how on Windows where you can build an app via the Win32 or UWP platforms. They're 2 totally separate platforms with different APIs/capabilities, but both can run on the Windows desktop.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-03-05T23:06:14.000+0000", "updated": "2020-03-05T23:06:14.000+0000" }, { "id": "454567", "author": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "body": "After some thought, it should be {{\"macos\"}}, not {{\"mac\"}}.", "updateAuthor": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "created": "2020-03-06T00:20:30.000+0000", "updated": "2020-03-06T00:20:30.000+0000" }, { "id": "454571", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "@Chris: Agree on all points\r\n@Josh: iPadOS is literally a marketing name. The foundation is iOS and the macOS target is (technically) called \"Catalyst\" or \"UIKit for Mac\". So I think macOS is a proper target name here and everyone sees the benefits of it. \"Classic\" macOS aka AppKit will transition more and more to Catalyst as Apple pushes very hard in that direction. ", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2020-03-06T09:23:58.000+0000", "updated": "2020-03-06T09:23:58.000+0000" }, { "id": "454586", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I'm just saying there is a difference and we need to make it clear to developers which of the 2 they're getting. (If not iPadOS, then something else.)\r\n\r\nAs a comparison on the Windows side, you would want to make the distinction. A Win32 app and a UWP app are very different. They result in different app binaries, have different APIs available to them, one is backward compatible on older OSes, etc. Microsoft re-documented Win32 apps as \"classic\" too, but no one cared, UWP never caught on (except with Xbox games), and Win32 apps are still the dominant style. UWP has less capabilities compared to Win32 and too much time was invested in existing Win32 apps to compel devs to transition them over. The same potential issue can happen on Mac and both app styles might have to coexist in parallel for the foreseeable future like how it is on Windows.\r\n\r\nAnyways, that's my 2 cents.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-03-06T19:33:59.000+0000", "updated": "2020-03-06T19:33:59.000+0000" }, { "id": "454587", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Hold on, I was confused. I thought we were making a new platform. But this is just a new target for \"iOS\". Oh never mind.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-03-06T19:38:06.000+0000", "updated": "2020-03-06T19:38:06.000+0000" }, { "id": "454588", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "So for Mac dev -\r\n --target macos\r\nAnd for Mac distribution\r\n --target dist-macappstore\r\n\r\nIs there any difference in -T and --target ?\r\n\r\nFor module -\r\nTo build any module, we have to build for -\r\n iOS simulator\r\n iOS device\r\n maccatalyst\r\n\r\nAnd then we have to create a .xcframework to use it in app.\r\n\r\nNow the problem is maccatalyst is supported in macOS 10.15+(Catalina+). If someone is running on macOS < 10.15 it will fail. \r\nI think we should ignore to build for maccatalyst just giving warning, if it is building for macOS < 10.15\r\n", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-03-06T19:56:05.000+0000", "updated": "2020-03-06T19:56:05.000+0000" }, { "id": "456726", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "https://github.com/appcelerator/titanium_mobile/pull/11955", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2020-09-03T19:23:49.000+0000", "updated": "2020-09-03T19:23:49.000+0000" }, { "id": "456906", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "*Closing ticket*. Fix verified in SDK version {{9.2.0.v20200915123928}}, and {{9.3.0.v20200915132757}}.\r\n\r\n*Test and other information can be found at:*\r\nhttps://github.com/appcelerator/titanium_mobile/pull/11955", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-09-16T13:03:28.000+0000", "updated": "2020-09-16T13:03:28.000+0000" } ], "maxResults": 11, "total": 11, "startAt": 0 } } }