안드로이드 빌드 후 크래시. java.lang.RuntimeException: Unable to load script. Make sure you're either running a Metro server (index android bundle) 리액트 네이티브 안드로이드 문제 해결
안드로이드 index.android.bundle 문제
안드로이드에서 빌드해서 릴리즈 버전을 내부 테스트 버전으로 올렸는데 다음과 같은 에러가 났다.
java.lang.RuntimeException: Unable to load script. Make sure you're either running a Metro server (run 'react-native start') or that your bundle 'index.android.bundle' is packaged correctly for release.
이게 도대체 뭔소리인지 하다가 찾아보니 빌드에 index.android.bundle이 포함되지 않아 생기는 문제였다. 다음과 같이 해결할 수 있다.
android/app/src/main/assets 폴더가 없으면 생성해 준다.
android 폴더에서 ./gradlew clean 실행
index 파일을 생성해 준다.
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 파일 생성으로 해결된다. (이걸 몰라서 하나씩 version behind 되었었다...)
안드로이드 Duplicate resources
빌드 할 때 리소스가 있는데 다시 생성하려고 할 때 생기는 문제이다. 보통 drawable과 raw폴더가 중복되어 생기는 문제가 많은것 같다. (./gradlew clean 도 안먹혔다.) 다음과 같이 해결했다.
rm -rf ./android/app/src/main/res/drawable-\*
윈도우라서 해당 커맨드가 적용되지는 않아 해당 폴더에서 draw- 로 시작되는 폴더를 지워줬다.
rm -rf ./android/app/src/main/res/raw
휴 요즘 오랜만에 다시 시작했는데 빌드가 잘 안된다 ㅠㅠ
역시 개발은 세팅이 반인가...