Android 4.4.2에서 반응 네이티브 프로젝트를 만들려고하면이 오류 화면이 나타납니다.
그것을 해결할 방법을 찾지 못했습니다. 패키지를 다시 시작하고 장치를 다시 연결하고 반응 네이티브를 다시 설치하고 새 프로젝트를 시작했습니다. 6.0.0 및 이후 버전에서는 제대로 작동합니다.
Android 4.4.2에서 반응 네이티브 프로젝트를 만들려고하면이 오류 화면이 나타납니다.
그것을 해결할 방법을 찾지 못했습니다. 패키지를 다시 시작하고 장치를 다시 연결하고 반응 네이티브를 다시 설치하고 새 프로젝트를 시작했습니다. 6.0.0 및 이후 버전에서는 제대로 작동합니다.
답변:
가능한 해결책은 먼저 응용 프로그램을 번들로 묶지 않고 다음 단계를 수행 한 다음 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/"
},
또는 말한 것처럼 컬에 해당하지만 대부분의 경우 위의 내용이 더 강력합니다.
나는이 문제를 만났다. 내가 한 것은 내 장치에서 앱을 강제 종료 한 다음 다른 콘솔을 열고 실행했습니다.
react-native start
그런 다음 장치에서 앱을 다시 열었고 다시 작동하기 시작했습니다.
편집 : USB를 통해 안드로이드 장치를 사용하고 플러그를 뽑거나 컴퓨터가 잠자기 상태 인 경우 먼저 실행해야 할 수도 있습니다
adb reverse tcp:8081 tcp:8081
react-native run-android
. react-native start
내가 할 때 나를 위해 사용 이 필요하지 않았습니다react-native run-ios
adb reverse tcp:8081 tcp:8081
그 자체로는 충분했습니다. 많은 감사합니다!
이 오류가 발생했습니다. 내가 고 쳤던 것은 다음과 같습니다.을 선택 Dismiss
하고 개발자 메뉴로 갔다가을 Dev Settings
선택 Debug server host & port for device
하고 컴퓨터 IP 주소와 포트를 추가했습니다 : 192.168.0.xx:8xxx
IP 주소가 할당 된 개발자 컴퓨터가 Wi-Fi 네트워크에있는 모든 것을 사용하십시오. 포트는 일반적으로:8081
내가 이것을 한 후에는 모든 것이 잘 진행되었습니다. 당신이 dev에 메뉴에있는 동안 또한, 선택 기억 Enable Live Reload
과 Debug JS Remotely
는 많이 훨씬 디버깅하는 동안 쉽게 당신의 인생을 만든다.
ifconfig
, 다음 inet addr : xxx.xxx.xxx.xxx를 찾으십시오. 여기서 xxx *는 개발자 컴퓨터 ip입니다.
이것은 나를 위해 일한 것입니다 (내가 찾은 다른 모든 솔루션을 시도한 후에 ...) :
adb reverse tcp:8081 tcp:8081
안으로 달려\Android\sdk\platform-tools
react-native run-android
이 명령을 실행하려는 시도를하고 Windows 환경 변수에 따라 달라집니다 path
포함하도록 platform-tools
경로를.
물리적 장치를 사용하여 React Native를 처음 시작했을 때도 이것을 얻었습니다. 이 경우 시작하기 전에 몇 가지 추가 작업을 수행해야합니다. React Native의 'Dev Settings'에 개발 머신에 대한 정보를 입력해야합니다.
오류가 표시되면 장치를 흔들어주십시오 . 대화 상자가 나타나고 마지막 옵션은 'Dev Settings'입니다. '디버그 서버 핫 및 장치 용 포트'를 선택하고 로컬 IP 및 사용 된 포트 (일반적으로 8081)를 입력하십시오.
https://facebook.github.io/react-native/docs/running-on-device-android.html 의 마지막 단락을 참조하십시오
해결 방법이 없으면 다음을 시도하십시오.
내 <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
앱을 실행 하기 시작했습니다.
더 디버깅하고 실제로 실패한 것을 업데이트합니다.
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
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 다시로드를 선택하십시오.
이 문제는 "무작위로"발생했으며 내 시나리오에서 무엇이 잘못되었는지 깨달았습니다.
React-native-cli 2.0.1로 업데이트 한 후 근본 원인을 파고 찾는 데 도움이되는 메시지 출력이 로그에 표시되었습니다.
JS 서버가 인식되지 않아 빌드를 계속합니다 ...
일부 링크를 조사한 결과이 링크를 찾았습니다.
나는 Windows에 있기 때문에 netstat를 실행하고 VLC 플레이어가 포트 8081에서 실행되고 있음을 발견했습니다. 따라서 제 경우에는 반응 네이티브 서버보다 vlc 서버를 시작하면 작동하지 않습니다.
이전 버전의 react-native-cli에서 동일한 로그 메시지가 출력되지 않아 자동으로 실패합니다.
TL, DR : 패키지 관리자와 동일한 포트에서 실행중인 것이 있는지 확인하십시오 (기본적으로 8081).
내 문제는 AndroidManifest.xml
파일을 살펴 보고 줄을 제거했다는 것입니다.
<uses-permission android:name="android.permission.INTERNET" />
내 앱에는 인터넷이 필요하지 않기 때문입니다. 그러나 반응 네이티브 디버깅 응용 프로그램은 인터넷에 액세스해야합니다 (패키지에 액세스하려면) Whoops. :)
실행할 때 다음 오류가 있는지 확인하십시오 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)를 지적한 후에 문제가 해결되었습니다.
나를 위해 사이드 싱크를 활성화하고 활성화했습니다. 그것을 닫으면 즉시 문제가 해결되었습니다. PC와 장치 간의이 통신 또는 다른 통신을 종료하는 것이 좋습니다.
내가 사용하고있는 포트를 열어야했습니다 (기본적으로 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에서 개발자 서버로 이동하면됩니다. 응답하지 않으면 필요한 것일 수 있습니다. 응답이 없으면 도움이되지 않습니다.
내 길은 :
react-native start
그 후 장치를 사용하여 다음을 사용하십시오.
click to Reload.
콘솔 반응 네이티브에서 js 번들 데이터를 가져옵니다.
나는 같은 문제가 있었다. 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
그리고 그것은 잘 작동해야합니다. 적어도 그것은 나를 위해 일했습니다.
나에게 문제는 'adb'가 인식되지 않았다는 것입니다. 이 답변을 확인 하십시오 .
이 문제를 해결하려면 C : \ Users \ USERNAME \ AppData \ Local \ Android \ sdk \ platform-tools를 환경 변수에 추가하십시오.
우리 대부분은 네이티브 프로젝트 # 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 번들을 로컬로 설치하려고 시도합니다. (성공)
위 / 아래의 제안을 많이 시도했지만 궁극적으로 내가 겪었던 문제는 워치 맨과 관련된 권한이었습니다.이 문제는 이전에 homebrew를 사용하여 설치되었습니다. 에뮬레이터를 사용하는 동안 터미널 메시지를보고 에뮬레이터에서이 'CatchedBridge를 가져올 수 없음'메시지와 함께 경비원과 관련하여 'Permission denied'오류가 발생하면 다음을 수행하십시오.
/Users/<username>/Library/LaunchAgents
디렉토리로 이동 하여 사용자가 읽고 쓸 수 있도록 권한 설정을 변경하십시오. 이것은 실제로 com.github.facebook.watchman.plist
파일 이 있는지 여부에 관계없이입니다 .
react-native run-android
? 이 경우 오류가 발생합니다. 디버그 모드에서는 패키지 서버에 연결되어 있기 때문에 JS 번들 afaik이 필요하지 않기 때문에 이상합니다.