2016-06-24 4 views
3

Ich versuche, meine native Android App im Debug-Modus auf unseren Geräten laufen zu lassen, ohne dass ein Dev-Server auf einer Dev-Box läuft. Ich benutze die Debug-Variante/das Schema auf beiden Plattformen, um die "Staging" -Version unserer App zu erleichtern, da ich gelesen habe, dass das native Reagieren nicht besonders benutzerfreundlich ist mit anderen Build-Modi als Release und Debug.Native Android reagieren - wie im Debug-Modus nur auf dem Gerät ausgeführt werden?

Auf der iOS-Seite war ich in der Lage, die AppDelegate.m wie folgt zu modifizieren ... im Grunde, wenn es ein Debug-Build ist und es von Buddybuild gebaut wurde, suchen Sie nicht nach einem Dev-Rechner für das js-Bundle, schaue auf das Gerät:

#ifdef DEBUG 
NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary]; 
if (infoPlistDict[@"BUDDYBUILD_BUILD_ID"]) { 
    // deployed via buddybuild, don't use localhost 
    jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 
} else { 
    jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; 
} 
#else 
    jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 
#endif 

... Ich bin auf der Suche nach einer Möglichkeit, dies auf Android zu tun. Ich habe den buddybuild-Bitcode, den ich brauche, also keine Sorgen dort, ich will nur wissen, wie man den Standort des js-Bündels auf Android programmatisch ändert, wie ich oben für iOS in AppDelegate.m mache. Im Moment scheint der gesamte Code, der sich auf den Speicherort des js-Bundles auf Android bezieht, im reaktiven nativen Paket selbst zu liegen, und ich würde es lieber nicht hacken, um es zum Laufen zu bringen.

Wenn ich weitere Informationen zur Verfügung stellen kann, lassen Sie es mich bitte wissen.

Antwort

2

Auf Android möchten Sie möglicherweise android/app/build.gradle ändern.

Vor der Zeile apply from: "../../node_modules/react-native/react.gradle" sollten Sie dem Packer mitteilen, dass er die JS-Assets bündelt und sie bei der Bereitstellung Ihres APK einfügt.

Zum Beispiel:

project.ext.react = [ 
    bundleInBuddybuild: true, 
] 

Wo die Syntax bundleIn${productFlavor}${buildType}

Oder wenn Sie es gerade baut für für Debug tun wollen:

project.ext.react = [ 
    bundleInDebug: true, 
] 
+0

Ich denke, Sie sollten diese Antwort vervollständigen durch die Angabe, wie Sie die Debug-Version tatsächlich bauen als 'reagieren-native Lauf android 'Arbeit nicht. Sie müssen 'cd android && ./gradlew assembledDebug' machen. – ssomnoremac

+0

@ssomnoremac' reactive-native run-android' sollte funktionieren. Es baut standardmäßig die Debug-Version auf. Wenn Sie eine andere Variante erstellen möchten (z. B. release), verwenden Sie "reactive-native run-android --variant = release". – Tspoon

+0

Ich habe "run-android" ausgeführt, nachdem Sie das getan haben, was Sie gesagt haben, und es hat nicht bundleIn; Nach dem Ausführen von 'assembleDebug' oder' varient = debug' wurde es jedoch in vanilla 'run-android' gebündelt. Denke immer noch, du solltest es erwähnen. – ssomnoremac

2

Ich möchte die Lösung zusammenfassen um alles in einem Debug-Build zu bündeln. Vor allem der Hinweis in Punkt zwei hat mir geholfen. Danke @ Teelöffel.

1. Android Studio

  • zu Einstellungen gehen -> Build, Ausführung, Deployment -> Compiler
  • uncheck "Configure on Demand"

2. build.gradle

  • in Ihrer app/build.gradle Datei wie folgt vor:

    project.ext.react = [ 
        // whether to bundle JS and assets in debug mode 
        bundleInDebug: true, 
    
        // whether to bundle JS and assets in release mode 
        bundleInRelease: true, 
    ] 
    
    apply from: "../../node_modules/react-native/react.gradle" 
    
  • HINWEIS, dass es wichtig ist, die reagieren Einstellungen über der apply from ... Anweisung zu definieren, sonst ist es nicht

3 arbeiten.Erstellen APK

  • Ihre dev apk wie gewohnt erstellen mit ./gradlew assembleDebug in Ihrem android Ordner
Verwandte Themen