2016-07-27 80 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