2016-07-29 109 views
2

我试图运行一个应用程序创建与反应本机(v0.3)没有连接到我的电脑。我已将该应用与react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios捆绑在一起,并在我的连接iPhone上运行(在Xcode上也更改为Release)。在iPhone上运行反应本机应用程序

这工作正常,即使(启动后)我禁用WiFi并从我的Mac断开手机。但如果我完全关闭应用程序并尝试重新启动它(没有连接WiFi或USB),它会崩溃(它显示应用程序屏幕并在几秒钟后崩溃)...

在启动时,我可以看到一个绿色条像“连接到192. *”(这可能是我的mac的IP地址)。我怎样才能完全禁用连接?该连接对调试非常有用,但不可能将该应用展示给某人。

取消注释在AppDelegate.mjsCodeLocation部分作为official documentation建议是不是非常有帮助的,因为它是不可能有这样生成的代码:

#import "AppDelegate.h" 

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

@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:@"weather" 
               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; 
} 

还是我失去了一些东西?

版本:

  • OSX 10.11.5
  • 的Xcode 7.3.1
  • 阵营原住民0.3
  • NPM 3.10.3

回答

4

一个可能的解决方案将是在Release模式下运行您的应用程序,该模式将自动使用编译的包而不是托管包。在开发模式下,bundle不会被编译并存储在设备上,从而缩短构建时间。当您将配置设置为Release时,react-native-xcode.sh脚本会自动为您运行bundle命令,并准备资产以及您的Javascript代码以存储在设备上。

要做到这一点,只需点击你的项目的名称(在这种情况下,它的基本): enter image description here

然后从模式选择Edit Scheme和调试改变Build configuration发布。

请注意,您也可以创建一个新的方案,以便同时提供两种Debug &发布模式。为此,只需从前面提到的模式中选择New Scheme而不是Edit Scheme,并相应地应用相同的调整。

+0

非常感谢,这工作! – Dennis

相关问题