react-native iOS 发布版本无法启动

Posted

技术标签:

【中文标题】react-native iOS 发布版本无法启动【英文标题】:react-native iOS release build fails to launch 【发布时间】:2017-03-22 11:04:22 【问题描述】:

我的 react-native 应用程序的 ios 版本存在问题。

使用调试方案时,一切都按预期工作,但一旦我更改为发布方案,只有初始和自动首次启动工作。如果我关闭并重新打开应用程序,它会立即关闭。

有没有人经历过类似的事情?或对如何调试此类问题有建议?

非常感谢任何帮助!

编辑:显示行为的短视频:https://vid.me/6kkB

AppDeletegate.m

#import "AppDelegate.h"

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import <FBSDKCoreKit/FBSDKCoreKit.h>
@import GooglePlaces;
@import GoogleMaps;

@implementation AppDelegate

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

  NSURL *jsCodeLocation;

  [GMSPlacesClient provideAPIKey:@"AIzaSyDHHSswYLWfcoKIjwSWDecBqib6r1fDMsc"];
  [GMSServices provideAPIKey:@"AIzaSyDHHSswYLWfcoKIjwSWDecBqib6r1fDMsc"];
  [[FBSDKApplicationDelegate sharedInstance] application:application
                           didFinishLaunchingWithOptions:launchOptions];

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

  // Release
  //jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];

  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"get"
                                               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];
  return YES;


- (BOOL)application:(UIApplication *)application 
            openURL:(NSURL *)url 
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options 

  BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
    openURL:url
    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
    annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
  ];
  // Add any custom logic here.
  return handled;




@end

【问题讨论】:

您的意思是应用程序第一次可以正常工作?如果没有查看您是否将应用程序构建为捆绑包,而不是从 Appdelegate.m 中的 localhost 获取 js 是的。该应用程序第一次就可以正常工作。但是,我只是注意到使用“react-native run-iso”运行应用程序会在首次启动时立即崩溃。只有在 xCode 中使用“构建并运行”才能让我在 _the_first_time 时完美地运行应用程序。 那么在调试模式下构建应用程序并检查它是否在控制台(chrome调试或xcode)中抛出任何错误,即使它没有崩溃 似乎没有任何错误或警告。顺便说一句,调试模式下存在相同的行为.. 添加了指向显示行为的视频的链接。 【参考方案1】:

当我遇到这个问题时,对我有用的东西就是:

清理项目 关闭项目,退出 xCode 重启 xCode,构建并运行

并密切关注打包程序终端.. 有时它会挂起或什至无法启动。然后可以使用npm start手动启动

【讨论】:

非常感谢您的建议。不幸的是,它在这种情况下没有帮助。

以上是关于react-native iOS 发布版本无法启动的主要内容,如果未能解决你的问题,请参考以下文章

无法在 IOS 应用程序的 detox 中使用深度链接 url 启动应用程序

对于最新版本的 react-native,应用程序未在 iOS 上运行

react-native:无法使用发布模式访问Android权限

几天后,React Native App 无法在 iOS 上启动

React-Native Expo,Facebook 登录无法在 Android 设备上运行

为啥 React-Native 无法在与 Expo 的 Android 连接上启动项目?