[TIMOB-19202] iOS9: Rebuild all static libraries in titanium_mobile and appcelerator modules with Xcode 7
GitHub Issue | n/a |
---|---|
Type | Epic |
Priority | Critical |
Status | Closed |
Resolution | Fixed |
Resolution Date | 2018-07-27T17:37:21.000+0000 |
Affected Version/s | Release 4.1.1 |
Fix Version/s | Release 5.0.1 |
Components | iOS |
Labels | appthinning, qe-4.1.1 |
Reporter | Chee Kiat Ng |
Assignee | Eric Merriman |
Created | 2015-07-10T03:08:37.000+0000 |
Updated | 2018-07-27T17:37:21.000+0000 |
Description
Following the release of Xcode 7 / Beta 3, There's a *Enable Bitcode* in Build Settings which is set to *YES*, that prevents the Xcode project from compiling if it contains libraries that were not compiled with Xcode 7 / Beta 3 with the same build setting. Reference [here](https://forums.developer.apple.com/thread/8991)
Bitcode is part of the app thinning initiative. Reference [here](https://developer.apple.com/library/prerelease/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html#//apple_ref/doc/uid/TP40012582-CH35)
A temporary work around is to set this *Enable Bitcode* to *NO*, and the project will compile. However, eventually we should have all libraries recompiled with the latest Xcode, so that future projects are app thinning ready.
New tickets on rebuilding should be referenced to this ticket.
Enable Bitcode will be set to NO by default in the next release. This ticket will be addressed after the next release.
This ticket has to be resolved in order for app submission of watch app to work. See http://adcdownload.apple.com/Developer_Tools/Xcode_7_beta_5/Xcode_7_beta_5_Release_Notes.pdf page 37 under App thinning: {quote} Xcode 7 has a ENABLE_BITCODE option to embed bitcode in apps, app extensions, and frameworks. The option is turned on by default for iOS and is *mandatory* for watchOS projects submitted to the store. {quote} Also see https://forums.developer.apple.com/thread/10392 for user frustrations.
One of the key concerns of rebuilding the static libraries is whether it implies that we have to maintain 2 architectures, one with bitcode enabled, while the other is not. Based on information from: http://www.openradar.me/21884601 and https://github.com/CocoaPods/CocoaPods/issues/3729 It seems to imply that libraries and frameworks built with bitcode enabled can be used in both bitcode enabled and disabled projects. i.e. they can be used in Xcode 7 as well as earlier versions of Xcode that doesn't have bitcode. *Verified*. libs built with bitcode support is backward compatible with Xcode < 7 as well. This implies that we don't have to maintain 2 versions of libs.