Disable Bitcode for Project and Cocoapods Dependencies with Xcode 7

Disable bitcode for project and cocoapods dependencies with Xcode 7?

To set this setting in a way that doesn't get overridden each time you do a pod install you can add this to your Podfile

post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end

How to disable Bitcode on Carthage dependencies

  1. Have an xcconfig file for carthage to add build properties when building the frameworks.
XCODE_XCCONFIG_FILE="myConfigFile.xcconfig" carthage bootstrap --platform iOS

  1. Where myConfigFile.xcconfig would disable bitcode:
ENABLE_BITCODE[sdk=iphoneos*] = NO

Credit Brennan Taylor on https://github.com/Carthage/Carthage/issues/2440.

Thanks to Benjamin Bojko for the link.

Xcode 7 + Dropbox Core API: Simply disable Bitcode?

Since I asked this question I simply set the option Enable Bitcode to No in the targets Build Settings while using Yes in the Widget and Apple Watch targets. That worked just fine and I did not notice any problems or limitations.

Now I tried to release a new version of my app to the App Store and I noticed a check box Include Bitcode when uploading the app file to Apple. When this check box is enabled I receive the following error:

Invalid Match-O Format. The Match-O bundle "MyApp.app/PlugIns/MyApp WatchKit Extension.appex" isn't consistent with the Match-O in the main bundle.

The main bundle Match-O contains armv7(machine code) and arm64(machine code), while the nested bundle Match-O contains armv7(bitcode and machine code) and arm64(bitcode and machine code).

Varify that all of the targets for a platform have a consistent value for the ENABLE_BITCODE build setting.

I have no idea why this is a problem now while all other version I uploaded during the last year passed without any problem. However the problem can easily be solved by un-checking the Include Bitcode check box. The upload is then accepted without any problem.

But there is a better solution: As Greg pointed out, Dropbox finally released a Bitcode enabled version of the SDK!

Download the new SDK 1.3.14, include it in your project and set ENABLE_BITCODE to Yes for all targets, and you are done. At least until Apple finds a new way to disturb your release workflow :-)

How to ENABLE_BITCODE in Xcode 7?

If you are using a third-party framework or library that was updated for iOS 9, and you don't want to include bitcode, then you should check to see if a version of the framework was provided without bitcode. See Apple's note on when to include it in your app bundle:

For iOS apps, bitcode is the default, but optional. For watchOS and tvOS apps, bitcode is required. If you provide bitcode, all apps and frameworks in the app bundle (all targets in the project) need to include bitcode.

To disable/enable bitcode in your project, follow these steps:

  1. In the project build settings, make sure you have enabled All settings to be visible.
  2. The Build Options are the 4th section down. Select Yes or No for the Enable Bitcode option.

Sample Image

Sample Image



Related Topics



Leave a reply



Submit