React native build failed - xcodebuild: error: The workspace named "foo" does not contain a scheme named "foo"
Asked Answered
E

3

9

I have a react native app that when Run from XCode it works as expected (builds and runs on a simulator). But when I try run it from my terminal with

npx react-native run-ios

I get the error:

error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by opening foo.xcworkspace.
Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -workspace foo.xcworkspace -configuration Debug -scheme foo -destination id=FEB37

User defaults from command line:
    IDEPackageSupportUseBuiltinSCM = YES

xcodebuild: error: The workspace named "foo" does not contain a scheme named "foo". The "-list" option can be used to find the names of the schemes in the workspace.

It might have something to do with my schemes here

When I manage my schemes in XCode I do NOT see scheme 'foo'. It is a generic app so it uses scheme 'bar' which is in the XCode manage gui.

I've also tried

npx react-native run-ios --configuration Debug --scheme Development

and get a very large logout with it ending in:

** BUILD FAILED **

The following build commands failed:
        MergeSwiftModule normal x86_64
        CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler

If I downgrade XCode from 12.5 to 12.0.1 it works as expected. But I would like to use the latest XCode.

If I run react-native info

info Fetching system and libraries information...
(node:11609) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
System:
    OS: macOS 11.4
    CPU: (16) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 905.50 MB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 14.16.0 - ~/.nvm/versions/node/v14.16.0/bin/node
    Yarn: 1.22.4 - /usr/local/bin/yarn
    npm: 6.14.11 - ~/.nvm/versions/node/v14.16.0/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  Managers:
    CocoaPods: 1.10.1 - /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: 28, 29, 30
      Build Tools: 29.0.2, 30.0.3, 31.0.0
      System Images: android-28 | Google Play Intel x86 Atom, android-29 | Intel x86 Atom_64, android-30 | Google APIs Intel x86 Atom
      Android NDK: Not Found
  IDEs:
    Android Studio: 4.2 AI-202.7660.26.42.7351085
    Xcode: 12.5/12E262 - /usr/bin/xcodebuild
  Languages:
    Java: 15.0.2 - /usr/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: 17.0.2 => 17.0.2 
    react-native: 0.64.0 => 0.64.0 
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

I've tried restarting my mac... Do I have to wait for dependencies to be updated?

Here is the Podfile

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


target 'vicinity' do
  config = use_native_modules!

  use_react_native!(
    :path => config[:reactNativePath],
    # to enable hermes on iOS, change `false` to `true` and then install pods
    :hermes_enabled => false
  )
end

post_install do |installer|
  react_native_post_install(installer)
end

I have also tried to clean and rerun the start script.

Any help in getting this to build in terminal would be great.

Here is the last bit of the build failure logs:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -merge-modules -emit-module /Users/grant/Library/Developer/Xcode/Derivtes.noindex/Pods.build/Debug-iphonesimulator/lottie-react-native.build/Objects-normal/x86_64/lottie_react_native.swiftmodule
<unknown>:0: error: fatal error encountered while reading from module 'lottie_react_native'; please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project
<unknown>:0: note: module 'lottie_react_native' full misc version is '5.4(5.4)/Apple Swift version 5.4 (swiftlang-1205.0.26.9 clang-1205.0.19.55)'

*** DESERIALIZATION FAILURE (please include this section in any bug report) ***
could not deserialize type for 'ContainerView': top-level value not found
Cross-reference to module 'lottie_react_native'
... RCTView

Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
Stack dump:
0.  Program arguments: /Applications/Xcode.app/Contents/Devel...ld/Debug-iphonesimulator/lottie-react-native.build/Objects-normal/x86_64/lottie_react_native.swiftmodule
1.  Apple Swift version 5.4 (swiftlang-1205.0.26.9 clang-1205.0.19.55)
2.  While evaluating request ASTLoweringRequest(Lowering AST to SIL for module lottie_react_native)
0  swift-frontend           0x000000010c7e5e85 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 37
1  swift-frontend           0x000000010c7e4e78 llvm::sys::RunSignalHandlers() + 248
2  swift-frontend           0x000000010c7e6446 SignalHandler(int) + 262
3  libsystem_platform.dylib 0x00007fff2066ed7d _sigtramp + 29
4  libdyld.dylib            0x00007fff20643d08 _dyld_fast_stub_entry(void*, long) + 65
5  libsystem_c.dylib        0x00007fff2057e411 abort + 120
6  swift-frontend           0x0000000108554384 swift::ModuleFileSharedCore::fatal(llvm::Error) + 100
7  swift-frontend           0x00000001084d9b48 swift::ModuleFile::fatal(llvm::Error) + 2600
8  swift-frontend           0x000000010853d824 swift::SILDeserializer::readVTable(llvm::PointerEmbeddedInt<unsigned int, 31>) + 2532
9  swift-frontend           0x00000001085c21cb swift::SILDeserializer::getAll(bool) + 107
10 swift-frontend           0x0000000107ea2393 swift::ASTLoweringRequest::evaluate(swift::Evaluator&, swift::ASTLoweringDescriptor) const + 10899
11 swift-frontend           0x0000000107fae50d swift::SimpleRequest<swift::ASTLoweringRequest, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> > (swift::ASTLoweringDescriptor), (swift::RequestFlags)9>::evaluateRequest(swift::ASTLoweringRequest const&, swift::Evaluator&) + 205
12 swift-frontend           0x0000000107ea64ac llvm::Expected<swift::ASTLoweringRequest::OutputType> swift::Evaluator::getResultUncached<swift::ASTLoweringRequest>(swift::ASTLoweringRequest const&) + 780
13 swift-frontend           0x0000000107ea2d3f swift::performASTLowering(swift::ModuleDecl*, swift::Lowering::TypeConverter&, swift::SILOptions const&) + 143
14 swift-frontend           0x0000000107a0602e swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 7150
15 swift-frontend           0x0000000107987e82 main + 1266
16 libdyld.dylib            0x00007fff20644f5d start + 1
17 libdyld.dylib            0x0000000000000087 start + 18446603339972718891

