2016-07-29 21 views
2

Ich versuche, eine App mit reactive native (v0.3) erstellt, ohne überhaupt mit meinem Computer verbunden zu sein. Ich habe die App mit react-native bundle --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios gebündelt und laufe auf meinem angeschlossenen iPhone (auch geändert auf Release auf Xcode).Running React Native App auf dem iPhone

Das funktioniert gut, auch wenn (nach dem Start) ich WiFi deaktivieren und das Telefon von meinem Mac trennen. Aber wenn ich die App ganz schließe und versuche, es erneut zu starten (ohne WiFi oder USB verbunden), stürzt es ab (es zeigt den App-Bildschirm und stürzt nach einigen Sekunden ab) ...

Beim Start kann ich einen grünen Balken sehen etwas wie "Verbindung mit 192. *" (was wahrscheinlich die IP-Adresse meines Mac ist). Wie kann ich die Verbindung vollständig deaktivieren? Die Verbindung ist sehr nützlich, um zu debuggen, aber es ist unmöglich, die App jemandem zu zeigen.

uncommenting den jsCodeLocation Abschnitt in AppDelegate.m wie im official documentation vorgeschlagen ist nicht sehr hilfreich, da es nicht möglich ist, mit diesem Code generiert:

#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; 
} 

Oder bin ich nur hier etwas fehlt?

Versionen:

  • OSX 10.11.5
  • Xcode 7.3.1
  • Reagieren india 0,3
  • npm 3.10.3

Antwort

4

Eine der möglichen Lösungen wäre Führen Sie Ihre App im Release-Modus aus, der automatisch das kompilierte Paket anstelle des gehosteten Pakets verwendet. Im Entwicklungsmodus wird das Bundle nicht kompiliert und auf dem Gerät gespeichert, um die Build-Zeit zu verkürzen. Wenn Sie die Konfiguration auf Release setzen, führt das Skript react-native-xcode.sh automatisch den Befehl bundle für Sie aus und erstellt Assets sowie Ihren JavaScript-Code für die Speicherung auf dem Gerät.

so zu tun, einfach auf den Namen des Projekts klicken (in diesem Fall ist es Basic): enter image description here

dann aus dem modal, wählen Edit Scheme und Build configuration von Debug Release ändern.

Beachten Sie, dass Sie auch ein neues Schema erstellen können, damit beide Debug-Modi & gleichzeitig verfügbar sind. Wählen Sie dazu einfach New Scheme aus dem zuvor erwähnten Modal statt Edit Scheme und wenden Sie die gleichen Optimierungen entsprechend an.

+0

Vielen Dank, das hat funktioniert! – Dennis