앱 시작시 "BatchchedBridge를 가져올 수 없습니다. 번들이 올바르게 패키지되어 있는지 확인하십시오"오류


167

Android 4.4.2에서 반응 네이티브 프로젝트를 만들려고하면이 오류 화면이 나타납니다.

상기 오류

그것을 해결할 방법을 찾지 못했습니다. 패키지를 다시 시작하고 장치를 다시 연결하고 반응 네이티브를 다시 설치하고 새 프로젝트를 시작했습니다. 6.0.0 및 이후 버전에서는 제대로 작동합니다.


1
실행 후이 오류가 발생 했습니까 react-native run-android? 이 경우 오류가 발생합니다. 디버그 모드에서는 패키지 서버에 연결되어 있기 때문에 JS 번들 afaik이 필요하지 않기 때문에 이상합니다.
Ryan H.

나는 여기 같은 문제에 대한 답변을 게시했습니다 : stackoverflow.com/a/45110063/706798
Anton

동일한 오류 메시지가 표시되지만 iOS의 경우입니다. 누구에게 조언이 있습니까? 'react-native run-ios'를 실행하려고 시도했지만 XCode가 외부 드라이브에 있기 때문에 작동하지 않습니다.
ryanwebjackson

답변:


145

가능한 해결책은 먼저 응용 프로그램을 번들로 묶지 않고 다음 단계를 수행 한 다음 app-debug.apk를 장치에 배포하는 것입니다.

$ cd myproject  
$ react-native start > /dev/null 2>&1 &  
$ curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"

(폴더 assets가 존재하지 않으면 작성하십시오)

그런 다음 프로젝트 루트에서 실행하십시오.

$> (cd android/ && ./gradlew assembleDebug)

생성 된 APK를 위치에서 장치에 설치하십시오. android/app/build/outputs/apk/app-debug.apk

문제가 해결되면 알려주세요.

편집하다 :

패키지를 자동화하는 스크립트로 package.json에 간단히 넣을 수 있습니다. 다음 버전의 반응 네이티브 릴리스에서 수정 될 것이며 최종 APK를 조립하기 전에 실행될 것이라고 생각합니다. 따라서 필요하지 않습니다. 게다가)

넣어 :

"scripts": {
    "build": "(cd android/ && ./gradlew assembleDebug)",
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "bundle-android": "react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --sourcemap-output android/app/src/main/assets/index.android.map --assets-dest android/app/src/main/res/"
  },

또는 말한 것처럼 컬에 해당하지만 대부분의 경우 위의 내용이 더 강력합니다.


4
네 작동합니다 !!! 방금 뭐 했어? 왜 컬? 또한 이것을 자동화 할 수 있습니까?
Zygro

내 앱은 React 기본 번들을 연결하지 않기 때문에 대단히 감사합니다.
GeekHades

3
이것은 해킹처럼 보입니다. JavaScript를 단일 파일로 패키징하는 경우 개발 중에 앱을 실행하는 동안 라이브 리로드 기능을 사용할 수 없습니까?
Liron Yahdav 5

2
이것은 개발 용이 아니라 실제 APK 패키징을위한 것입니다
tbo

아무것도 나에게 여전히 오류가 일어날 없습니다 : - com.facebook.react.devsupport.JSException가 : BatchedBridge를 가져올 수 없습니다, 확인 번들이 제대로 포장되어 있는지 확인
네쉬 R 라지 푸트 족을

110

나는이 문제를 만났다. 내가 한 것은 내 장치에서 앱을 강제 종료 한 다음 다른 콘솔을 열고 실행했습니다.

react-native start

그런 다음 장치에서 앱을 다시 열었고 다시 작동하기 시작했습니다.

편집 : USB를 통해 안드로이드 장치를 사용하고 플러그를 뽑거나 컴퓨터가 잠자기 상태 인 경우 먼저 실행해야 할 수도 있습니다

adb reverse tcp:8081 tcp:8081

5
이것은 사용할 때 내 문제를 해결했습니다 react-native run-android. react-native start내가 할 때 나를 위해 사용 이 필요하지 않았습니다react-native run-ios
Dylan Pierce