=== BUILD TARGET react-native-splash-screen OF PROJECT Pods WITH CONFIGURATION Debug ===

Check dependencies

CompileC /Users/grant/Library/Developer/Xcode/Derive...t-native-splash-screen/react-native-splash-screen-dummy.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
    cd /Users/grant/repos/foo/foo-centres-app/packages/app/ios/Pods
    export LANG=en_US.US-ASCII
    export PATH="/Applications/Xcode.app/Contents/De...dk/tools:/Users/grant/Library/Android/sdk/tools/bin:/Users/grant/Library/Android/sdk/platform-tools"
    /Applications/Xcode.app/Contents/Developer/Toolc...ld/Debug-iphonesimulator/react-native-splash-screen.build/Objects-normal/x86_64/react-native-splash-screen-dummy.o

CompileC /Users/grant/Library/Developer/Xcode/Derived...app/node_modules/react-native-splash-screen/ios/RNSplashScreen.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
    cd /Users/grant/repos/foo/foo-centres-app/packages/app/ios/Pods
    export LANG=en_US.US-ASCII
    export PATH="/Applications/Xcode.app/Contents/D...y/Android/sdk/tools/bin:/Users/grant/Library/Android/sdk/platform-tools"
    /Applications/Xcode.app/Contents/Developer/...uild/Debug-iphonesimulator/react-native-splash-screen.build/Objects-normal/x86_64/RNSplashScreen.o


** BUILD FAILED **


The following build commands failed:
    CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
    MergeSwiftModule normal x86_64 /Users/grant/Library/Developer/Xcode/DerivedData/foo-...or/lottie-react-native.build/Objects-normal/x86_64/lottie_react_native.swiftmodule
(2 failures)

