I’m on Xcode 9. I just got my iPhone XS Max. I tried to install my app onto it.
I kept getting
iPhone doesn’t support any of app’s architectures. You can add iPhone’s arm64e architecture to app’s Architectures build setting.
Build Settings
How can I prevent this error?
The arm64e architecture introduces pointer authentication codes (PACs) to detect and guard against unexpected changes to pointers in memory.
arm64 is the current 64-bit ARM CPU architecture, as used since the iPhone 5S and later (6, 6S, SE and 7), the iPad Air, Air 2 and Pro, with the A7 and later chips. armv7s (a.k.a. Swift, not to be confused with the language of the same name), being used in Apple's A6 and A6X chips on iPhone 5, iPhone 5C and iPad 4.
While the architecture of the iPhone is already arm64 , Intel used x86_64 simulators. With the new M1 series devices, the simulators also run on the arm64 architecture.
It's not because of iOS 12 - note the error message. This is the ARM64e architecture, which is used on the A12 and later. ARM64e compiles into ARMv8.3 instructions, which enable Pointer Authentication Codes. This means that rather than traditional flow control instructions (BL, RET) the code is expected to use the authenticating variants (BLA[A/B], RET[A/B]), and likewise for some pointer loading instructions (LDR => LDA[A/B], etc).
The ARMv8.3 instructions greatly improve security, as most hacks are achieved by overwriting pointers and subverting the program's flow control. Apple didn't announce this as a feature of the ARM12, but it is nonetheless, and going forward will be the standard on all Apple processors - and likely sometime in Android devices as well.
More about this at http://newosxbook.com/forum/viewtopic.php?f=11&t=19557
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With