2
이것은 효과가 있지만 왜 이런 일이 발생합니까? 이 문제가 해결 될까요? 항상 2 개의 터미널을 열어야하고 장치에서 실행하기 전에 먼저 '시작'을 수행해야합니까?
Marko

그것은 나를 위해 작동합니다! 해결책을 찾기 위해 몇 시간을 보냈습니다
dtjmsy

adb reverse tcp:8081 tcp:8081그 자체로는 충분했습니다. 많은 감사합니다!
다리우스

/ adb install
Faris

27

이 오류가 발생했습니다. 내가 고 쳤던 것은 다음과 같습니다.을 선택 Dismiss하고 개발자 메뉴로 갔다가을 Dev Settings선택 Debug server host & port for device하고 컴퓨터 IP 주소와 포트를 추가했습니다 : 192.168.0.xx:8xxxIP 주소가 할당 된 개발자 컴퓨터가 Wi-Fi 네트워크에있는 모든 것을 사용하십시오. 포트는 일반적으로:8081

내가 이것을 한 후에는 모든 것이 잘 진행되었습니다. 당신이 dev에 메뉴에있는 동안 또한, 선택 기억 Enable Live ReloadDebug JS Remotely는 많이 훨씬 디버깅하는 동안 쉽게 당신의 인생을 만든다.


공장! 우분투 사용자의 경우 : run ifconfig, 다음 inet addr : xxx.xxx.xxx.xxx를 찾으십시오. 여기서 xxx *는 개발자 컴퓨터 ip입니다.
henggana

이것은 API 레벨 19 / Kitkat 4.4에서 나를 위해 일했습니다. stackoverflow.com/questions/31525431/… , facebook.github.io/react-native/docs/…
Michael Ribbons

감사합니다! USB 케이블 (WiFi ADB와 같은 도구 사용)없이 디버깅 할 때만이 구성을 수행해야합니다.
Fidan Hakaj

4
@cube가 개발자 기기를 물리적으로 흔들어 위에서 언급 한 개발자 메뉴를 만들 수 있다는 점에 유의해야합니다. 이상하게 보일지 모르지만 그것이 일어날 것입니다. 그런 다음 나머지 지시 사항을 따르십시오. 이것은 나를 위해 그것을 고쳤다.
flyingace

22

이것은 나를 위해 일한 것입니다 (내가 찾은 다른 모든 솔루션을 시도한 후에 ...) :

adb reverse tcp:8081 tcp:8081안으로 달려\Android\sdk\platform-tools


1
platform-tools에서 b를 수행 할 필요가 없습니다
goldylucks

1
그 발견 react-native run-android이 명령을 실행하려는 시도를하고 Windows 환경 변수에 따라 달라집니다 path포함하도록 platform-tools경로를.
straya

1
감사합니다. PATH는 C : \ Users \ USERNAME \ AppData \ Local \ Android \ sdk \ platform-tools입니다
chazefate

아니요, Windows 10 및 Android 에뮬레이터에서 작동하지 않음
픽셀

16

물리적 장치를 사용하여 React Native를 처음 시작했을 때도 이것을 얻었습니다. 이 경우 시작하기 전에 몇 가지 추가 작업을 수행해야합니다. React Native의 'Dev Settings'에 개발 머신에 대한 정보를 입력해야합니다.

오류가 표시되면 장치를 흔들어주십시오 . 대화 상자가 나타나고 마지막 옵션은 'Dev Settings'입니다. '디버그 서버 핫 및 장치 용 포트'를 선택하고 로컬 IP 및 사용 된 포트 (일반적으로 8081)를 입력하십시오.

https://facebook.github.io/react-native/docs/running-on-device-android.html 의 마지막 단락을 참조하십시오


이것은 말 그대로 반복입니다. 위에서 말한 내용 (8 월)
큐브

3
장치를 흔들어야한다는 것을 몰랐습니다. 첫째, 나는 그것을 의견으로 게시 할 것이지만, 그렇게 할 충분한 포인트가 없습니다. 나는 당신의 게시물을 찬성했다.
Richh94

가장 간단하고 깨끗한 솔루션. 감사!
callOfCode

7

해결 방법이 없으면 다음을 시도하십시오.

<root>/android/app/build/intermediates/assets/debug폴더가 비어 있고 실행 cd android && ./gradlew assembleDebug하여 필요한 파일을 생성하지 않는 것으로 나타났습니다.이 파일은 나중에 반응 네이티브 앱의 javascript 스레드에서 사용됩니다.

