当前位置: 首页 > 知识库问答 >
问题:

React Native iOS构建失败“无法执行命令:分段错误:11”

宋安晏
2023-03-14

我是一名Web开发人员,我第一次构建React Native应用程序。在我添加对推送通知的FCM支持之前,该应用程序一直在工作和编译。

我遵循React Native FCM的所有说明,使用CocoaPods。

现在,by内置xCode失败,出现以下错误:

clang: error: unable to execute command: Segmentation fault: 11
clang: error: linker command failed due to signal (use -v to see invocation)

我的AppDelegate文件如下所示:

//
//  Copyright (c) 2016 Google Inc.
//
//  Licensed under the Apache License, Version 2.0 (the "License");
//  you may not use this file except in compliance with the License.
//  You may obtain a copy of the License at
//
//  http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//

#import "AppDelegate.h"

#import "RCTBundleURLProvider.h"
#import "RCTRootView.h"
#import "RNFIRMessaging.h"

// Copied from Apple's header in case it is missing in some cases (e.g. pre-Xcode 8 builds).
#ifndef NSFoundationVersionNumber_iOS_9_x_Max
#define NSFoundationVersionNumber_iOS_9_x_Max 1299
#endif

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  NSURL *jsCodeLocation;

  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];

  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"Mamaz"
                                               initialProperties:nil
                                                   launchOptions:launchOptions];
  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];

  [FIRApp configure];

  #if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
    [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
  #endif

  return YES;

}

#if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
{
  [[NSNotificationCenter defaultCenter] postNotificationName:FCMNotificationReceived object:self userInfo:notification.request.content.userInfo];
    if([[notification.request.content.userInfo valueForKey:@"show_in_foreground"] isEqual:@YES]){
    completionHandler(UNNotificationPresentationOptionAlert | UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound);
  }else{
    completionHandler(UNNotificationPresentationOptionNone);
  }

}

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler
{
    NSDictionary* userInfo = [[NSMutableDictionary alloc] initWithDictionary: response.notification.request.content.userInfo];
  [userInfo setValue:@YES forKey:@"opened_from_tray"];
  [[NSNotificationCenter defaultCenter] postNotificationName:FCMNotificationReceived object:self userInfo:userInfo];
}
#else
//You can skip this method if you don't want to use local notification
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
  [[NSNotificationCenter defaultCenter] postNotificationName:FCMNotificationReceived object:self userInfo:notification.userInfo];
}
#endif

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler{
  [[NSNotificationCenter defaultCenter] postNotificationName:FCMNotificationReceived object:self userInfo:userInfo];
  completionHandler(UIBackgroundFetchResultNoData);
}

@end

我的PodFile是这样的:

target 'App' do
  use_frameworks!

  # Pods for App
  pod 'Firebase/Core'
  pod 'Firebase/Messaging'

  target 'AppTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

有人遇到过这样的问题吗?我甚至无法理解是什么导致了它(因为错误消息不是很具有描述性)

共有1个答案

钮出野
2023-03-14

如果出现一般性错误消息,您可能只会得到一般性的答案。

尝试:

a)删除#定义NSFoundationVersionNumber_iOS_9_x_Max1299以获得提示,就好像您的工具链是否正确一样。

b) 关闭Xcode 8.1(完全关闭,就像使用cmd q一样),删除DerivedData文件夹,清空垃圾箱。只有在最后一步之后重新打开Xcode,才能正确地重新构建缓存。

c) 确保你使用的是CocoaPods 1.1.1。毫无疑问,你也可以更新其他工具。示例:sudo gem update-n/usr/local/bin--system

d) 使用_框架 之前目标,我们通常就是这样做的

e) pod去集成

f) 最后,克隆您的项目,并尝试从克隆的repo构建:如果成功,请删除旧的repo并使用新的repo:)。如果仍然失败,那么您可以开始删除代码片段,尝试获得一个配置,其中包含一个最小的测试用例,您可以在CocoaPods问题跟踪器上共享该配置以进行调查。

 类似资料:
  • 鉴于以下情况: 检查我的和versions是否正确: 不确定我的< code>brew安装的< code>mvn是否有问题,我将其移除并下载了< code>mvn-...来自Apache的bin.zip然后我设置了我的路径,验证了< code>mvn -version和< code>java -version输出的是相同的版本。但是,我仍然有同样的问题。 我查看了前3个(来自搜索)StackOve

  • 问题内容: 我遇到了错误… 命令由于信号失败:分段错误:11 …尝试编译我的Swift应用程序时。我正在使用Xcode 6.1,尝试在iOS 8.1上为iPhone 5进行构建。 我的密码 和错误文本! 问题答案: 对于遇到此问题的其他人…我发现问题是由导入自定义框架引起的,我不知道如何纠正它。但是,只需从框架中删除导入和任何引用项目的代码即可解决此问题。 (╯°□°)╯︵┻━┻ 希望这可以节省一

  • 问题内容: 当我尝试为数据建立索引然后进行查询时,一切都很好,但是如果我启动我的应用程序并且在不进行索引的情况下进行查询,那么我会收到该错误 这是我的elasticsearch代码和设置 我的设置有什么问题? 问题答案: 您可以在添加睡眠10秒后尝试相同的方法吗 我觉得Elasticsearch在您找到搜索请求之前还没有恢复碎片。甚至管理员呼叫“等待黄色”也应该为您工作

  • 默认情况下, 只要有任务调用失败, Gradle就会中断执行. 这可能会使调用过程更快, 但那些后面隐藏的错误就没有办法发现了. 所以你可以使用 --continue 选项在一次调用中尽可能多的发现所有问题. 采用 --continue 选项, Gralde 会调用每一个任务以及它们依赖的任务. 而不是一旦出现错误就会中断执行.所有错误信息都会在最后被列出来. 一旦某个任务执行失败,那么所有依赖于

  • 有人能帮我解决这个错误吗? 我把ADS放在我的项目中,当我尝试将我的项目构建到Android时,我得到了这个错误。 但是,如果我将ADS脱机,那么错误就会消失。 命令调用失败:Gradle 构建失败。C:/Program Files/Java/jdk1.8.0_45\bin\java.exe -classpath “E:\unity 5\Editor\Data\PlaybackEngines\An

  • 当我运行tns run android时,我正在尝试构建一个nativescript应用程序。我遇到以下错误: 失败:生成失败,出现异常。 > 错误:任务执行失败:app:transformNativeLibsWithStripDebugSymbolForDebug。 启动进程“command”C:\Users\Natasha\AppData\Local\Android\Sdk\ndk bundl