2016-07-27 87 views
9

跨平台react-native包具有原生android代码,原生iOS代码和JavaScript代码,将它们连接到javascript世界。反应原生包的原生部分可以独立运行和开发吗?

大概在处理这样一个包的本地部分时,您可以将它们导入到它们各自的IDE(android-studio和Xcode)中,并在IDE中进行UI开发。

当我将react-native软件包作为一个整体来看,或者将本机部分导入到它们各自的IDE中时,本机部分似乎不是独立运行的......至少不是作为独立的android或ios应用程序。

我的问题是你如何使用本地IDE来导入/构建/运行/调试react-native包的本地部分?你通常会仍然需要反应本地服务器和休息javscript桥接代码运行?

我正在试图修改本机部分的具体包是react-native-datetime。我的希望是能够将android部分导入到android-studio中,并找出如何运行和修改其中一个拾取器。

回答

2

如果您创建一个静态的js文件包供您的应用程序使用,那么您将能够运行该应用程序而无需保持js服务器的运行。然后,您应该可以使用您的编辑器/ IDE使用项目目录下的android文件夹处理本机代码(对于Android)。

要为Android创建脱机包:

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/

这应该创建静态包index.android.bundle为你的JavaScript代码下android/app/src/main/assets/

更简单的方法是做

curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle" 

从构建目录。

4

React Native项目的根文件夹中有两个其他目录:androidios,它们分别具有Android(您可以像Android Studio一样用Android Studio打开它)和XCode iOS项目。

我会说,反应包装商需要打开,所以应用程序可以获取JS文件。我只是尝试关闭它,并单独在XCode上运行应用程序,并在打开终端窗口之前打开包装程序。

我的建议是:创建一个空项目,导入react-native-datetime包,在主屏幕上使用它,并使用Android Studio或XCode本地播放它,如果这是一个选项。

+0

为什么要创建一个空的项目?不应该在日期时间包内的android和ios文件夹已经是Android Studio和XCode项目了吗?...如果我导入这个特定的包,它似乎并没有建立,因为没有声明的反应 - 本地依赖(不知道如果这是一个包应该怎么样?)...最后,如果我将它作为一个依赖项添加并且能够构建它,它似乎不是一个可运行的应用程序(无论是我还是不知道如何运行一块UI代码没有嵌入到应用程序中) – funkyeah

+1

@funkyeah,您可以链接来自'node_modules'目录的本机代码。所以你可以从那里修改代码然后重新编译。如果您正在寻找预览组件的简单方法,请查看[react-native-storybook](https:// github。com/kadirahq/react-native-storybook) –

+0

我正在寻找只运行本地部分,因此在我看来node_modules不适用于......在我提到的示例datetime包中,我只想呈现timepicker – funkyeah