디버그 빌드 명령이 이상적으로 생성 해야하는 다음 명령을 수동으로 실행했습니다.

node node_modules/react-native/local-cli/cli.js bundle --platform android --dev true --reset-cache --entry-file index.android.js --bundle-output /<path to dir>/android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest /<path to dir>/android/app/build/intermediates/res/merged/debug

이 명령을 실행 한 후이 디렉토리에서 두 개의 번들 파일을 발견했습니다. <root>/android/app/build/intermediates/assets/debug

그런 다음 다시 cd android && ./gradlew installDebug앱을 실행 하기 시작했습니다.

더 디버깅하고 실제로 실패한 것을 업데이트합니다.


진행중인 작업을 명확히하기 위해 반응 네이티브를 기존 프로젝트에 통합 할 때 번들 출력 경로가 자동으로 설정되지 않으므로 직접 설정해야합니다. 따라서 번들 출력 경로 = / path / to / assets?
robsstackoverflow

당신은 최고의 btw입니다.
robsstackoverflow 14시 48 분

7

A의 별도의 터미널의 장치를 컴퓨터에 연결하고 다음 명령을 실행 :

react-native start 
cd user/Library/Android/sdk/platform-tools/
./adb reverse tcp:8081 tcp:8081

응용 프로그램 터미널 :

react-native run-android 
install apk on your device from this location android/app/build/outputs/apk/app-debug.apk

1
아마도 명령을 실행 해야하는 디렉토리 등에서 응답의 개별 단계가 무엇을 의미하는지에 대한 세부 정보를 포함하도록 답변을 확장 할 수 있습니까? 귀하의 답변이 훨씬 도움이 될 것이라고 생각합니다.
niels

이것이 정답입니다. 이렇게하면 변경 될 때마다 번들을 다시 패키지 할 필요없이 반응 기본 서버에 연결하여 빠르게 반복 할 수 있습니다.
Joshua Pinter

6

너무 늦었지만 이것은 실제로 저에게 효과적입니다.

  1. react-native run-android.
  2. react-native start.

첫 번째 명령은 apk안드로이드 용으로 빌드 되어 연결되어 있으면 장치에 배포합니다. 앱을 열면 오류가있는 빨간색 화면이 표시됩니다. 그런 다음 packager를 실행하고 앱 번들을 빌드하는 두 번째 명령을 실행하십시오.


5

터미널에서이 명령을 시도한 후 다시로드하십시오. 그것은 나를 위해 일했다

adb 역방향 TCP : 8081 TCP : 8081



5
  1. genymotion을 다시 시작
  2. 운영 react-native run-android
  3. 문제가 해결되었습니다

진짜? restart the genymotion? Ty vole.
Michal

"오 웹 사이트가 작동하지 않습니까? 서버를 다시 시작하십시오"라고 말하는 것과 같습니다.
Michal

4

장치 Z3 Compact D5803-6.0.1에서 동일한 예외가 발생했습니다.

.buckconfig 파일을 열고 행을 변경했습니다.

target = Google Inc.:Google APIs:23

target = Google Inc.:Google APIs:24

SDK Manager에서 Android 6.X의 API 레벨은 24입니다.


3

나를 위해, 그것의 때문에이 adb에 없었다 PATH. 그것은 /Users/man/Library/Android/sdk/platform-tools나를 위해 위치하고 있습니다 , 그것은 당신을 위해 어딘가에 있을지도 모르지만 어쨌든 그것을 찾아 내 길에 추가하여 도움이되는지 확인하십시오.


3

Android <5.0을 사용하고 있으므로 기본 adb reverse방법을 사용할 수 없지만 Facebook은 Wi-Fi를 통해 개발 서버에 연결하기위한 공식 문서를 추가 했으며 ,이 버전은 해당 버전을 지원합니다. MacOS에 대한 지침을 인용하지만 Linux 및 Windows에 대한 지침도 있습니다.

방법 2 : Wi-Fi를 통해 연결

