react-native run-android
안드로이드 시뮬레이터에 메시지를 남기면 명령이 종료됩니다. 메시지는 다음과 같습니다.
스크립트를로드 할 수 없습니다. Metro 서버를 실행 중이거나 번들 'index.android.bundle'이 릴리스 용으로 올바르게 패키지되어 있는지 확인하십시오.
내가 뭘 잘못하고 있죠?
react-native run-android
안드로이드 시뮬레이터에 메시지를 남기면 명령이 종료됩니다. 메시지는 다음과 같습니다.
스크립트를로드 할 수 없습니다. Metro 서버를 실행 중이거나 번들 'index.android.bundle'이 릴리스 용으로 올바르게 패키지되어 있는지 확인하십시오.
내가 뭘 잘못하고 있죠?
답변:
아직 번 들러를 시작하지 않았습니다. 전에 npm start
또는 react-native start
프로젝트의 루트 디렉토리에서 실행하십시오 react-native run-android
.
이 단계는 실제로 나를 도와줍니다.
1 단계 : android / app / src / main / assets에 디렉토리 생성
리눅스 명령 :mkdir android/app/src/main/assets
2 단계 : 이름 바꾸기 index.android.js
(루트 디렉토리)가에 index.js
( 어쩌면이 index.js
이름을 바꿀 필요가없는 경우에 파일 ) 다음 명령을 실행합니다 :
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
3 단계 :
APK 작성 :react-native run-android
최신 버전의 index.js를 사용하십시오.
즐겨 :)
index.js
루트 디렉토리에 파일 이있을 수 있습니다.이 경우 이름을 바꿀 필요가 없습니다
나를 위해이 오류는 반응 네이티브의 업그레이드로 인해 발생했습니다
Android 9.0 (API 레벨 28)부터 일반 텍스트 지원이 기본적으로 사용되지 않습니다.
업그레이드 차이를 확인하면 디버그 매니페스트를 만들어야합니다
android/app/src/debug/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
</manifest>
자세한 내용은 https://stackoverflow.com/a/50834600/1713216을 참조하십시오.
android:usesCleartextTraffic="true"
하고 기본 설정 에서 AndroidManifest.xml
작동하는지 지정할 수 있습니까?
먼저 4 단계와 5 단계를 수행 한 다음 프로젝트를 실행할 수 있습니다. 4 단계와 5 단계의 결과를 얻지 못하면 다음 단계를 수행하십시오.
1- 노드 버전을 다운 그레이드하십시오 (현재 버전은 12.13.1
)
choco uninstall nodejs
choco install nodejs --version 12.8
2-C:\Users\your user name\AppData\Roaming\npm
사용자 변수 대신 시스템 변수 에 npm 모듈 ( ) 의 경로 추가
3- 명령을 사용하여 전역으로 반응을 설치하십시오.
npm install -g react-native-cli
4- 프로젝트 디렉토리의 루트로 이동하여 다음 명령을 실행하십시오.
react-native start
5- 프로젝트 루트에서 다른 터미널을 열고 다음 명령을 실행하십시오.
react-native run-android
편집하다 :
Genymotion을 사용하고 있습니까? 그렇다면 다음 단계를 수행하십시오.
위의 단계 후에 다음과 같은 오류가 발생합니까?
error Failed to launch emulator. Reason: No emulators found as an output of `emulator -list-avds`.
genymotion을 열고 다음으로 이동하십시오.
genymotion menu -> Settings -> ADB -> 그런 다음 선택하십시오 use custom android sdk tools(sdk 위치를 찾으려면 찾아보기를 클릭하십시오)
마지막으로 프로젝트를 다시 실행하십시오.
다음을 시도 할 수 있습니다.
AndroidManifest.xml에이 줄을 추가하십시오.
<application
[...]
android:usesCleartextTraffic="true"
/>
[...]
</application>
나도 비슷한 문제가 발생했습니다.
분명히 Mcafee는 8081 포트를 차단합니다. 이것을 알아낼 시간을 나에게 가져 갔다.
달리기를 시도하십시오.
react-native run-android --port=1234
에뮬레이터에 오류가있는 앱이 표시되면 개발자 설정 ( Ctrl+ M)으로 이동하십시오.
"장치의 디버그 서버 호스트 및 포트"를 "localhost : 1234"로 변경하십시오.
앱을 닫고 앱 드로어에서 시작하십시오.
모든 것이 올바르게 구성된 경우 다음을 시도하십시오.
adb 역방향 TCP : 8081 TCP : 8081
왜? "RN 패키저가 실행 중일 때 브라우저에 액세스 가능한 127.0.0.1:8081의 활성 웹 서버가 있습니다.이 서버에서 응용 프로그램의 JS 번들이 변경 될 때 제공되고 새로 고쳐집니다. 리버스 프록시 없이는 휴대 전화에서 해당 주소에 연결할 수 없습니다. "
Swingline0에 대한 모든 크레딧
내 작업 공간 에서이 문제를 해결하려고 시도한 후 해결책을 찾았습니다.
이 오류는 NPM과 노드 버전의 일부 조합을 사용하는 Metro에 문제가 있기 때문입니다.
두 가지 대안이 있습니다.
대안 2 : 이 파일로 이동하여 \node_modules\metro-config\src\defaults\blacklist.js
다음 코드를 변경하십시오.
var sharedBlacklist = [
/node_modules[/\\]react[/\\]dist[/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
그리고 이것으로 변경하십시오 :
var sharedBlacklist = [
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
제발 참고 당신은 실행할 경우
npm install
또는이yarn install
다시 코드를 변경해야합니다.
이것은 여러 가지 방법으로 시도한 후에 저에게 효과적이었습니다.
파일에서 node_modules\metro-config\src\defaults\blacklist.js
교체 :
var sharedBlacklist = [
/node_modules[/\\]react[/\\]dist[/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
로 :
var sharedBlacklist = [
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
도움이 되었기를 바랍니다.
metro-config
/ 대신 경로에 \를 사용 했습니다 .이 대답은 수정을 제안합니다. 하지 마십시오 . npm 패키지를 수정하면 전체 팀이 시스템, CI, 준비, 프로덕션 및 metro-config에서 업데이트를 릴리스 할 때마다이 작업을 수행해야합니다. 더 나은 접근 방식은 GitHub에서 metro-config를 포크하고 수정을 커밋하고 PR을 푸시하여 제출하여 모든 사람을 위해 수정하는 것입니다.
Android 9.0 (API 레벨 28)부터 일반 텍스트 지원이 기본적으로 사용되지 않습니다.
정상적인 실행 명령을 올바르게 수행하면이 문제를 해결하기 위해해야 할 일입니다.
그리고 이와 같이 안드로이드 매니페스트 파일을 수정하십시오.
<application
android:name=".MainApplication"
android:icon="@mipmap/ic_launcher"
android:usesCleartextTraffic="true" // add this line with TRUE Value.
android:theme="@style/AppTheme">
이것에 대한 나의 해결책은 다음과 같습니다.
메트로 서버 시작
$ react-native start
안드로이드 시작
$ react-native run-android
"포트 8081이 이미 사용 중"이라는 오류가 표시되면 해당 프로세스를 종료하고 다시 실행할 수 있습니다
$ react-native start
기본 문제 해결 페이지 반응을 참조하십시오 .
리눅스에 있다면 앱 루트 디렉토리에서 터미널을 열고 실행하십시오.
npm start
그런 다음 다른 터미널 창을 열고 다음을 실행하십시오.
react-native run-android
여기서 다루지 않은 명백한 가능성을 추가하고 싶습니다. 내가 사용하고 @ 반응 - 기본 - 사회 / netinfo 주로 네트워크 상태 네트워크 변화를 감지합니다. 네트워크 꺼짐 상태를 테스트하려면 에뮬레이터의 WIFI 스위치를 꺼야합니다. 또한 에뮬레이터와 디버그 환경 사이의 브리지를 효과적으로 차단합니다. 컴퓨터가 없어서 다시 돌아 왔을 때 즉시 잊어 버렸기 때문에 테스트 후 WIFI를 다시 활성화하지 않았습니다.
이것은 다른 누군가에게도 해당 될 수 있으며 다른 과감한 조치를 취하기 전에 점검 할 가치가 있습니다.
나는 똑같은 문제를 겪고 있었고, 문제는 adb 가 올바른 환경 경로에 있지 않다는 것입니다. 오류는 메트로 포트를 말하고 있습니다.
참고 : 또는 컴퓨터의 adb.exe 위치에 따라
안드로이드 빌드를 다시 실행
$ react-native run-android
또는
$ react-native start
$ react-native run-android
나는 또한이 문제에 직면했다. 이 단계를 해결했습니다.
환경 Veritable 에서 android sdk 경로를 확인하십시오 .
추가
ANDROID_HOME = C:\Users\user_name\AppData\Local\Android\Sdk
로 시스템 변수
와
C:\Users\user_name\AppData\Local\Android\Sdk\platform-tools
의 경로 시스템 변수
아래 코드 세그먼트와 같이 sharedBlacklist 를 교체하십시오 .
var sharedBlacklist = [
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
/website\/node_modules\/.*/,
/heapCapture\/bundle\.js/,
/.*\/__tests__\/.*/
];
에 node_modules / 지하철 설정 / SRC / 기본 / blacklist.js
그런 다음 npx react-native run-android --port 9001을 실행하십시오.
행복한 코딩 ..!
이 오류의 가능성은 잘못된 경로입니다. 한 번 확인하십시오.
export ANDROID_HOME=/Users/microrentindia/Library/Android/sdk/
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
React Native 튜토리얼 을 따르는 동안 동일한 문제가 발생했습니다. (Linux에서 개발하고 Android를 대상으로 함).
이 문제 는 다음 단계에서 문제를 해결하는 데 도움 이 되었습니다 . 아래 순서대로 다음 명령을 실행하십시오.
mkdir android/app/src/main/assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android
당신은 그들을 배치하여 위의 단계를 자동화 할 수있는 scripts
부분 package.json
이 같은 :
"android-linux": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android"
그런 다음 npm run android-linux
매번 명령 줄에서 실행할 수 있습니다 .
기본적으로 "Metro Server"라는 작은 JavaScript 서버는 포트 8081에서 실행됩니다.
이 서버를 시작하려면이 포트를 사용 가능하게해야합니다. 그래서,
포트를 해제하는 방법?
http://tenbull.blogspot.com/2019/05/how-to-kill-process-currently-using.html
Windows의 localhost에서 현재 포트를 사용하는 프로세스를 종료하는 방법은 무엇입니까?
가장 중요한 것은 facebook @ https://facebook.github.io/react-native/docs/getting-started에서 제안한대로 노드 버전을 8.x에서 10.x (최신)로 업그레이드했습니다.
나 에게이 문제는 react-native 업그레이드로 시작되었습니다. 64 비트 지원을 추가하려면 업그레이드가 필요했습니다.
Before:
--------
Environment:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
Xcode: Not Found
Android Studio: 3.4 AI-183.6156.11.34.5692245
Packages: (wanted => installed)
react: 16.0.0-alpha.12 => 16.0.0-alpha.12
react-native: ~0.55.2 => 0.55.4
react-native-cli: 2.0.1
After:
------
info
React Native Environment Info:
Binaries:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
SDKs:
Android SDK:
API Levels: 23, 26, 27, 28
Build Tools: 27.0.3, 28.0.3
System Images: android-28 | Google APIs Intel x86 Atom
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: /undefined - /usr/bin/xcodebuild
npmPackages:
react: ^16.8.6 => 16.9.0
react-native: 0.59.9 => 0.59.9
npmGlobalPackages:
create-react-native-app: 2.0.2
react-native-cli: 2.0.1
또한 업그레이드를 위해 한 가지 중요한 변경 사항은 ../android/build/build.gradle입니다.
android {
...
defaultConfig {
...
targetSdkVersion 28
...
}
...
}
goole play console에 build (.apk)를 업로드하려고 할 때 경고에 따라 targetSdkVersion을 27에서 28로 변경해야했습니다. 나는 이것이 위의 오류의 근본 원인이라는 것을 거의 알지 못했습니다. @tom과 @tinmarfrutos의 즉각적인 답변은 절대적으로 의미가 있습니다.
android / app / src / debug / AndroidManifest.xml에 android : usesCleartextTraffic = "true"를 추가하여 문제를 해결했습니다.
중요-사용자 환경에 많은 가상 장치가있을 수 있습니다. AVD를 변경하는 경우 설정을 다시 반복하십시오.
위의 오류가 발생하면 먼저 포트 8081에서 실행중인 것을 확인해야합니다
그것을 찾는 가장 빠른 방법은 터미널에서 다음 명령을 사용하는 것입니다
netstat -aon | findstr 8081
그것이 당신에게 무언가를 보여 주면 그것은 포트가 차단되었음을 의미합니다. 가능하면 해당 포트를 차단 해제하십시오.
그렇지 않으면 포트를 변경해야합니다. 그 과정은 Naveen Kumar의 위의 의견에서 이미 언급되었습니다.
react-native run-android --port=9001
9001도 사용하지 마십시오 :)
위의 솔루션에서 언급 한 모든 것을 시도한 경우 다음 단계를 수행하십시오.
반응 네이티브 번들-플랫폼 안드로이드 --dev false-엔트리 파일 index.js-번들 출력 android / app / src / main / assets / index.android.bundle --assets-dest android / app / src / main / res
Linux OS에서 실행중인 경우 npm 원격 서버가 실행되지 않는 경우가 있습니다. 다른 터미널 (프로젝트 디렉토리 포함)을 열고 sudo react-native run-android를 수행하기 전에 sudo npm start 또는 sudo react-native start 명령을 실행하십시오.