[TIMOB-26245] iOS: Exclude 32-Bit architectures for iOS 11+ targets
GitHub Issue | n/a |
---|---|
Type | Story |
Priority | None |
Status | Open |
Resolution | Unresolved |
Affected Version/s | n/a |
Fix Version/s | n/a |
Components | iOS |
Labels | cb-tooling |
Reporter | Hans Knöchel |
Assignee | Chris Barber |
Created | 2018-07-27T21:39:12.000+0000 |
Updated | 2019-10-22T13:23:33.000+0000 |
Description
If the Titanium developer targets iOS 11+, we can remove the 32-bit architectures for all builds, because iOS 11+ does not run on these devices anymore. There is a related discussion over at [CocoaPods](https://github.com/CocoaPods/CocoaPods/issues/7148) about it.
[~cbarber] Do you know which parts we should touch for this?
I believe this is implicitly handled these days in the Xcode project settings. Long time ago, we used to explicitly list the architectures we were building for: https://github.com/appcelerator/titanium_mobile/blob/3_3_X/iphone/cli/commands/_build.js#L2505. I believe I removed it around the time time I added watchOS support. I believe the problem is in order to not build for i386, we'd need to explicitly tell xcodebuild what to build for and whatever is selected is inherited when it builds watchOS apps and since those run on devices with different architectures, it won't work. So, you can try setting the
ARCHS
, but maybe you need to doVALID_ARCHS
, but you'd probably also need to setONLY_ACTIVE_ARCH
toNO
. I also believe I say "I believe" too much.Note: for iOS Simulator builds, the iOS build sets
ONLY_ACTIVE_ARCH=1
. However in Titanium SDK >=8.2.1, the iOS build will pick an arbitrary iOS simulator for thexcodebuild
destination so long as the device type family matches. We have to specify a destination so Xcode correctly builds apps containing watch apps. If the selected device type is not 64-bit, such as an iPhone 5 or iPad Retina, thenONLY_ACTIVE_ARCH
is not set and will build for all architectures.