Android에서 JS 번들을로드하지 못했습니다. 서버를 시작하거나

Nexus5 (Android 5.1.1)에서 AwesomeProject를 실행하려고합니다.

프로젝트를 빌드하고 장치에 설치할 수 있습니다. 그러나 그것을 실행하면 빨간색 화면이 나타납니다.

JS 번들을 다운로드 할 수 없습니다. 개발 서버를 시작하거나 장치를 연결하는 것을 잊었습니까?

네이티브 iOS에 반응하여 jsbundle을 오프라인으로로드하도록 선택할 수 있습니다. Android에서 동일한 작업을 수행하려면 어떻게해야합니까? (또는 적어도 서버 주소는 어디에서 구성 할 수 있습니까?)

최신 정보

로컬 서버로 실행하려면 react-native 프로젝트 루트 디렉토리에서 다음 명령을 실행하십시오.

  1. react-native start > /dev/null 2>&1 &
  2. adb reverse tcp:8081 tcp:8081

자세한 내용은 dsissitka의 답변을 참조하십시오.

서버없이 실행하려면 다음을 실행하여 jsfile을 apk에 묶습니다.

  1. 아래에 자산 폴더를 만듭니다 android/app/src/main
  2. curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"

자세한 내용은 kzzzf의 답변을 참조하십시오.



답변

서버를 실행하면서 react-native start앱의 자산 디렉토리에 번들을 다운로드 하면서 JS 파일을 APK에 묶으려면 :

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

다음 릴리스 (0.12) react-native bundle에서는 예상대로 Android 프로젝트에서 작동하도록 명령을 수정 합니다.


답변

다음은 Ubuntu 14.04에서 나를 위해 일한 것입니다.

cd (App Dir)
react-native start > /dev/null 2>&1 &
adb reverse tcp:8081 tcp:8081

업데이트 : 참조

업데이트 2 : @scgough React Native (RN)가 워크 스테이션에서 실행되는 dev 서버에서 JavaScript를 가져올 수 없기 때문에이 오류가 발생했습니다. 왜 이런 일이 일어나는지 알 수 있습니다.

https://github.com/facebook/react-native/blob/42eb5464fd8a65ed84b799de5d4dc225349449be/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java#L116-L137

RN 앱이 Genymotion 또는 에뮬레이터를 사용하고 있음을 감지하면 GENYMOTION_LOCALHOST (10.0.3.2) 또는 EMULATOR_LOCALHOST (10.0.2.2)에서 JavaScript를 가져 오려고 시도합니다. 그렇지 않으면 장치를 사용한다고 가정하고 DEVICE_LOCALHOST (localhost)에서 JavaScript를 가져 오려고 시도합니다. 문제는 dev 서버가 장치가 아닌 워크 스테이션의 로컬 호스트에서 실행되므로 작동하려면 다음 중 하나를 수행해야한다는 것입니다.


답변

좋아, 나는 여기에 문제가 무엇인지 알아 냈다고 생각합니다. watchman내가 실행중인 버전과 관련 이있었습니다.

새 쉘에서 brew update
다음을 실행하십시오 brew unlink watchman
.brew install watchman

이제 react-native start프로젝트 폴더에서 실행할 수 있습니다

이 쉘을 열어두고 새 쉘 창을 만들고 react-native run-android프로젝트 폴더에서 실행하십시오 . 세상은 모두 옳습니다.

추신. 나는 원래 워치 맨 3.2 버전에 있었다. 이것은 나를 3.7로 업그레이드했습니다.

pps. 나는 이것에 익숙하지 않아 솔루션으로의 가장 빠른 길은 아니지만 그것은 나를 위해 일했다.

* 장치에서 실행 / 디버깅에 대한 추가 정보 *

에뮬레이터가 아닌 Android 기기에 앱을 배포 하면 오류 메시지와 함께 빨간색 화면이 나타납니다Unable to load JS Bundle . 장치의 디버그 서버를 이름 또는 IP 주소 중 하나 인 반응하는 컴퓨터로 설정해야합니다.

  1. 장치 Menu버튼을 누릅니다
  2. 고르다 Dev Settings
  3. 선택 Debug server host for device또는Change Bundle Location
  4. 머신의 IP 및 Reload JS와 반응 포트를 입력하십시오. 192.168.1.10:8081

추가 정보 : http://facebook.github.io/react-native/docs/running-on-device-android.html


답변

프로젝트 디렉토리에서 다음을 실행하십시오.

react-native start

다음을 출력합니다.

$ react-native start
 ┌────────────────────────────────────────────────────────────────────────────┐
   Running packager on port 8081.                                            
                                                                             
   Keep this packager running while developing on any JS projects. Feel      
   free to close this tab and run your own packager instance if you          
   prefer.                                                                   
                                                                             
   https://github.com/facebook/react-native                                  │ 
                                                                             
 └────────────────────────────────────────────────────────────────────────────┘
Looking for JS files in
   /home/user/AwesomeProject


React packager ready.

[11:30:10 PM] <START> Building Dependency Graph
[11:30:10 PM] <START> Crawling File System
[11:30:16 PM] <END>   Crawling File System (5869ms)
[11:30:16 PM] <START> Building in-memory fs for JavaScript
[11:30:17 PM] <END>   Building in-memory fs for JavaScript (852ms)
[11:30:17 PM] <START> Building in-memory fs for Assets
[11:30:17 PM] <END>   Building in-memory fs for Assets (838ms)
[11:30:17 PM] <START> Building Haste Map
[11:30:18 PM] <START> Building (deprecated) Asset Map
[11:30:18 PM] <END>   Building (deprecated) Asset Map (220ms)
[11:30:18 PM] <END>   Building Haste Map (759ms)
[11:30:18 PM] <END>   Building Dependency Graph (8319ms)


답변

Ubuntu 14.04와 함께 작동하는 쉬운 솔루션입니다.

react-native run-android

에뮬레이터 (이미 시작됨)가 반환됩니다. JS 번들을 다운로드 할 수 없습니다. JS 서버를 다시 시작하십시오.

react-native start

에뮬레이터에서 JS를 다시로드하십시오. 그것은 나를 위해 일했다. 그것이 도움이되기를 바랍니다.


답변

안드로이드의 앱에서 메뉴 (Genymotion의 Command + M)-> 개발자 설정-> 장치의 서버 호스트 및 포트 디버그를 열었습니다.

값을 localhost : 8081로 설정하십시오.

그것은 나를 위해 일했다.


답변

여기에 답변을 조합하여 시도한 후에 이것이 저에게 효과적입니다.

Genymotion을 에뮬레이터로 사용하고 있습니다.

1 Genymotion 에뮬레이터를 시작하십시오.

2 터미널에서

cd AwesomeProject
react-native run-android # it loads in genymotion and fails with bundle error
react-native start > /dev/null 2>&1 & # from dsissitka
adb reverse tcp:8081 tcp:8081 # from dsissitka

3 에뮬레이터에서 다시로드하십시오.

로드!

이제 개발을 시작할 수 있습니다.