chore(ios): project changes for xcode 14 compatibility#7433
chore(ios): project changes for xcode 14 compatibility#7433
Conversation
User Test ResultsTest specification and instructions ERROR: user tests have not yet been defined |
mcdurdin
left a comment
There was a problem hiding this comment.
A few thoughts here. Version bumps are real busy-work, and seem to generate lots of tidy up. But it's important that we cover all the bases.
-
It looks like your mac privacy fixes crept into this PR, so they should be moved into a separate PR.
-
We need to make sure that we can continue to build earlier versions of Keyman targeting 9.0, so build agents won't update to xcode 14 at this time. So these projects need to continue to be able to build and deploy on older xcode, for now.
-
Are there any impacts on macOS builds in upgrading to xcode 14? (e.g. I see this in the release notes: "Building for deployment to OS releases older than macOS 10.13, iOS 11, tvOS 11, and watchOS 4 is no longer supported. (92834476)")
-
You'll also need to fixup the iOS sample projects (e.g. KMSample2 still has bitcode enabled, so it fails to build) and any other iOS projects such as KeyboardCalibrator.
-
You'll need to write up some user tests (we'll do a regression test across supported iOS versions after this merges, though hopefully there won't be any issues).
-
You should remove any existing code which is targeting iOS versions older than 11.0: search for
#availablein *.swift, looks like there are a few modules in KeyboardCalibrator. -
This will need at least four 'breaking change' release notes (add these to the sprint retrospective):
- iOS app (because of min iOS version)
- iOS engine (because of min iOS version and bitcode changes)
- macOS app (because of min macOS version)
- macOS engine (because of min macOS version)
-
We should make sure we loop in the App Builder team (@chrisvire, @rpmargetts) so they have a heads-up on the changing requirements for Keyman 16. They'll probably already be dealing with it in their own move to iOS 16 but it's nice to be informed anyway! 😁
| if (self.runLoopEventSrc && runLoop) { | ||
| CFRunLoopAddSource(runLoop, self.runLoopEventSrc, kCFRunLoopDefaultMode); | ||
| } | ||
| // first notify user and request access to Accessibility/PostEvent permissions |
There was a problem hiding this comment.
These changes don't look like they belong in this PR.
Please include @davidmoore1. He has done work in app-builders for Xcode 14 and iOS 16 (including removing bitcode). He has also done work in a fork of keyman to support Carthage. |
Righto, will do. We'd also be interested at some point in understanding what is diverging in the fork and what we should be merging back upstream into the main Keyman project. |
e8ed2ba to
1b015ff
Compare
|
Please see #7483 (comment) for additional work we'll need to do in CI when we move to XCode 14. |
|
Query: can we reliably use xcode-select to swap between xcode versions? This would allow us to more easily keep up with xcode releases, without breaking existing build agents |
|
@mcdurdin: You can have multiple. The question is whether https://stackoverflow.com/questions/669367/can-i-have-multiple-xcode-versions-installed |
|
Thanks @chrisvire, that's helpful info. Sad that we need to |
|
Is this replaced by #8015 ? |
|
Replaced by #8015. |
To upgrade to Xcode 14 (needed to build and debug apps withiOS 16), two changes generated warnings and caused the build to fail. These changes are described in the Xcode 14 release notes:
The xcode 14 release notes describe the deprecation of bit code: