Windows의 자산 index.android.bundle에서 스크립트를로드 할 수 없습니다
내 장치 (Android 4.2.2)에서 처음으로 React Native 프로젝트를 처음 실행하려고합니다.
그리고 나는 얻는다 :
자산 index.android.bundle에서 스크립트를로드 할 수 없습니다
내가 사용한 명령 :
cd (project directory)
react-native start
react-native run-android
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
매번 명령 줄에서 실행할 수 있습니다 .
실제 장치에서 응용 프로그램을 실행 중이고이 오류가 발생하는 경우
unable to load script from assets index.android.bundle
다음 명령을 실행하십시오 :
adb reverse tcp:8081 tcp:8081
그것은 나를 위해 일했다 ...
나는이 문제를 알아 내려고 몇 시간을 보냈다. 내 문제는 Windows에만 국한된 것이 아니라 Android에만 국한된 것입니다.
개발 서버에 액세스하는 것은 로컬 및 에뮬레이터의 브라우저에서 작동했습니다. 작동하지 않는 유일한 것은 앱에서 개발 서버에 액세스하는 것입니다.
Android 9.0 (API 레벨 28)부터 일반 텍스트 지원이 기본적으로 사용되지 않습니다.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
자세한 내용은 https://stackoverflow.com/a/50834600/1713216을 참조하십시오.
npm 버전 4.3.0 react-native-cli 버전 2.01 react-native 버전 0.49.5 사용
프로젝트 디렉토리에서
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
파일 이름이 index.android.js 에서 index.js로 변경되었습니다.
실제 안드로이드 장치와 동일한 문제에 직면했습니다.
솔루션 : Niltoid 의이 답변 을 바탕으로
- 지역 IP 찾기
- 앱을 열고 Android 기기를 흔들어
- 개발 설정 및> 디버그 서버로 이동 ...
- IP와 포트를 붙여 넣으십시오. XXXX : 8088 "(여기서 X는 로컬 IP 임)
Mac 사용자의 경우 : 네트워크 환경 설정을 열고 여기에서 로컬 IP를 얻습니다.
Windows를 사용하는 경우 다음 방법으로 명령을 실행하거나 "항목 파일 index.android.js를 찾을 수 없습니다"라는 오류가 표시되는 경우
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
공식 페이지 에 언급 된 지침에 따라이 문제를 해결할 수 있습니다 . JS 번들이 개발 시스템에 있고 실제 장치 내의 앱이 해당 위치를 인식하지 못하기 때문에이 문제는 실제 장치 에서 발생합니다 .
맥에서 같은 문제가 있었는데, 2 일을 보낸 후에 마침내 얻을 수있었습니다.
이후 Emulator cellular data was turned off
로 나는을 받고 있었다 unable to load script from assets index.android.bundle make sure your bundle is running
.
Emulator cellular data is turned on
이 패키지 서버를 수행하여 번들을 제공 할 수 있는지 확인하십시오 index.android.js
. 개발 단계에있는 사람에게 도움이되기를 바랍니다.
나는 여러 달 동안이 같은 문제를 겪었습니다. 처음에 @Jerry의 솔루션을 사용했지만 문제가 완전히 해결되지 않았기 때문에 잘못된 해결책이었습니다. 대신, 모든 빌드를 프로덕션 빌드로 가져 왔으므로 앱에서 약간의 변경을 가하면 전체 앱을 다시 빌드해야합니다.
이것은 일시적인 솔루션이지만 더 이상 핫 리로딩 등과 같은 React Native의 놀라운 개발 도구를 사용할 수 없으므로 장기적으로 끔찍하게 작동합니다.
적절한 해결책은 다음과 같습니다.
당신의에서 MainApplication.java
파일, 다음을 대체 :
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
와
@Override
public boolean getUseDeveloperSupport() {
return true;
}
어떤 이유로 든 BuildConfig.DEBUG
항상 false를 반환하고 asset 디렉토리에 번들 파일이 생겼습니다.
이 값을 수동으로 true로 설정하면 앱에서 패키저를 사용하게됩니다. 프로덕션 환경에서는 작동하지 않으므로 false 또는 기본값으로 변경하십시오.
달리는 것도 잊지 마세요
$ adb reverse tcp:8081 tcp:8081
운영체제 : Windows
위의 두 가지 방법을 시도한 후이 문제를 해결하는 또 다른 방법
( C : \ users \ "user_name"\ appdata \ local \ sdk와 같은 기본 위치에 SDK를 설치 하지 않았기 때문에 )
" 'adb'는 내부 또는 외부 명령으로 인식되지 않습니다 ..."
그래서 이것은 내가 극복하는 방법입니다 :
예 : D : \ Android \ SDK에 SDK를 설치 했으므로
시스템 변수 2에 더 많은 경로를 추가 할 것입니다.
D:\Android\sdk\tools
D:\Android\sdk\platform-tools
(경로 시스템 변수를 편집하는 방법을 모르는 경우 https://android.stackexchange.com/questions/38321/what-do-i-type-in-path-variable-for-adb- server-to-start-from-cmd / 38324 )
그런 다음 cmd를 다시 실행하십시오. react-native run-android
그것은 나를 위해 일했다.
1 프로젝트 디렉토리로 이동하여이 폴더가 존재하는지 확인하십시오 android/app/src/main/assets
- 존재하는 경우 두 파일 즉
index.android.bundle
, 삭제 하고index.android.bundle.meta
- 폴더 애셋이 존재하지 않는 경우 애셋 디렉토리를 생성하십시오.
루트 프로젝트 디렉토리에서
cd android && ./gradlew clean
3. 마지막으로 루트 디렉토리로 이동하여 단일 항목 파일이 있는지 확인하십시오.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
index.android.js와 index.ios.js의 두 파일이 있다면 이것을 실행하십시오
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
- 이제 실행
react-native run-android
- 이제 실행
대한 IOS :
터미널에서 :
cd ios
다음을 사용하여 빌드 폴더를 제거하십시오. rm -r build
다시 뛰어: react-native run-ios
또는,에, 탐색을 찾기를 열 수 YOUR_PROJECT / IOS 및 삭제 빌드 폴더를 .
그런 다음 다시 실행하십시오. react-native run-ios
대한 ANDROID :
터미널에서 :
cd android/app
다음을 사용하여 빌드 폴더를 제거하십시오. rm -r build
다시 뛰어: react-native run-android
다른 방법으로는 찾기를 탐색 열 수 YOUR_PROJECT / 안드로이드 / 애플 리케이션 및 삭제 빌드 폴더를 .
그런 다음 다시 실행하십시오. react-native run-android
이 문제에 대해서는 다음을 실행하여 해결합니다.
react-native start
그때
adb reverse tcp:8081 tcp:8081
명령 행에서. 그런 다음 실행할 수 있습니다.
react-native run-android
그래서 나는 달리기에 시간을 낭비하지 않을 것이다.
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
매번.
실제 장치 및 서버 동기화를 위해 Metro Builder가 실행 중인지 확인하십시오.
먼저이 명령을 실행하여 메트로 빌더를 실행하십시오.
npm 시작
그런 다음 반응 네이티브에서 빌드를 시작할 수 있습니다
반응 네이티브 실행 안드로이드
이번에는 오류가 없어야합니다. 변경시 코드를 실시간으로 다시로드하려면. 기기를 흔들고 Live Reload 활성화를 누릅니다.
필자의 경우 MainApplication.java에서 아래 줄을 제거했습니다. (이전에 나에 의해 실수로 추가 된 것) :-
import com.facebook.react.BuildConfig;
그 프로젝트 청소 후 명령을 누르십시오
반응 네이티브 실행 안드로이드
경로 변수에 / path / to / sdk / platform-tools를 추가했는지 확인하십시오.
react-native run-android를 실행할 때 adb reverse tcp : <device-port> tcp : <local-port> 명령을 실행하여 장치의 요청을 컴퓨터에서 로컬로 실행중인 서버로 전달합니다. adb를 찾지 못하면 이와 같은 것을 보게 될 것입니다.
/bin/sh: 1: adb: not found
Starting the app (.../platform-tools/adb shell am start -n
com.first_app/com.first_app.MainActivity...
Starting: Intent { cmp=com.first_app/.MainActivity }
에뮬레이터에서 프로젝트를 실행할 때 제대로 작동하지만 실제 장치 에서이 오류가 발생하기 때문에이 문제에 직면했습니다 .SO 다음 해결책 으로이 문제를 해결합니다.
첫 번째 단계 : 먼저 열려있는 모든 cmd를 열고 SDK 관리자 Platform-tools 폴더로 이동하십시오 (예 : cd C : Development \ Android \ Sdk \ Platform-tools
두 번째 단계 :이 명령을 실행하십시오 : adb devices
이 명령 후에 propmt 명령에 나열된 장치를 확인하십시오.
세 번째 단계 : 이제이 adb reverse tcp를 실행하십시오 : 8081 tcp : 8081
이제 설정이 완료되었습니다
4 단계 : 프로젝트 디렉토리로 이동하여이 명령을 실행하십시오.
반응 네이티브 실행 안드로이드
예를 들어 프로젝트 애플리케이션 / 번들 ID의 이름을 바꾸거나 링크없이 외부 패키지를 추가 할 때와 같이 React Native 프로젝트 코드 기반의 링크되지 않은 자산으로 인해 발생할 수 있습니다.
간단히 프로젝트 루트 디렉토리에서 시도하십시오.
react-native link
react-native run-android
우분투
처음으로으로 새로운 앱을 만들었습니다 react-native init project-name
. 같은 오류가 발생했습니다. 그래서 나는 내 경우에 이것을 해결하기 위해 다음 단계를 수행합니다.
- 먼저
sudo chown user-name-of-pc /dev/kvm
내 경우를 실행하십시오 . Android 전화에서 디버깅하는 동안을 선택하십시오
Use USB to Transfer photos (PTP)
.assets
project-name / android / app / src / main에 폴더 생성index.js
프로젝트root
디렉토리에 사용 가능한지 확인한 다음 디렉토리 다음 콘솔에서 아래 명령을 실행하십시오cd project-name
.
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
또는 index.android.js의 경우
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
디렉토리
./studio.sh
에서 명령 을 실행하십시오android-studio/bin
. Android Studio가 열립니다.명령을 실행하십시오
react-native run-android
.
react-native run-android
명령을 실행할 때 추적의 두 번째 줄이
JS server not recognized, continuing with build...
앱의 패키지를 시작할 수 없으며 몇 가지 추가 단계없이 앱을로드하지 못합니다. 추적 끝은 여전히 성공을보고합니다.
BUILD SUCCESSFUL
문제는 아마도 일부 포트 충돌 일 것입니다 (내 경우에는 완전히 잊어 버린 기본 IIS 사이트였습니다). 문제의 또 다른 징후는 http://localhost:8081/debugger-ui
Chrome에서 URL 을 열지 못하는 것 입니다.
포트 충돌이 해결되면 추적이보고합니다
Starting JS server...
추가 노드 창이 열리고 ( node ...cli.js start
) 앱이 성공적으로로드 / 리로드됩니다.
그런 다음로 Chrome에서 디버그 콘솔을 열 수 있어야합니다 http://localhost:8081/debugger-ui
.
시뮬레이터에서 실행할 때도 동일한 문제가 발생했습니다. 정상적인 개발 워크 플로를 가질 수 있도록 빠른 해결 방법을 수행했습니다.
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
// return true here to load JS from the packager
// BuildConfig.DEBUG for me was set to false which meant it
// it was always trying to load the assets from assets folder.
return true;
}
@Override
protected String getJSMainModuleName() {
return "index";
}
};
프로덕션 빌드를 수행하려고 할 때 변경 사항을 되돌려 야 할 것입니다.
Mac 차단 포트 8081에서 McAfee와 문제가 발생하여 8082로 변경해야했습니다.
먼저 패키지 서버를 실행하십시오.
react-native start --port 8082
다른 터미널을 열고 평소와 같이 Android 앱을 시작하십시오.
react-native run-android
완료되면 adb 터널링하는 tcp 포트를 다시 작성하십시오.
adb reverse tcp:8081 tcp:8082
adb tcp 터널 목록을 참조하십시오.
adb reverse --list
이제 따뜻한 메시지가 나타납니다.
(reverse) tcp:8081 tcp:8082
앱으로 이동하여 다시로드하십시오!
추신 : 앱 개발 설정에서 아무것도 변경하지 마십시오. "localhost : 8082"를 추가 한 경우 제거하고 비워 두십시오.
편집 : 모든 McAfee 희생자에게 루트 액세스 권한이 있으면 더 쉬운 솔루션이 있습니다. 포트 8081에있는 McAfee 프로세스를 일시적으로 종료하고 포트를 변경할 필요가 없습니다.
sudo launchctl remove com.mcafee.agent.macmn
나는 당신이 원사를 설치 하지 않았다고 생각합니다 . 프로젝트를 작성하기 전에 설치해야합니다 (react-native init 명령).
자산 디렉토리를 만들 필요가 없습니다.
작동하지 않으면 회신하십시오.
편집 : 최신 버전의 반응 네이티브에서 수정했습니다. 당신이 (완전한 제거가 들어이 단지 제거 노드에서 완전한 자유를 원하는 경우 완전히 노드 제거 및 재설치 노드이 링크를 참조), 반응 - 기본 - CLI를 다음 새 프로젝트를 만듭니다.
에뮬레이터 장치에서 인터넷을 켜는 것을 잊지 마십시오.이 오류를 해결했습니다. 완벽하게 작동합니다 : VI NetInfo를 테스트하기 위해 인터넷을 끄기 때문에이 오류가 발생합니다 : D
이것은 일반적인 오류 메시지입니다. 반응 네이티브 응용 프로그램 개발 중에 발생할 수 있습니다. 이 튜토리얼에서는이 문제에 대한 솔루션을 제공 할 것입니다.
문제 설명 : Windows의 자산 index.android.bundle에서 스크립트를로드 할 수 없음 Windows의 자산 index.android.bundle에서 스크립트를로드 할 수 없음
위의 문제를 해결하려면 아래 단계를 따르십시오.
1 단계 : 프로젝트 디렉토리 내에 "자산"폴더 작성 이제 프로젝트 디렉토리 내에 "MobileApp \ android \ app \ src \ main"인 자산 폴더를 작성하십시오. 자산 폴더를 수동으로 만들 수 있습니다.
<또는>
명령을 사용하여 폴더를 만들 수도 있습니다. 명령 : mkdir android / app / src / main / assets
2 단계 : React 기본 응용 프로그램 실행 아래 명령을 실행하여 에뮬레이터 또는 실제 장치에서 반응 기본 응용 프로그램을 실행할 수 있습니다.
프로젝트 디렉토리로 전환하십시오. cd MobileApp
안드로이드 응용 프로그램 프로젝트를 묶는 데 도움이되는 아래 명령을 실행하십시오.
반응 네이티브 번들-플랫폼 안드로이드 --dev false-엔트리 파일 index.js-번들 출력 android / app / src / main / assets / index.android.bundle --assets-dest android / app / src / main / res
최종 단계를 실행하여 에뮬레이터 또는 물리적 장치에서 반응 네이티브 응용 프로그램을 실행하십시오. 반응 네이티브 실행 안드로이드
<또는>
또한 마지막 두 명령을 하나로 결합 할 수 있습니다.이 경우 명령을 한 번만 실행해야합니다.
반응 네이티브 번들-플랫폼 안드로이드 --dev false-엔트리 파일 index.js-번들 출력 android / app / src / main / assets / index.android.bundle --assets-dest android / app / src / main / res && 반응 네이티브 실행 안드로이드
<또는>
package.json의 스크립트 부분에 위 단계를 배치하여 위 단계를 자동화 할 수 있습니다.
"android-android": "반응 형 네이티브 번들 --platform android --dev false --entry-file index.js --bundle-output android / app / src / main / assets / index.android.bundle --assets -안드로이드 안드로이드 / 응용 프로그램 / SRC / 메인 / RES & 반응 네이티브 실행 안드로이드 "
모든 것이 올바르게 설정되면 곧 새로운 앱이 Android 에뮬레이터에서 실행되고있는 것을 볼 수 있습니다.
이것을 따라 나를 위해 일했습니다.
https://github.com/react-community/lottie-react-native/issues/269
프로젝트 디렉토리로 이동 하여이 폴더가 android / app / src / main / assets인지 확인하십시오 i) 존재하는 경우 두 파일을 삭제하십시오. viz index.android.bundle 및 index.android.bundle.meta ii) 폴더 자산이 존재하지 않으면 거기에 자산 디렉토리를 만드십시오.
루트 프로젝트 디렉토리에서 cd android && ./gradlew clean
마지막으로 루트 디렉토리로 돌아가서 index.js라는 단일 항목 파일이 있는지 확인하십시오. i) index.js 파일이 하나 뿐인 경우 react-native bundle 명령을 실행하십시오. --platform android --dev false- -entry-file index.js-번들 출력 android / app / src / main / assets / index.android.bundle --assets-dest android / app / src / main / res
ii) index.android.js와 index.ios.js라는 두 파일이있는 경우이 반응 네이티브 번들을 실행하십시오-플랫폼 안드로이드 --dev false-엔트리 파일 index.android.js-번들 출력 안드로이드 /app/src/main/assets/index.android.bundle --assets-dest android / app / src / main / res
이제 반응 네이티브 실행 안드로이드 실행
반응 네이티브를 0.49.5로 업데이트하면이 문제가 발생 하고이 주요 변경 사항과 사용 중단을 따랐을 때
사라졌다.
I am facing this issue, lot of search and I resolved that issue.
c:\ProjectFolder\ProjectName> 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
Than Run the react native :
c:\ProjectFolder\ProjectName>react-native run-android
For all of you guys who are developing from a create-react-native-app and ejected, and have this issue in development
, this is what worked for me just a little detail from the accepted answer
(in project directory) mkdir android/app/src/main/assets
here comes the part that changes cos you are in development get rid of the --dev: false
part:
react-native bundle --platform android --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
after that close all terminals, erase the build folder from android/app/ to make sure you start clean to build your app, open a new terminal, and
(in project directory) npm run android
패키저 콘솔 (다른 터미널에 있음)을 프롬프트하고 성공적으로 빌드합니다.
이 문제는 장치 / 에뮬레이터의 셀룰러 데이터가 꺼져 있기 때문에 발생할 수도 있습니다. 확인하십시오.
'Programming' 카테고리의 다른 글
sqlite3 / iPhone에서 열 이름 목록을 얻는 방법은 무엇입니까? (0) | 2020.03.06 |
---|---|
-lPods에 대한 라이브러리를 찾을 수 없습니다 (0) | 2020.03.06 |
무결성 및 crossorigin 속성은 무엇입니까? (0) | 2020.03.06 |
PreparedStatement IN 절 대안? (0) | 2020.03.06 |
Linux 커널에서 가능성이 높거나 가능성이 낮은 매크로는 어떻게 작동하며 그 이점은 무엇입니까? (0) | 2020.03.06 |