我是一名Web开发人员,并且是第一次构建React Native应用程序。
该应用程序一直在工作和编译,直到我添加了FCM对推送通知的支持。
我使用CocoaPods遵循了React-Native-FCM的所有指令。
现在,通过xCode进行构建会因以下错误而失败:
clang: error: unable to execute command: Segmentation fault: 11
clang: error: linker command failed due to signal (use -v to see invocation)
我的AppDelegate文件如下所示:
//
//版权所有(c)2016 Google Inc.
//
//根据Apache许可证2.0版(“许可证”)获得许可;
//除非遵守许可,否则您不得使用此文件。
//您可以在以下位置获得许可的副本
//
// http://www.apache.org/licenses/LICENSE-2.0
//
//除非适用法律要求或书面同意,否则软件
//根据许可分发的内容是按“原样”分发的,
//没有任何明示或暗示的保证或条件。
//有关特定语言的管理权限,请参见许可
//许可中的限制。
//
#import“AppDelegate.h”
#import“RCTBundleURLProvider.h”
#import“RCTRootView.h”
#import“RNFIRMessaging.h”
//从Apple的标头复制,以防某些情况下丢失(例如Xcode 8之前的版本)。
#ifndef NSFoundationVersionNumber_iOS_9_x_Max
#define NSFoundationVersionNumber_iOS_9_x_Max 1299
#万一
@implementation AppDelegate
-(BOOL)应用程序:(UIApplication *)应用程序
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSURL * jsCodeLocation;
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@“index.ios” fallbackResource:nil];
RCTRootView * rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@“Mamaz”
initialProperties:无
launchOptions:launchOptions];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f绿色:1.0f蓝色:1.0f alpha:1];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen] .bounds];
UIViewController * rootViewController = [UIViewController新];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
[FIRApp配置];
#如果已定义(__IPHONE_10_0)&& __IPHONE_OS_VERSION_MAX_ALLOWED> = __IPHONE_10_0
[[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
#万一
返回是;
}
#如果已定义(__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对象:self userInfo:notification.request.content.userInfo];
if([[[notification.request.content.userInfo valueForKey:@“show_in_foreground”] isEqual:@YES]){
completeHandler(UNNotificationPresentationOptionAlert | UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound);
}其他{
completeHandler(UNNotificationPresentationOptionNone);
}
}
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)使用CompletionHandler响应:(void(^)())completionHandler
{
NSDictionary * userInfo = [[NSMutableDictionary分配] initWithDictionary:response.notification.request.content.userInfo];
[userInfo setValue:@YES forKey:@“opened_from_tray”];
[[NSNotificationCenter defaultCenter] postNotificationName:FCMNotificationReceived对象:self userInfo:userInfo];
}
#其他
//如果您不想使用本地通知,则可以跳过此方法
-(void)应用程序:(UIApplication *)应用程序didReceiveLocalNotification:(UILocalNotification *)notification {
[[NSNotificationCenter defaultCenter] postNotificationName:FCMNotificationReceived对象:self userInfo:notification.userInfo];
}
#万一
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo fetchCompletionHandler:(nonnull void(^)(UIBackgroundFetchResult))completionHandler {
[[NSNotificationCenter defaultCenter] postNotificationName:FCMNotificationReceived对象:self userInfo:userInfo];
completeHandler(UIBackgroundFetchResultNoData);
}
@结束
我的PodFile像这样:
定位“应用”
use_frameworks!
#应用程式广告连播
pod“Firebase / Core”
pod“Firebase /消息传递”
目标“AppTests”
继承! :search_paths
#测试豆荚
结束
结束
有没有人遇到过这样的问题?我什至不知道是什么原因造成的(由于错误消息的描述性不是很高)
最佳答案
出现一般性错误消息,您可能只会得到一般性答案。
尝试:
a)删除#define NSFoundationVersionNumber_iOS_9_x_Max 1299
以获得提示,就像您的工具链正确与否一样。
b)关闭Xcode 8.1(完全关闭,类似于使用cmd + q),删除DerivedData文件夹,清空垃圾箱。并且只有在最后一步之后重新打开Xcode,才能正确地重新构建缓存。
c)确保您正在使用CocoaPods 1.1.1。毫无疑问,您也可以更新其他工具。示例:sudo gem update -n /usr/local/bin --system && sudo gem update -n /usr/local/bin
d)use_frameworks!
在target
之前,因为这是我们通常的做法
e)pod deintegrate && pod install
,以正确地重新集成吊舱
f)最后,克隆您的项目,然后尝试从克隆的仓库中进行构建:如果可行,请删除旧仓库并使用新仓库:)。如果仍然失败,则可以开始删除代码段,以尝试使用最小的测试用例获得配置,您可以在CocoaPods问题跟踪器上共享该代码以进行调查。
关于ios - React Native iOS构建失败“无法执行命令:段错误:11”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40822061/