question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Error with `pod install` using Expo 42 & `use_frameworks!`

See original GitHub issue

Summary

Enabling use_frameworks! with Expo 42 in a bare workflow causes pod install to fail because @unimodules/core includes statically linked binaries.

Managed or bare workflow? If you have ios/ or android/ directories in your project, the answer is bare!

bare

What platform(s) does this occur on?

iOS

SDK Version (managed workflow only)

No response

Environment

  Expo CLI 4.9.1 environment info:
    System:
      OS: macOS 11.4
      Shell: 5.8 - /bin/zsh
    Binaries:
      Node: 12.22.1 - ~/.nvm/versions/node/v12.22.1/bin/node
      Yarn: 1.19.1 - /usr/local/bin/yarn
      npm: 6.14.10 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    Managers:
      CocoaPods: 1.10.2 - /usr/local/bin/pod
    SDKs:
      iOS SDK:
        Platforms: iOS 14.5, DriverKit 20.4, macOS 11.3, tvOS 14.5, watchOS 7.4
      Android SDK:
        API Levels: 23, 25, 26, 27, 28, 29
        Build Tools: 23.0.1, 23.0.2, 25.0.2, 27.0.3, 28.0.0, 28.0.2, 28.0.3, 29.0.1, 29.0.2
        System Images: android-26 | Google APIs Intel x86 Atom
    IDEs:
      Android Studio: 4.0 AI-193.6911.18.40.6626763
      Xcode: 12.5.1/12E507 - /usr/bin/xcodebuild
    npmPackages:
      expo: ~42.0.1 => 42.0.3
      react: 16.13.1 => 16.13.1
      react-dom: 16.13.1 => 16.13.1
      react-native: ~0.63.4 => 0.63.4
      react-native-web: ~0.13.12 => 0.13.18
    npmGlobalPackages:
      expo-cli: 4.9.1
    Expo Workflow: bare

Reproducible demo or steps to reproduce from a blank project

Demo project created using the steps below: https://github.com/carsondarling/expo42_use_frameworks_error_demo

Steps to Reproduce

  1. expo init --npm --template bare-minimum
  2. Update Podfile to enable use_frameworks!:
# ios/Podfile
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/react-native-unimodules/cocoapods.rb'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

platform :ios, '11.0'

target 'expo42useframeworkserrordemo' do
  use_frameworks!
  use_unimodules!
  config = use_native_modules!

  use_react_native!(:path => config["reactNativePath"])

  # Uncomment to opt-in to using Flipper
  #
  # if !ENV['CI']
  #   use_flipper!('Flipper' => '0.75.1', 'Flipper-Folly' => '2.5.3', 'Flipper-RSocket' => '1.3.1')
  #   post_install do |installer|
  #     flipper_post_install(installer)
  #   end
  # end
end
  1. cd ios && pod install
  2. Pod install fails with the following error: [!] The 'Pods-expo42useframeworkserrordemo' target has transitive dependencies that include statically linked binaries: (/Users/cdarling/Workspace/expo42_use_frameworks_error_demo/node_modules/@unimodules/core/ios/UMCore.xcframework)
Ignoring digest-crc-0.6.3 because its extensions are not built. Try: gem pristine digest-crc --version 0.6.3
Installing unimodules:
 expo-application@3.2.0 from ../node_modules/expo-application/ios
 expo-constants@11.0.1 from ../node_modules/expo-constants/ios
 expo-error-recovery@2.2.0 from ../node_modules/expo-error-recovery/ios
 expo-file-system@11.1.3 from ../node_modules/expo-file-system/ios
 expo-font@9.2.1 from ../node_modules/expo-font/ios
 expo-image-loader@2.2.0 from ../node_modules/expo-image-loader/ios
 expo-keep-awake@9.2.0 from ../node_modules/expo-keep-awake/ios
 expo-modules-core@0.2.0 from ../node_modules/expo-modules-core/ios
 expo-splash-screen@0.11.2 from ../node_modules/expo-splash-screen/ios
 expo-structured-headers@1.1.1 from ../node_modules/expo-structured-headers/ios
 expo-updates@0.8.3 from ../node_modules/expo-updates/ios
 expo-updates-interface@0.2.2 from ../node_modules/expo-updates-interface/ios
 unimodules-app-loader@2.2.0 from ../node_modules/unimodules-app-loader/ios
 unimodules-core@7.1.1 from ../node_modules/@unimodules/core/ios
 unimodules-react-native-adapter@6.3.5 from ../node_modules/@unimodules/react-native-adapter/ios
 unimodules-task-manager-interface@6.2.0 from ../node_modules/unimodules-task-manager-interface/ios

Auto-linking React Native modules for target `expo42useframeworkserrordemo`: RNGestureHandler, RNReanimated, and RNScreens
Analyzing dependencies
Downloading dependencies
[!] The 'Pods-expo42useframeworkserrordemo' target has transitive dependencies that include statically linked binaries: (/Users/cdarling/Workspace/expo42_use_frameworks_error_demo/node_modules/@unimodules/core/ios/UMCore.xcframework)

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Reactions:2
  • Comments:17 (6 by maintainers)

github_iconTop GitHub Comments

4reactions
tsapetacommented, Aug 12, 2021

Hey @carsondarling 👋 Thanks for reporting this issue to us and I apologize this is the case for you 🙇 Looks like it’s related to the prebuilt binary of unimodules core, so the solution might be to compile the package from sources. There are two ways to do this:

  1. Add $ExpoUseSources = ['@unimodules/core'] somewhere at the top of your podfile (if it still breaks for another package then you can add it there too).
  2. Run EXPO_USE_SOURCE=1 pod install which entirely opts-out from using the prebuilt binaries from .xcframework files

It’s definitely not a long-term solution, but I’d appreciate if you can let me know if that helps, at least for now 🙂

3reactions
tsapetacommented, Sep 24, 2021

Hey all! #14523 is going to fix these problems, we will keep you informed here 🙂 cc @Kudo

Read more comments on GitHub >

github_iconTop Results From Across the Web

Add Expo to an existing project
Learn how to add Expo SDK to an existing React Native project. ... To use Expo modules in your app, you will need...
Read more >
target has transitive dependencies that include statically ...
Enabling use_frameworks! with Expo 42 in a bare workflow causes pod install to fail because @unimodules/core includes statically linked binaries.
Read more >
Swift pods cannot yet be integrated as static libraries ...
I got this error message when doing " pod install " or " pod install --repo-update " or " pod update " and...
Read more >
Pod install failed using "expo run:ios : r/reactnative - Reddit
Pod install failed using "expo run:ios · Did you recently update your expo SDK? · Try upgrading your firebase libraries (whatever your using)...
Read more >
Introducing Istio Service Mesh for Microservices [Book] - O'Reilly
In the past, developers have often tried to use frameworks (EJBs, CORBA, ... This provides autoremoval of error-prone pods from the load-balancing pool....
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found