Wi-Fi를 통해 개발 서버에 연결할 수도 있습니다. 먼저 USB 케이블을 사용하여 기기에 앱을 설치해야하지만 일단 완료되면 다음 지침에 따라 무선으로 디버깅 할 수 있습니다. 계속 진행하려면 개발 시스템의 현재 IP 주소가 필요합니다.

시스템 환경 설정 → 네트워크에서 IP 주소를 찾을 수 있습니다.

랩톱과 휴대 전화가 동일한 Wi-Fi 네트워크에 있는지 확인하십시오. 기기에서 React Native 앱을 엽니 다. 오류가있는 빨간색 화면이 표시됩니다. 괜찮습니다. 다음 단계에서이를 해결합니다. 인앱 개발자 메뉴를 엽니 다. 장치의 개발 설정 → 서버 호스트 디버그로 이동하십시오. 컴퓨터의 IP 주소와 로컬 개발자 서버의 포트를 입력하십시오 (예 : 10.0.1.1:8081). 개발자 메뉴로 돌아가서 JS 다시로드를 선택하십시오.


3

이 문제는 "무작위로"발생했으며 내 시나리오에서 무엇이 잘못되었는지 깨달았습니다.

React-native-cli 2.0.1로 업데이트 한 후 근본 원인을 파고 찾는 데 도움이되는 메시지 출력이 로그에 표시되었습니다.

JS 서버가 인식되지 않아 빌드를 계속합니다 ...

일부 링크를 조사한 결과이 링크를 찾았습니다.

JS 서버를 인식 할 수 없습니다

나는 Windows에 있기 때문에 netstat를 실행하고 VLC 플레이어가 포트 8081에서 실행되고 있음을 발견했습니다. 따라서 제 경우에는 반응 네이티브 서버보다 vlc 서버를 시작하면 작동하지 않습니다.

이전 버전의 react-native-cli에서 동일한 로그 메시지가 출력되지 않아 자동으로 실패합니다.

TL, DR : 패키지 관리자와 동일한 포트에서 실행중인 것이 있는지 확인하십시오 (기본적으로 8081).


2

내 문제는 AndroidManifest.xml파일을 살펴 보고 줄을 제거했다는 것입니다.

<uses-permission android:name="android.permission.INTERNET" />

내 앱에는 인터넷이 필요하지 않기 때문입니다. 그러나 반응 네이티브 디버깅 응용 프로그램은 인터넷에 액세스해야합니다 (패키지에 액세스하려면) Whoops. :)


1
당신은 내 하루를 구했다. :)
Christophe Cadilhac


2

실행할 때 다음 오류가 있는지 확인하십시오 react-native run-android . adb server version (XX) doesn't match this client (XX); killing...

이 경우 확인 /usr/local/opt/android-sdk/platform-tools/adb하고/usr/local/bin/adb 동일하게 지적adb

필자의 경우 하나는 /Users/sd/Library/Android/sdk/platform-tools/adb(Android SDK)를 가리키고 다른 하나는/usr/local/Caskroom/android-platform-tools/26.0.2/platform-tools/adb (Homebrew)를

둘 다 /Users/sd/Library/Android/sdk/platform-tools/adb(Android SDK)를 지적한 후에 문제가 해결되었습니다.


1

이 오류도 너무 혼란스러워했습니다. 모든 답변이 작동하지 않습니다. 경로 에 adb 를 추가 한 직후 .


1

나를 위해 사이드 싱크를 활성화하고 활성화했습니다. 그것을 닫으면 즉시 문제가 해결되었습니다. PC와 장치 간의이 통신 또는 다른 통신을 종료하는 것이 좋습니다.


1

내가 사용하고있는 포트를 열어야했습니다 (기본적으로 8081). Linux에서는 다음을 수행 할 수 있습니다.

sudo iptables -A INPUT -p tcp --dport 8081 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 8081 -m conntrack --ctstate ESTABLISHED -j ACCEPT

실제로이 작업을 수행해야하는지 테스트 할 수 있습니다. Android 기기의 Chrome에서 개발자 서버로 이동하면됩니다. 응답하지 않으면 필요한 것일 수 있습니다. 응답이 없으면 도움이되지 않습니다.


1

내 길은 :

react-native start

그 후 장치를 사용하여 다음을 사용하십시오.

click to Reload.

콘솔 반응 네이티브에서 js 번들 데이터를 가져옵니다.


