2016-07-27 13 views
9

Cross-Plattform-react-native Pakete haben nativen Android-Code, nativen iOS-Code und Javascript-Code, der sie in die JavaScript-Welt überbrückt.können die nativen Teile eines reaktiven nativen Pakets eigenständig ausgeführt und entwickelt werden?

Vermutlich wenn Sie an den nativen Teilen eines solchen Pakets arbeiten, würden Sie diese in ihre jeweiligen IDEs (Android-Studio und Xcode) importieren und die UI-Entwicklung in der IDE durchführen.

Wenn ich reaction-native Pakete als Ganzes betrachte oder die nativen Teile in ihre jeweiligen IDEs importiere, scheinen diese nativen Teile nicht eigenständig lauffähig zu sein ... zumindest nicht als eigenständige Android- oder iOS-Anwendung.

Meine Frage ist, wie können Sie die nativen IDEs verwenden, um den nativen Teil eines reaktiv-nativen Pakets zu importieren/zu erstellen/auszuführen/debuggen? Müssten Sie in der Regel weiterhin den reaktiven nativen Server und den Rest-javscript-Überbrückungscode verwenden?

Das spezifische Paket, das ich versuche, nativen Teil zu ändern, ist react-native-datetime. Ich hoffe, dass ich in der Lage bin, den Android-Teil in android-studio zu importieren und herauszufinden, wie man einen der Picker ausführt und modifiziert.

Antwort

2

Wenn Sie ein statisches Bundle Ihrer js-Dateien zur Verwendung in Ihrer App erstellen, können Sie die App ausführen, ohne den js-Server laufen lassen zu müssen. Dann sollten Sie in der Lage sein, den nativen Code mit Ihrem Editor/IDE zu bearbeiten, indem Sie den Ordner android in Ihrem Projektverzeichnis (für Android) verwenden.

Um eine Offline-Paket für Android zu erstellen:

react-native bundle --platform android --dev false --entry-file index.android.js \ --bundle-output android/app/src/main/assets/index.android.bundle \ --assets-dest android/app/src/main/res/

Dieses statische Bündel index.android.bundle für Ihren JavaScript-Code unter android/app/src/main/assets/

Eine einfachere Art und Weise

curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle" 
zu tun wäre, schaffen sollte

aus dem Build-Verzeichnis.

4

Reagieren Native Projekte haben in ihrem Stammverzeichnis zwei weitere Verzeichnisse: android und ios, die das Android (Sie können es mit Android Studio wie jedes andere Android-Projekt öffnen) bzw. die XCode iOS-Projekte haben.

Ich würde sagen, dass der React Packager geöffnet sein muss, damit die App die JS-Dateien abrufen kann. Ich habe gerade versucht, es zu schließen und die App auf XCode allein laufen zu lassen, und es öffnete den Verpacker vorher auf einem Terminalfenster.

Mein Vorschlag ist: Erstellen Sie ein leeres Projekt, importieren Sie das react-native-datetime Paket, verwenden Sie es auf dem Hauptbildschirm und spielen Sie nativ mit Android Studio oder XCode, wenn das eine Option ist.

+0

Warum ein leeres Projekt erstellen? sollten die android- und ios-Ordner innerhalb des datetime-Pakets nicht schon Android Studio- und XCode-Projekte sein? ... auch wenn ich dieses spezielle Paket importiere, scheint es nicht zu funktionieren, da keine deklarierte reaktionsnative Abhängigkeit existiert (nicht sicher, ob so sollte ein Paket sein?) ... schließlich, wenn ich es als eine Abhängigkeit hinzufüge und in der Lage bin, es zu bauen, scheint es nicht eine ausführbare App zu sein (entweder das oder ich bekomme nicht, wie man ein Stück davon ausführt UI-Code, ohne dass er in eine App eingebettet sein muss) – funkyeah

+1

@funkyeah, Sie verknüpfen den systemeigenen Code aus dem Verzeichnis 'node_modules'. Sie können also den Code von dort ändern und dann neu kompilieren. Wenn Sie auf der Suche nach einer einfachen Vorschau von Komponenten sind, lesen Sie [react-native-muchbook] (https: // github.com/kadirahq/react-native-storybook) –

+0

Ich suche nur den nativen Teil, so scheint mir, dass node_modules wäre nicht anwendbar ... z. In dem Beispiel-Datetime-Paket, das ich erwähnt habe, möchte ich nur den Zeitpicker rendern – funkyeah

Verwandte Themen