info Run CLI with --verbose flag for more details.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @foo/[email protected] start: `scripts/start`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @foo/[email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

➜  ~/repos/foo/foo-centres-app/packages/app git:(update-release-app-v2) ✗

The output of xcodebuild -list

Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -list

User defaults from command line:
    IDEPackageSupportUseBuiltinSCM = YES

Information about project "foo":
    Targets:
        foo

    Build Configurations:
        Debug
        Release
        Emp
        Chad
        Test
        PreProduction
        Master

    If no build configuration is specified and -scheme is not passed then "Release" is used.

    Schemes:
        Chad
        Development
        Emp
        Master
        PreProduction
        Release
        Test
Ethnography answered 15/6, 2021 at 8:7 Comment(2)
Can you please add the output of cd <path_to_your_project_ios_folder_where_you_can_see_your .xcworkspace file> && xcodebuild -list to your question?Bridgeport
@TarunTyagi I've added the outputEthnography
P
1
  • Can you make sure you're using the right version of Xcode, by running xed --version. There might be a mismatch with the Xcode version that React Native is using (not that this should cause a problem by itself)? You can change it with xcode-select.

  • Can you try upgrade lottie-react-native to 4.0.2, using npm i [email protected], you're using 3.5.0.

  • Can you try upgrade lottie-ios to 3.2.3, using npm i [email protected]

  • Then make sure you run cd ios and pod install

  • If you get linker warnings, follow this

If you get desperate, you can delete the ios folder and regenerate it by running by creating a new project with the same name, and copying the iOS folder into your existing project. Or you can just compare the 2 projects/ schemes, and see what you're missing.

Good luck 🙂

Pleo answered 27/6, 2021 at 21:22 Comment(2)
I ended up upgrading lottie-react-native to 4.0.2 and downgrading lotties-ios to 3.1.8Ethnography
Cool 😃, I'm glad I spotted the old version then 🙂. I wonder why you had to downgrade lottie-ios though.Pleo
P
3

I suspect something else..

please check beyond the schema such as accessibility/permission. Since there are more than one reasons this can happen, I recommend verifying all below.

 // a very helpful debug 
 xcodebuild -list

Basic Debug xcodebuild -list; once they are configured correctly, shared they will successfully should up as shared for you.       expected shared configuration

Default configuration of Schemes is private you have to configure/make it shared In the terminal/command-line build, the Xcode UI never runs and the xcoderun tool doesn't have its own cache of Schemes to work with.


Step 1: Make your schema accessible to the command-line build

Make your schema accessible to the command-line build by changing it to a shared scheme.

  1. Menu > Product > Scheme > Manage Schemes
  2. Verify/Check off the 'Shared' box for that scheme
  • Select Schema you want to create and click on the Edit button
  • Uncheck and Checkoff just to be sure the "Shared" checkbox.
  1. Now go to WorkspaceName.xcworkspace/xcshareddata/xcschemes
  2. Now verify a new .xcscheme file has been created in your project at
    WorkspaceName.xcworkspace/xcshareddata/xcschemes.
  3. Please remember to commit this file to your repository, so that your CI builds will also work
  4. Verify again, since the folder names are case sensitive

From your build or release configuration path

       Sample configuration current Xcode Workspace command line builds and menu bar setup

       Sample configuration of older Xcode Workspace command line builds and menu bar setup


Step 2: Do you have cocoapods - yes/no

NO, If your project is NOT using cocoapods , then you should delete the .xcworkspace file from ./ios directory.

yes, or if you are using a workspace (e.g. with pods), debug/verify like so, here..

// a very helpful debug 
xcodebuild -workspace MyProject.xcworkspace -list

Another question on SO, with different approach


Step 3:

If you previously created the folder from step 1, or for some reason renamed/edited project, then go in an update the names manually

  1. Open Foo as a directory in finder.
  2. Open the folder xcshareddata/xcschemes
  3. Rename the xcscheme files there
Pacificism answered 27/6, 2021 at 18:0 Comment(0)
B
2

Looking at this output from xcodebuild -list

Information about project "foo":
    Targets:
        foo

    Build Configurations:
        Debug
        Release
        Emp
        Chad
        Test
        PreProduction
        Master

    If no build configuration is specified and -scheme is not passed then "Release" is used.

    Schemes:
        Chad
        Development
        Emp
        Master
        PreProduction
        Release
        Test

And this error from npx react-native run-ios -

xcodebuild: error: 
The workspace named "foo" does not contain a scheme named "foo". 
The "-list" option can be used to find the names of the schemes in the workspace.

The error says that - the target foo (listed under Targets: in the output) should have a corresponding scheme called foo (that should have been listed under Schemes: in the output) which it can't find while using npx react-native run-ios.

As you say, you are able to run this from Xcode successfully, you should note which scheme are you running. You can find it on the top left corner - right next to play / stop buttons. Adventure iOS in the below screenshot is the scheme.

enter image description here

Note down it's name (case sensitive), make sure it's listed under Schemes: in the above output, if it's not - make sure it's shared (Edit Scheme > Check the Shared Checkbox).

After that you can run using command line using that scheme name like following - say you are successfully running "Chad" scheme from Xcode, run that using command line like this.

npx react-native run-ios --scheme "Chad"
Bridgeport answered 28/6, 2021 at 22:33 Comment(0)
P
1
  • Can you make sure you're using the right version of Xcode, by running xed --version. There might be a mismatch with the Xcode version that React Native is using (not that this should cause a problem by itself)? You can change it with xcode-select.

  • Can you try upgrade lottie-react-native to 4.0.2, using npm i [email protected], you're using 3.5.0.

  • Can you try upgrade lottie-ios to 3.2.3, using npm i [email protected]

  • Then make sure you run cd ios and pod install

  • If you get linker warnings, follow this

If you get desperate, you can delete the ios folder and regenerate it by running by creating a new project with the same name, and copying the iOS folder into your existing project. Or you can just compare the 2 projects/ schemes, and see what you're missing.

Good luck 🙂

Pleo answered 27/6, 2021 at 21:22 Comment(2)
I ended up upgrading lottie-react-native to 4.0.2 and downgrading lotties-ios to 3.1.8Ethnography
Cool 😃, I'm glad I spotted the old version then 🙂. I wonder why you had to downgrade lottie-ios though.Pleo

© 2022 - 2024 — McMap. All rights reserved.