터미널이 시작되지 않았기 때문에 이것이 내 문제였습니다. 감사 !
Nicolas Leucci

1

나는 같은 문제가 있었다. create-react-native-app AwesomeProject 를 통해 반응 네이티브 프로젝트를 만들 때 전화의 Expo 앱에서 잘 작동했습니다. 그 후 프로젝트 개발을 위해 빠른 시작 프로젝트를 사용하고 싶었고 동일한 오류가 발생했습니다.

몇 가지 조사를 한 후 react-native init AwesomeProject (react native docs의 모든 설정)로 새 프로젝트를 시작하는 것이 좋습니다 .이 명령을 실행하십시오.

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/

번들로 문제를 해결해야합니다 (--dev false는 경고를 표시하지 않습니다)

가상 / 실제 장치에서 앱을 실행하려면 다음을 수행하십시오.

react-native run-android

그리고 그것은 잘 작동해야합니다. 적어도 그것은 나를 위해 일했습니다.


1

나에게 문제는 'adb'가 인식되지 않았다는 것입니다. 답변을 확인 하십시오 .

이 문제를 해결하려면 C : \ Users \ USERNAME \ AppData \ Local \ Android \ sdk \ platform-tools를 환경 변수에 추가하십시오.


이것은 의견에 지나지 않습니다. 그러나 링크 된 답변의 마지막 줄을 여기에 붙여 넣으면 유효한 답변이됩니다. 그렇지 않으면이 답변이 제거 될 가능성이 있습니다.
Joshi Amit

1

우리 대부분은 네이티브 프로젝트 # 1에 반응하기 시작할 때 처음 으로이 문제에 직면합니다.

몇 가지 간단한 단계로 내 문제를 해결했습니다.

명령을 사용하여 샘플 프로젝트를 만들었습니다.

react-native init ReactProject1

해결책

해결 방법은 다음 과 같은 방법으로 local-cli\runAndroid\adb.js를 찾는 데 도움 이 adb.exe됩니다 local-cli\runAndroid\runAndroid.js.

projectname 아래에서 replace 문을 찾으십시오 (주어진 것이 무엇이든)\node_modules\react-native\local-cli\runAndroid

바꾸다:

const devicesResult = child_process.execSync('adb devices');

으로:

const devicesResult = child_process.execSync( (process.env.ANDROID_HOME ? process.env.ANDROID_HOME + '/platform-tools/' : '') + 'adb devices');

위의 교체를 수행 한 후 cmd에서 react-native run-android를 실행하면 apk가 번들로 제공되고 처음에는 장치에 js 번들을 로컬로 설치하려고 시도합니다. (성공)


0

위 / 아래의 제안을 많이 시도했지만 궁극적으로 내가 겪었던 문제는 워치 맨과 관련된 권한이었습니다.이 문제는 이전에 homebrew를 사용하여 설치되었습니다. 에뮬레이터를 사용하는 동안 터미널 메시지를보고 에뮬레이터에서이 'CatchedBridge를 가져올 수 없음'메시지와 함께 경비원과 관련하여 'Permission denied'오류가 발생하면 다음을 수행하십시오.

/Users/<username>/Library/LaunchAgents디렉토리로 이동 하여 사용자가 읽고 쓸 수 있도록 권한 설정을 변경하십시오. 이것은 실제로 com.github.facebook.watchman.plist파일 이 있는지 여부에 관계없이입니다 .


0

나는 또한 추가해야한다는 것을 알았습니다.

반응 네이티브 업그레이드

응용 프로그램이 올바르게 실행되도록합니다.


0

나는 같은 문제를 겪었지만 내 자신의 어리석은 실수였습니다 ...

에서 안드로이드 스튜디오 , 나는 시작되었다 installDebug/installRelease에서 Gradle을 스크립트 app인텔리 대신 root인텔리을.


0

가장 쉬운 방법!

  • 서버를 중지하고 프로젝트 빌드를 종료하십시오.
  • 'Node.js'터미널을여십시오.
    • 'react-native'프로젝트가있는 폴더로 이동하십시오.
    • 'react-native start'를 입력하십시오-반응 기본 서버를 수동으로 시작하십시오.
  • 코드 편집기 터미널로 이동하여 'react-native run-android를 입력하십시오.

잘가요!


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.