react-native: [SOLVED] 0.61.5 to 0.62.2 upgrade error: OpenSSL-Universal ENABLE_BITCODE

After updating 0.61.5 to 0.62.2 with Upgrade Helper, ENABLE_BITCODE error drives me crazy. Looks like it happens because of switching to OpenSSL-Universal (1.0.2.19) from openssl-ios-bitcode. Not any problem while creating fresh project but it happens on upgrading to 0.62.2.

It happens only debug mode on real iOS device

Trying to run on debug mode it gives error message on below. ld: '... project path .../ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a(bio_lib.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64 It tried pod cache clear openssl-ios-bitcode by #27565 (comment) but it couldn’t find openssl-ios-bitcode pod.

Any idea about it?

Pods

platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

def add_flipper_pods!(versions = {})
  versions['Flipper'] ||= '~> 0.33.1'
  versions['DoubleConversion'] ||= '1.1.7'
  versions['Flipper-Folly'] ||= '~> 2.1'
  versions['Flipper-Glog'] ||= '0.3.6'
  versions['Flipper-PeerTalk'] ||= '~> 0.0.4'
	  versions['Flipper-RSocket'] ||= '~> 1.0'
	
	  pod 'FlipperKit', versions['Flipper'], :configuration => 'Debug'
	  pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configuration => 'Debug'
	  pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configuration => 'Debug'
	  pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configuration => 'Debug'
	  pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configuration => 'Debug'
	
	  # List all transitive dependencies for FlipperKit pods
	  # to avoid them being linked in Release builds
	  pod 'Flipper', versions['Flipper'], :configuration => 'Debug'
	  pod 'Flipper-DoubleConversion', versions['DoubleConversion'], :configuration => 'Debug'
	  pod 'Flipper-Folly', versions['Flipper-Folly'], :configuration => 'Debug'
	  pod 'Flipper-Glog', versions['Flipper-Glog'], :configuration => 'Debug'
	  pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configuration => 'Debug'
	  pod 'Flipper-RSocket', versions['Flipper-RSocket'], :configuration => 'Debug'
	  pod 'FlipperKit/Core', versions['Flipper'], :configuration => 'Debug'
	  pod 'FlipperKit/CppBridge', versions['Flipper'], :configuration => 'Debug'
	  pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configuration => 'Debug'
	  pod 'FlipperKit/FBDefines', versions['Flipper'], :configuration => 'Debug'
	  pod 'FlipperKit/FKPortForwarding', versions['Flipper'], :configuration => 'Debug'
	  pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configuration => 'Debug'
	  pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configuration => 'Debug'
	  pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configuration => 'Debug'
	end
	
	# Post Install processing for Flipper
	def flipper_post_install(installer)
	  installer.pods_project.targets.each do |target|
	    if target.name == 'YogaKit'
	      target.build_configurations.each do |config|
	        config.build_settings['SWIFT_VERSION'] = '4.1'
	      end
	    end
	  end
	end

target 'dashboardMobile' do
  # Pods for dashboardMobile
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
  pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
  pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
  pod 'React', :path => '../node_modules/react-native/'
  pod 'React-Core', :path => '../node_modules/react-native/'
  pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
  pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
  pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'

  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
  pod 'ReactCommon/callinvoker', :path => "../node_modules/react-native/ReactCommon"
  pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
  pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
  pod 'RNCharts', :path => '../node_modules/react-native-charts-wrapper'
  pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'
  
  
  use_native_modules!

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable these next few lines.
  add_flipper_pods!
  post_install do |installer|
    flipper_post_install(installer)
  end
end

target 'OneSignalNotificationServiceExtension' do
  pod 'OneSignal', '>= 2.9.3', '< 3.0'
end

Info

System:
    OS: macOS 10.15.4
    CPU: (6) x64 Intel(R) Core(TM) i5-8500B CPU @ 3.00GHz
    Memory: 896.27 MB / 8.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 13.11.0 - /usr/local/bin/node
    Yarn: 1.22.4 - /usr/local/bin/yarn
    npm: 6.13.7 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  Managers:
    CocoaPods: 1.8.3 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: iOS 13.4, DriverKit 19.0, macOS 10.15, tvOS 13.4, watchOS 6.2
    Android SDK:
      API Levels: 23, 25, 28, 29
      Build Tools: 28.0.3, 29.0.2
      System Images: android-28 | Intel x86 Atom_64, android-28 | Google Play Intel x86 Atom, android-29 | Google APIs Intel x86 Atom, android-29 | Google Play Intel x86 Atom
      Android NDK: Not Found
  IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.5900203
    Xcode: 11.4.1/11E503a - /usr/bin/xcodebuild
  Languages:
    Java: 1.8.0_222 - /usr/bin/javac
    Python: 2.7.16 - /usr/bin/python
  npmPackages:
    @react-native-community/cli: Not Found
    react: 16.11.0 => 16.11.0 
    react-native: 0.62.2 => 0.62.2 
  npmGlobalPackages:
    *react-native*: Not Found

SOLVED

Changing bitcode settings “No” for Debug mode solved the problem. Screen Shot 2020-05-05 at 00 41 28

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 73
  • Comments: 35 (1 by maintainers)

Most upvoted comments

comment out these lines

use_flipper!
  post_install do |installer|
    flipper_post_install(installer)
end

then

pod install in your ios folder

then clean project then build and run

Just noting that the solution was added to the bottom of the description, thanks for tracking it down @ezranbayantemur!

Running into this after I updated Xcode to v12.

ld: in /Users/user/Projects/example/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a(cryptlib.o), building for iOS Simulator, but linking in object file built for iOS, file '/Users/user/Projects/example/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

On "react-native": "0.62.2"

I’m seeing the same linker error as @justinjoyn after upgrading xcode to 12.0.

On 0.63.1

⚠️ Missing Environment Information ℹ️ Your issue may be missing information about your development environment. You can obtain the missing information by running react-native info in a console.

Bad bot. I already share info!

Why is it closed?

Do you need help upgrading to a newer React Native version? Visit the Upgrade Support repository or use the upgrade helper to see the changes that need to be made to upgrade your app.

use_flipper! post_install do |installer| flipper_post_install(installer) end comment out these lines in Podfile, solve this error for me.

Hi guys, You can find the solution here.

For changing the debug to No, triggered 14 other issues. Didn’t solve my problem. I am stuck because I have this issue. Seems as if it’s not ready for React Native 0.62.2

In my case, there was a OneSignal extension, so, you must change that config there too.

For changing the debug to No, triggered 14 other issues. Didn’t solve my problem. I am stuck because I have this issue. Seems as if it’s not ready for React Native 0.62.2

There are a few solutions you can try, but the problem is with the pod OpenSSL-Universal 1.0.2.19 in a dependency somewhere.

I’d suggest:

  1. Remove podfile.lock
  2. Remove Pods folder
  3. run pod install

Most likely the dependency has been update in the new pods pulled down from the above. (I think it might be flipper that updates that had the wrong dependency in the past which is why people fix it by disabling flipper)

You can also set the openssl dependency manually in the Podfile: pod ‘OpenSSL-Universal’, ‘~>1.0.2.20’

Then run pod install again.

Either works, but the first suggestion, if works, lets the openssl dependency auto upgrade in the future.

Here is the full discussion at openssl land: https://github.com/krzyzanowskim/OpenSSL/issues/65

removing flipper solve the problem,

remove flipper works for me, although it’s not a perfect solution… https://github.com/facebook/flipper/issues/1326