Programming

Windows의 자산 index.android.bundle에서 스크립트를로드 할 수 없습니다

procodes 2020. 3. 6. 07:54
반응형

Windows의 자산 index.android.bundle에서 스크립트를로드 할 수 없습니다


내 장치 (Android 4.2.2)에서 처음으로 React Native 프로젝트를 처음 실행하려고합니다.

그리고 나는 얻는다 :

자산 index.android.bundle에서 스크립트를로드 할 수 없습니다

내가 사용한 명령 :

  1. cd (project directory)
  2. react-native start
  3. react-native run-android

React Native 튜토리얼 을 따르는 동안 동일한 문제가 발생했습니다 (Linux에서 개발하고 Android를 대상으로 함).

문제 는 다음 단계에서 문제를 해결하는 데 도움 되었습니다 .

  1. (프로젝트 디렉토리에서) mkdir android/app/src/main/assets
  2. 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. 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 의이 답변 을 바탕으로

  1. 지역 IP 찾기
  2. 앱을 열고 Android 기기를 흔들어
  3. 개발 설정 및> 디버그 서버로 이동 ...
  4. IP와 포트를 붙여 넣으십시오. XXXX : 8088 "(여기서 X는 로컬 IP 임)

Mac 사용자의 경우 : 네트워크 환경 설정을 열고 여기에서 로컬 IP를 얻습니다.


Windows를 사용하는 경우 다음 방법으로 명령을 실행하거나 "항목 파일 index.android.js를 찾을 수 없습니다"라는 오류가 표시되는 경우

  1. mkdir android\app\src\main\assets
  2. 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. 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

  1. 존재하는 경우 두 파일 즉 index.android.bundle, 삭제 하고index.android.bundle.meta
  2. 폴더 애셋이 존재하지 않는 경우 애셋 디렉토리를 생성하십시오.

루트 프로젝트 디렉토리에서

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

    1. 이제 실행 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. 같은 오류가 발생했습니다. 그래서 나는 내 경우에 이것을 해결하기 위해 다음 단계를 수행합니다.

  1. 먼저 sudo chown user-name-of-pc /dev/kvm내 경우를 실행하십시오 .
  2. Android 전화에서 디버깅하는 동안을 선택하십시오 Use USB to Transfer photos (PTP).

  3. assetsproject-name / android / app / src / main에 폴더 생성

  4. 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

  1. 디렉토리 ./studio.sh에서 명령 실행하십시오 android-studio/bin. Android Studio가 열립니다.

  2. 명령을 실행하십시오 react-native run-android.

여기에 이미지 설명을 입력하십시오


react-native run-android명령을 실행할 때 추적의 두 번째 줄이

JS server not recognized, continuing with build...

앱의 패키지를 시작할 수 없으며 몇 가지 추가 단계없이 앱을로드하지 못합니다. 추적 끝은 여전히 ​​성공을보고합니다.

BUILD SUCCESSFUL

문제는 아마도 일부 포트 충돌 일 것입니다 (내 경우에는 완전히 잊어 버린 기본 IIS 사이트였습니다). 문제의 또 다른 징후는 http://localhost:8081/debugger-uiChrome에서 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

패키저 콘솔 (다른 터미널에 있음)을 프롬프트하고 성공적으로 빌드합니다.


이 문제는 장치 / 에뮬레이터의 셀룰러 데이터가 꺼져 있기 때문에 발생할 수도 있습니다. 확인하십시오.

참고 URL : https://stackoverflow.com/questions/44446523/unable-to-load-script-from-assets-index-android-bundle-on-windows

반응형