React Native在iOS上运行Pod Install时出错(安装Flipper-Glog)

14

当我尝试运行pod install时,在程序到达Installing Flipper-Glog (0.3.6)时生成了一个错误。
以下是完整的错误信息:

当我尝试运行pod install时,在程序到达Installing Flipper-Glog (0.3.6)时生成了一个错误。
以下是完整的错误信息:

Installing Flipper-Glog (0.3.6)
[!] /bin/bash -c 
set -e
#!/bin/bash
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.

set -e

PLATFORM_NAME="${PLATFORM_NAME:-iphoneos}"
CURRENT_ARCH="${CURRENT_ARCH}"

if [ -z "$CURRENT_ARCH" ] || [ "$CURRENT_ARCH" == "undefined_arch" ]; then
    # Xcode 10 beta sets CURRENT_ARCH to "undefined_arch", this leads to incorrect linker arg.
    # it's better to rely on platform name as fallback because architecture differs between simulator and device

    if [[ "$PLATFORM_NAME" == *"simulator"* ]]; then
        CURRENT_ARCH="x86_64"
    else
        CURRENT_ARCH="armv7"
    fi
fi

export CC="$(xcrun -find -sdk $PLATFORM_NAME cc) -arch $CURRENT_ARCH -isysroot $(xcrun -sdk $PLATFORM_NAME --show-sdk-path)"
export CXX="$CC"

# Remove automake symlink if it exists
if [ -h "test-driver" ]; then
    rm test-driver
fi

./configure --host arm-apple-darwin

# Fix build for tvOS
cat << EOF >> src/config.h
/* Add in so we have Apple Target Conditionals */
#ifdef __APPLE__
#include <TargetConditionals.h>
#include <Availability.h>
#endif
/* Special configuration for AppleTVOS */
#if TARGET_OS_TV
#undef HAVE_SYSCALL_H
#undef HAVE_SYS_SYSCALL_H
#undef OS_MACOSX
#endif
/* Special configuration for ucontext */
#undef HAVE_UCONTEXT_H
#undef PC_FROM_UCONTEXT
#if defined(__x86_64__)
#define PC_FROM_UCONTEXT uc_mcontext->__ss.__rip
#elif defined(__i386__)
#define PC_FROM_UCONTEXT uc_mcontext->__ss.__eip
#endif
EOF

# Prepare exported header include
EXPORTED_INCLUDE_DIR="exported/glog"
mkdir -p exported/glog
cp -f src/glog/log_severity.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/logging.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/raw_logging.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/stl_logging.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/vlog_is_on.h "$EXPORTED_INCLUDE_DIR/"

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-apple-darwin-strip... no
checking for strip... strip
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for arm-apple-darwin-gcc... /Library/Developer/CommandLineTools/usr/bin/cc -arch armv7 -isysroot 
checking whether the C compiler works... no
xcrun: error: SDK "iphoneos" cannot be located
xcrun: error: SDK "iphoneos" cannot be located
xcrun: error: SDK "iphoneos" cannot be located
xcrun: error: unable to lookup item 'Path' in SDK 'iphoneos'
/Users/jamesmurphy/Library/Caches/CocoaPods/Pods/Release/Flipper-Glog/0.3.6-1dfd6/missing: Unknown `--is-lightweight' option
Try `/Users/jamesmurphy/Library/Caches/CocoaPods/Pods/Release/Flipper-Glog/0.3.6-1dfd6/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/Users/jamesmurphy/Library/Caches/CocoaPods/Pods/Release/Flipper-Glog/0.3.6-1dfd6':
configure: error: C compiler cannot create executables
See `config.log' for more details

我正在使用React Native 0.63.3版本,以下是我的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 'xs' do
  config = use_native_modules!

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

  permissions_path = '../node_modules/react-native-permissions/ios'
  pod 'Permission-Notifications', :path => "#{permissions_path}/Notifications/Permission-Notifications.podspec"
  pod 'Permission-Camera', :path => "#{permissions_path}/Camera/Permission-Camera.podspec"
  pod 'Permission-LocationAlways', :path => "#{permissions_path}/LocationAlways/Permission-LocationAlways.podspec"
  pod 'Permission-LocationWhenInUse', :path => "#{permissions_path}/LocationWhenInUse/Permission-LocationWhenInUse.podspec"
  pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary/Permission-PhotoLibrary.podspec"
  pod 'Permission-MediaLibrary', :path => "#{permissions_path}/MediaLibrary/Permission-MediaLibrary.podspec"

  pod 'GoogleMaps'
  pod 'Google-Maps-iOS-Utils'
  
  pod 'RNSound', :path => '../node_modules/react-native-sound'

  target 'xsTests' do
    inherit! :complete
    # Pods for testing
  end

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

更新日期为2/21 如果您在Podfile中注释掉下面的代码...那么构建就会进一步进行(因为它不会安装Flipper-Glog)...但它会在Installing glog (0.3.5)处失败。

# use_flipper!()
# post_install do |installer|
#   react_native_post_install(installer)
# end

查看堆栈跟踪,下面是错误:

xcrun: error: SDK "iphoneos" cannot be located
xcrun: error: unable to lookup item 'Path' in SDK 'iphoneos'
configure: error: in/Users/jamesmurphy/Library/Caches/CocoaPods/Pods/External/glog/2263bd123499e5b93b5efe24871be317-73c24:
configure: error: C compiler cannot create executables

2
大家有没有找到解决这个问题的方法?我也遇到了同样的问题。 - Vishnu Prasannan
6个回答

19
在我的情况下,只需在Xcode设置中选择“命令行工具”,问题就会解决。
  1. 从工具栏左上角点击Xcode。
  2. 点击偏好设置。
  3. 点击位置。
  4. 选择命令行工具(它不应该是空的,在我这个案例中它是空的。一旦我选择了版本,问题就得到了解决)。

enter image description here


按照步骤修复了问题。 - Sumeet Raina
已经修复了这个问题。谢谢。 - Maycon Mesquita
即使选择了某些命令行工具,也要再次打开选择并确认。这样可以解决问题。 - Bedřich Schindler

1
在我的情况下,这个错误与命令行工具配置有关。我只需根据React Native文档中的说明选择我的Xcode版本即可。 https://reactnative.dev/docs/environment-setup Xcode > Preferences > Locations > Command Line Tools

1
运行sudo xcode-select --reset对我有效。

1

我遇到了同样的问题,但我的问题有些不同(也更简单),只是分享一下,以防将来有人需要。

我将Xcode移动到了外部SSD上,我的RN项目无法安装pods。结果发现问题在于我给我的SSD命名时包含了空格。所以将其从“Samsung SSD”重命名为“SamsungSSD”后,所有的pods都成功安装了。


1
这正是我遇到的问题,感谢您分享这个解决方案。 - O.AbedElBaset

0

0
删除iOS中的pod文件夹和pod.lock,并运行"pod update"命令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接